Changeset 17566 for lang/python

Show
Ignore:
Timestamp:
08/13/08 13:20:21 (3 months ago)
Author:
rezoo
Message:

インプライドボラティリティを自動算出するオプションを追加。

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/python/option_tools/alpha.py

    r17527 r17566  
    22#-*- coding:utf-8 -*- 
    33 
    4 from black_scholes import BS_Call, BS_Put 
     4from black_scholes import BS_Call, BS_Put, BS_Call_IV, BS_Put_IV 
    55import random,math 
    66 
    7 def effectiveWeight_Call(S0,C0,K,T,R,V,V1,mu=None,cacheNum=10000,newtonNum=10,seed=0): 
     7def effectiveWeight_Call(S0,C0,K,T,R,V1,V=None,mu=None,cacheNum=10000,newtonNum=10,seed=0): 
    88        """対数効用関数に基づいた、無リスク資産とコールオプションの対数最適成長比率を求めます。 
    99         
     
    1414                T:満期までの残り時間(ただし1期間後) 
    1515                R:無リスク利率 
    16                 V:インプライドボラティリティ 
    17                 V1:1期間におけるインプライドボラティリティ 
     16                V1:1期間における原資産のボラティリティ 
     17                V:原資産のボラティリティ 
     18                        (指定されない場合はコール価格からインプライドボラティリティを算出します。) 
    1819                mu:原資産の1期間後における予想成長率 
    19                    (指定されない場合は期待値が0となるような値に調整されます) 
     20                        (指定されない場合は期待値が0となるような値に調整されます) 
    2021                cacheNum:キャッシュする量 
    2122                newtonNum:ニュートン法を行なう回数 
     
    2627        random.seed(seed) 
    2728        avg = -0.5*V1*V1 if not mu else mu #指定されなかったらマルチンゲールにする。 
     29        vol = BS_Call_IV(S0,K,T,R,C0,HV=0.2,maxNum=200) if not V else V #FIXME:1期間後のTが用いられている。 
    2830 
    2931        for i in range(cacheNum): 
    3032                #対数正規分布に基づいて未来の価格を算出 
    3133                S = S0*random.lognormvariate(avg, V1) 
    32                 cnd = C0 / (BS_Call(S,K,T,R,V)-C0) 
     34                cnd = C0 / (BS_Call(S,K,T,R,vol)-C0) 
    3335                cache.append(cnd) 
    3436