Changeset 17600
- Timestamp:
- 08/14/08 00:33:40 (5 months ago)
- Files:
-
- 1 modified
-
lang/python/option_tools/alpha.py (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/python/option_tools/alpha.py
r17588 r17600 5 5 import random,math 6 6 7 def effectiveWeight_Call(S0,C0,K,T, R,V1,V=None,mu=None,cacheNum=10000,newtonNum=10,seed=0):8 """対数 効用関数に基づいた、無リスク資産とコールオプションの対数最適成長比率を求めます。7 def effectiveWeight_Call(S0,C0,K,T,DT,R,V1=None,V=None,mu=None,cacheNum=10000,newtonNum=10,seed=0): 8 """対数最適戦略に基づいた、無リスク資産とコールオプションのポートフォリオにおける最適比率を求めます。 9 9 10 10 引数: … … 12 12 C0:現在のコール価格 13 13 K:権利行使価格 14 T:満期までの残り時間(ただし1期間後) 14 T:現在における、満期までの残り時間 15 DT:1期間の長さ 15 16 R:無リスク利率 16 17 V1:1期間における原資産のボラティリティ 18 (指定されない場合は原資産のボラティリティから推定します。) 17 19 V:原資産のボラティリティ 18 20 (指定されない場合はコール価格からインプライドボラティリティを算出します。) 19 21 mu:原資産の1期間後における予想成長率 20 (指定されない場合は 期待値が0となるような値に調整されます)22 (指定されない場合は原資産の変動の期待値が0となるような値に調整されます。) 21 23 cacheNum:キャッシュする量 22 24 newtonNum:ニュートン法を行なう回数 … … 29 31 cache = [] 30 32 random.seed(seed) 31 avg = -0.5*V1*V1 if not mu else mu #指定されなかったらマルチンゲールにする。 32 vol = BS_Call_IV(S0,K,T,R,C0,HV=0.2,maxNum=200) if not V else V #FIXME:1期間後のTが用いられている。 33 avg = -0.5*V1*V1 if not mu else mu 34 vol = BS_Call_IV(S0,K,T,R,C0,HV=0.2,maxNum=200) if not V else V 35 vol1 = vol*math.sqrt(DT) if not V1 else V1 33 36 34 37 for i in range(cacheNum): 35 38 #対数正規分布に基づいて未来の価格を算出 36 S = S0*random.lognormvariate(avg, V1)37 cnd = C0 / (BS_Call(S,K,T ,R,vol)-C0)39 S = S0*random.lognormvariate(avg, vol1) 40 cnd = C0 / (BS_Call(S,K,T-DT,R,vol)-C0) 38 41 cache.append(cnd) 39 42 … … 41 44 best_m = _m(best_alpha,cache) 42 45 return (best_alpha,best_m,math.exp(best_m)) 43 44 46 45 47 def _newtonsMethod(num,init_alpha,cache,i=1):
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)