#blog2navi()

ランダムな数値の動きと、累積値

ランダムな分布(正規分布)に従う動きの累積値を調べて見た。たとえば、FXの結果を考えるのに役立つ。

正規分布に従う

たとえば、為替の動きが正規分布に従うとする。標準偏差が5%。一日の値動きが5%以内になる確率が約68%になると考える。

計算条件

累積値の計算

通貨の動き事態は、正規分布に従う(つまり、プラスにもマイナスにも振れるのに)、それを累積値に使うと、若干下ぶれる。

累積値と言っているものの結果は

元本一回目の取取引(違う割合で取引)二回目の取引(同じ割合でup)
1000万1050(5%up)1081(3%up)
1000万950(5%down978(3%up)

と言う感じになる。

通貨が、上がったり下がったりする環境で、ランダムに、取引を繰り返す。

もし1000万円を正規分布に従うFXに突っ込んだら。

もし100人の人が、1000万円を元手に、取引を1000回繰り返したら、元本(1000万)以上になる確率は、35%。元本割れになる確率は、64%。

1000万円の動きはこんな感じ

01.png

結果のヒストグラム

02.png

1000人のユーザーが、1000万円を元手に、100回取引をしたらどうなるかのヒストグラム。 最頻値が、800万円台になる。

計算プログラム

def calc(num,count):
    #resultnum=[num]
    y=num
    for i in range(count):
        k=nm(0,0.05)
        y=y+y*k #<-ここが肝。
        #resultnum.append(y)
    return y#resultnum

def main():
    trlist=[]
    for _ in range(1000):
        trlist.append(calc(1000,100))
    #k=sorted(trlist,key=lambda x:x[-1],reverse=True)
    d={}
    for c in trlist:
        dd=int(c/100)
        d.setdefault(dd,0)
        d[dd]+=1
    for (a,b) in sorted(d.items(),key=lambda x:x[0],reverse=True):
        t=a*100
        print '%d,%d' % (t,b)
    #cout=csv.writer(open('r_date.csv','wb'))
    #cout.writerows(k)

if __name__=='__main__':main()

filerepert_test.py

Category: [python 統計] - 20:40:47

&blog2trackback();

#blog2navi()


添付ファイル: file01.png 2612件 [詳細] filerepert_test.py 3522件 [詳細] file02.png 2699件 [詳細]

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-02-01 (日) 14:38:24 (1045d)