差分法によるアジアンオプションの価格計算

 Asian_FDM.c は差分法によりアジアンオプション(average strike option)の満たす偏微分方程式を
 解き,オプション価格を求めるCプログラムです。金田研究室の橋屋博章君,藤田勝己君が作成
 しました。

 アジアンオプションは,ペイオフが資産価格 St の時間平均 It = (1/t)∫0t Sudu に依存するオプ
 ションです。ペイオフが max(ST-IT, 0) の場合を average strike option または floating strike Asian
 option,ペイオフが max(IT-K, 0) の場合を average rate option または fixed strike Asian option
 と呼びます。アジアンオプションの価格 V は,一般に t,St,It の関数となります。そのため,オプ
 ション価格を決める偏微分方程式は独立変数が3個の方程式になりますが,average strike option
 の場合は,新しい独立変数 R,従属変数 H を

 (1)  Rt = (1/St)∫0t Su du
 (2)  V(S, R, t) = SH(R, t)

 と定義することにより,問題は独立変数が2個の次の方程式を解くことに帰着できます [1][2]。

 (3)  ∂H/∂t + (1/2)σ2R22H/∂R2 + (1-rR)∂H/∂R = 0

 このとき,t=T での終端条件は,ペイオフを R と H で書き直した式

 (4)  H(R, T) = S max(1-R/T, 0),

 境界条件は

 (5)  R = 0 のとき ∂H/∂t + ∂H/∂R = 0 (式(3)で R=0 と置くことにより出る条件)
 (6)  R → ∞ のとき H → 0

 となります。本プログラムではこの偏微分方程式を陽的差分法を使って解くことにより,オプション
 価格を計算します。

 H(R, t) が求まると,時刻 t,資産価格 St,資産価格の時間平均が It のときのオプション価格は

 (7)  V = StH(tIt/St, t)

 と計算できます。特に,t=0 では式(1)より Rt=0 なので,t=0 でのオプション価格は

 (8)  V = S0H(0, 0)

 により与えられます。

 本プログラムは次の関数から成っています。


 AsianCallPayoff

  変換後の変数による average strike コールオプションのペイオフ(4)式を計算する関数です。


 AsianExplicitFDM

  陽的差分法により偏微分方程式(3)を解き,average strike コールオプションの価格を求める関数
  です。入力として,安全資産の利子率 r,ボラティリティ sigma,満期までの時間 T,変換後の変数
  x の絶対値の最大値 xmax,x 方向の分割数 N,時間方向の分割数 M,風上差分を使うかどうか
  を制御する変数 iup(iup=1 のとき風上差分) を与えます。結果は,時刻 0 での関数 H(R, 0) が長
  さ N+1 の配列 Hに格納されます。

  方程式(3)は移流項(∂H/∂R の項)を持つ拡散方程式であり,この項の離散化に中心差分を使
  うと,R 方向の格子間隔によっては H[j] の計算式で H0[j-1],H0[j+1] (H0 は1ステップ前のH)の
  係数が負となり,計算の不安定性を引き起こすことがあります。一方,iup=1 として風上差分を使
  うと,H0[j-1],H0[j+1] の係数は格子間隔によらず正となるので,この不安定性を避けることがで
  きます。

  一方,安定性のためには,H[i] の計算式で H0[i] の係数も負とならないことが必要です。これは
  時間方向と空間方向の刻み幅に関する条件,すなわち N と M に関する条件となります。この関
  数では,与えられた空間方向の分割数 N に対し,M の満たすべき安定性の条件を計算して出力
  します。


 main

  関数 AsianExplicitFDM のためのテストプログラムです。計算した H(R, 0) の値を画面に表示する
  とともに,同じ内容をファイル Asian_FDM.txtにも出力します。


 計算結果

  陽的差分法により r=0.1,sigma=0.3,T=0.5 の average strike コールオプションに対する計算を行
  った例を図1に示します。横軸を R,縦軸を H(R, t)とし,t=0,0.25,0.5(満期) の3通りの時点で
  の値を表示しています。なお,t=0.25,t=0.5 の値を計算するには,AsianExplicitFDM における時
  間方向の(t=T から t=0 までの)ループを途中で打ち切って結果を出力しました。なお,計算では
  風上差分を使用し,xmax=1.0,N=100 としています。また,安定性の条件は M>830 であり,M は
  これを満たすように M=1000 としています。

  計算では H(0,0)=0.096243 であり,これから,たとえば初期資産価格が S0=100 の場合,オプショ
  ン価格は 9.6243 であることがわかります。


  
                図1 陽的差分法で計算した価格(N=100,M=1000)


  次に,同じ条件で N だけを 660 に変えて計算した結果を図2に示します。安定性の条件が破れ
  た
ため,解の振動と指数的増大が起こり,結果がめちゃめちゃになってしまっていることがわか
  ります。


  
                図2 陽的差分法で計算した価格(N=100,M=660)


 参考文献

  [1] P. Wilmott, S. Howison and J. Dewynne(伊藤幹夫,戸瀬信之訳): 「デリバティブの
    数学入門」, 共立出版株式会社,2002.

  [2] P. Wilmott, J. Dewynne and S. Howison: "Option Pricing --- Mathematical Models
    and Computation", Oxford Financial Press, Oxford, 1993.


2004年度応用数理工学特論のページに戻る
プログラムのページに戻る
Topに戻る