Fallstudie: Modell für Barrier Optionen

Nun ein Blick auf ein ernsteres Beispiel, das die Mächtigkeit der 
symbolischen Rechnungen auf dem Computer illustriert. Die Formeln erlauben 
Rabatte und basieren auf Rubenstein und Reiner (siehe "Breaking Down the 
Barriers", RISK, September 1991). Wir verwenden kontinuierlichen  Zinseszins 
in den Variablen.

In einem modernen symbolischen System sind viele der mathematischen 
Funktionen, die zur Definition der Grundlagen von Optionen notwendig sind, 
bereits enthalten.

Beispielsweise befreit Sie die vordefinierte hochgenaue Fehlerfunktion von 
der Definition  rationaler Näherungen für die 
kumulative Normalverteilung - wir definieren bloß numerisch und 
symbolisch:

Norm[x_] := (1/2) (Erf[(x/(Sqrt[2]))] + 1); 

    Norm[z_?NumberQ] := N[0.5 (Erf[(z/(Sqrt[2]))] + 1)];

Definitionen

Off[General::spell1];

λ[r_, q_, sd_] := (1/2) + ((r - q)/(sd^2))

x[p_, k_, sd_, r_, q_, t_] := 

      Log[(p/k)]/(sd (Sqrt[t])) + λ[r, q, sd] sd (Sqrt[t]);

xone[p_, h_, sd_, r_, q_, t_] := x[p, h, sd, r, q, t];

y[p_, k_, h_, sd_, r_, q_, t_] := 

      Log[((h^2)/(p k))]/(sd (Sqrt[t])) + λ[r, q, sd] sd (Sqrt[t]);

yone[p_, h_, sd_, r_, q_, t_] := x[h, p, sd, r, q, t];

a[r_, q_, sd_] := ((r - q)/(sd^2)) - (1/2); b[r_, q_, sd_] := 

      ((Sqrt[(((r - q - ((sd^2)/2)))^2) + 2 r (sd^2)])/(sd^2)); z[p_, h_, sd_, r_, q_, t_] := 

      Log[(h/p)]/(sd (Sqrt[t])) + b[r, q, sd] sd (Sqrt[t]);

intone[p_, k_, sd_, r_, q_, t_, ϕ_] := 

      ϕ p Exp[-q t] Norm[ϕ x[p, k, sd, r, q, t]] - 

        ϕ k Exp[-r t] 

          Norm[ϕ x[p, k, sd, r, q, t] - ϕ sd (Sqrt[t])]

inttwo[p_, k_, h_, sd_, r_, q_, t_, ϕ_] := 

      ϕ p Exp[-q t] Norm[ϕ xone[p, h, sd, r, q, t]] - 

        ϕ k Exp[-r t] 

          Norm[ϕ xone[p, h, sd, r, q, t] - ϕ sd (Sqrt[t])]

intthree[p_, k_, h_, sd_, r_, q_, t_, ϕ_, η_] := 

      ϕ p Exp[-q t] ((((h/p)))^(2 λ[r, q, sd])) 

          Norm[η y[p, k, h, sd, r, q, t]] - 

        ϕ k Exp[-r t] 

          ((((h/p)))^(2 λ[r, q, sd] - 2)) 

          Norm[η y[p, k, h, sd, r, q, t] - η sd (Sqrt[t])]

intfour[p_, k_, h_, sd_, r_, q_, t_, ϕ_, η_] := 

      ϕ p Exp[-q t] ((((h/p)))^(2 λ[r, q, sd])) 

          Norm[η yone[p, h, sd, r, q, t]] - 

        ϕ k Exp[-r t] 

          ((((h/p)))^(2 λ[r, q, sd] - 2)) 

          Norm[η yone[p, h, sd, r, q, t] - η sd (Sqrt[t])]

intfive[reb_, p_, h_, sd_, r_, q_, t_, η_] := 

      reb Exp[-r t] 

        (Norm[η xone[p, h, sd, r, q, t] - η sd (Sqrt[t])] - 

            ((((h/p)))^(2 λ[r, q, sd] - 2)) 

              Norm[η yone[p, h, sd, r, q, t] - η sd (Sqrt[t])])

intsix[reb_, p_, h_, sd_, r_, q_, t_, η_] := 

      reb (((((h/p)))^(a[r, q, sd] + b[r, q, sd])) 

              Norm[η z[p, h, sd, r, q, t]] + 

            ((((h/p)))^(a[r, q, sd] - b[r, q, sd])) 

              Norm[η z[p, h, sd, r, q, t] - 

                  2 η b[r, q, sd] sd (Sqrt[t])])

Up/Down und Out Puts

Die Ergebnisse sollen numerisch und grafisch mit dem Original Rubenstein und 
Reiner Paper verglichen werden. Zunächst definieren wir die 
Funktionen für die Sensitivität des Wertes und 
Preises. Beachten Sie hier, daß alle Ableitungen, welche zur Berechnung 
von delta, gamma, vega etc. benötigt werden, automatisch vom 
Computer berechnet werden.

\(UpAndOutPut[reb_, \ p_, \ k_, \ h_, \ sd_, \ r_, \ q_, \ t_]\  := 


      If[k\  > \ h, 


        inttwo[p, \ k, \ h, \ sd, \ r, \ q, \ t, \ \(-1\)]\  - 


          intfour[p, \ k, \ h, \ sd, \ r, \ q, \ t, \ \(-1\), \ \(-1\)]\  + 


          intsix[reb, \ p, \ h, \ sd, \ r, \ q, \ t, \ \(-1\)], 


        intone[p, \ k, \ sd, \ r, \ q, \ t, \ \(-1\)]\  - 


          intthree[p, \ k, \ h, \ sd, \ r, \ q, \ t, \ \(-1\), \ \(-1\)]\  + 

          
intsix[reb, \ p, \ h, \ sd, \ r, \ q, \ t, \ \(-1\)]]\)

\(\(UpAndOutPutDelta[reb_, \ p_, \ k_, \ h_, \ sd_, \ r_, \ q_, \ t_]\  = 

      
If[k\  > \ h, 


        Evaluate[

          D[inttwo[p, \ k, \ h, \ sd, \ r, \ q, \ t, \ \(-1\)]\  - 


              intfour[p, \ k, \ h, \ sd, \ r, \ q, \ t, \ \(-1\), \ \(-1\)]

                \  + 
intsix[reb, \ p, \ h, \ sd, \ r, \ q, \ t, \ \(-1\)], 

            \ p]], 
Evaluate[

          D[intone[p, \ k, \ sd, \ r, \ q, \ t, \ \(-1\)]\  - 


              intthree[p, \ k, \ h, \ sd, \ r, \ q, \ t, \ \(-1\), \ \(-1\)]

                \  + 
intsix[reb, \ p, \ h, \ sd, \ r, \ q, \ t, \ \(-1\)], 

            p]]]; \)\)

\(\(UpAndOutPutTheta[reb_, \ p_, \ k_, \ h_, \ sd_, \ r_, \ q_, \ t_]\  = 

      
If[k\  > \ h, 


        Evaluate[

          \(-D[inttwo[p, \ k, \ h, \ sd, \ r, \ q, \ t, \ \(-1\)]\  - 


                intfour[p, \ k, \ h, \ sd, \ r, \ q, \ t, \ \(-1\), \ \(-1\)]

                  \  + 
intsix[reb, \ p, \ h, \ sd, \ r, \ q, \ t, \ 

                  \(-1\)], \ t]\)], 


        Evaluate[

          \(-D[intone[p, \ k, \ sd, \ r, \ q, \ t, \ \(-1\)]\  - 


                intthree[p, \ k, \ h, \ sd, \ r, \ q, \ t, \ \(-1\), \ \(-1\)]

                  \  + 
intsix[reb, \ p, \ h, \ sd, \ r, \ q, \ t, \ 

                  \(-1\)], t]\)]]; \)\)

\(\(UpAndOutPutGamma[reb_, \ p_, \ k_, \ h_, \ sd_, \ r_, \ q_, \ t_]\  = 

      
If[k\  > \ h, 


        Evaluate[

          D[inttwo[p, \ k, \ h, \ sd, \ r, \ q, \ t, \ \(-1\)]\  - 


              intfour[p, \ k, \ h, \ sd, \ r, \ q, \ t, \ \(-1\), \ \(-1\)]

                \  + 
intsix[reb, \ p, \ h, \ sd, \ r, \ q, \ t, \ \(-1\)], 

            \ {p, 2}]], 


        Evaluate[

          D[intone[p, \ k, \ sd, \ r, \ q, \ t, \ \(-1\)]\  - 


              intthree[p, \ k, \ h, \ sd, \ r, \ q, \ t, \ \(-1\), \ \(-1\)]

                \  + 
intsix[reb, \ p, \ h, \ sd, \ r, \ q, \ t, \ \(-1\)], {

              p, 2}]]]; \)\)

\(\(UpAndOutPutVega[reb_, \ p_, \ k_, \ h_, \ sd_, \ r_, \ q_, \ t_]\  = 

      
If[k\  > \ h, 


        Evaluate[

          D[inttwo[p, \ k, \ h, \ sd, \ r, \ q, \ t, \ \(-1\)]\  - 


              intfour[p, \ k, \ h, \ sd, \ r, \ q, \ t, \ \(-1\), \ \(-1\)]

                \  + 
intsix[reb, \ p, \ h, \ sd, \ r, \ q, \ t, \ \(-1\)], 

            \ sd]], 


        Evaluate[

          D[intone[p, \ k, \ sd, \ r, \ q, \ t, \ \(-1\)]\  - 


              intthree[p, \ k, \ h, \ sd, \ r, \ q, \ t, \ \(-1\), \ \(-1\)]

                \  + 
intsix[reb, \ p, \ h, \ sd, \ r, \ q, \ t, \ \(-1\)], 

            sd]]]; \)\)

\(\(UpAndOutPutRho[reb_, \ p_, \ k_, \ h_, \ sd_, \ r_, \ q_, \ t_]\  = 


      If[k\  > \ h, 


        Evaluate[

          D[inttwo[p, \ k, \ h, \ sd, \ r, \ q, \ t, \ \(-1\)]\  - 


              intfour[p, \ k, \ h, \ sd, \ r, \ q, \ t, \ \(-1\), \ \(-1\)]

                \  + 
intsix[reb, \ p, \ h, \ sd, \ r, \ q, \ t, \ \(-1\)], 

            \ r]], 
Evaluate[

          D[intone[p, \ k, \ sd, \ r, \ q, \ t, \ \(-1\)]\  - 


              intthree[p, \ k, \ h, \ sd, \ r, \ q, \ t, \ \(-1\), \ \(-1\)]

                \  + 
intsix[reb, \ p, \ h, \ sd, \ r, \ q, \ t, \ \(-1\)], 

            r]]]; \)\)

Jetzt lassen wir den Computer arbeiten:

Ein wenig triviales delta:

UpAndOutPutDelta[reb,  p,  k,  h,  sd,  r,  q,  t]

K (Barrier) == H  (Strike)  und  q (Div. Yield)  > r (Risk free Rate)

In den folgenden Graphiken untersuchen wir die Struktur der Formel und der 
dazugehörenden Delta, Gamma, und Vega. 

Die erste Graphik zeigt die fast flache Struktur des Wertes als Oberfl
äche V(S,t). Am Barrier (50) ist der Wert 0. Strike ist ebenso 
50, die Volatilität ist 0.25 (25%), und der Zinseszins ist r 
=10%. Der Ertrag der Dividende ist 15%. Die Zeit läuft von 0 bis 
1 Jahr. Der Aktienkurs variiert von 30  bis 50 (Barrier).

Plot3D[

UpAndOutPut[0, S, 50, 50, 0.25,0.1, 0.15, t],

{S, 30, 50}, {t, 0.001, 1}, PlotRange -> All];

Diese Graphik zeigt Vega, symbolisch vom Computer berechnet. Es ist 
überall negativ.

Plot3D[

UpAndOutPutVega[0, S, 50, 50, 0.25,0.1, 0.15, t],

{S, 30, 50}, {t, 0.001, 1}, PlotRange -> All];

Da die Oberfläche des Wertes sehr flach ist, ist Delta nahe -1, 
wie diese Graphik zeigt.

Plot3D[

UpAndOutPutDelta[0, S, 50, 50, 0.25,0.1, 0.15, t],

{S, 30, 50}, {t, 0.001, 1}, PlotRange -> All];

Gamma ist sehr klein und NEGATIV, wie der letzte Plot illustriert.

Plot3D[

UpAndOutPutGamma[0, S, 50, 50, 0.25,0.1, 0.15, t],

{S, 30, 50}, {t, 0.001, 1}, PlotRange -> All];

Das Package enthält die Funktionen.