#blog2navi()
*ランダムな数値の動きと、累積値 [#n39b7ba1]

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

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

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

累積値と言っているものの結果は
|元本|一回目の取取引(違う割合で取引)|二回目の取引(同じ割合でup)|
|1000万|1050(5%up)|1081(3%up)|
|1000万|950(5%down|978(3%up)|
と言う感じになる。

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


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

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

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

&ref(./01.png,40%);

* 結果のヒストグラム [#d3cde6c6]

&ref(./02.png,40%);


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

** 計算プログラム [#n09c553d]

 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()


&ref(./repert_test.py);

RIGHT:Category: &#x5b;[[python 統計>日記/Category/python 統計]]&#x5d; - 20:40:47
----
RIGHT:&blog2trackback();
#comment(above)
#blog2navi()

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS