#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: [[[python 統計>日記/Category/python 統計]]] - 20:40:47
----
RIGHT:&blog2trackback();
#comment(above)
#blog2navi()