しえログ

qiita との使い分けに悩んでる

くじのポートフォリオを Python でシミュレーション

書籍「プログラミングのための確率統計」のP.111の「コラム:ポートフォリオ」を Python でシミュレーションしてみたのでその結果。

くじの詳細と賭け方

確率 0.7 で A が出て、確率 0.3 で B が出るくじを想定する。A、B どちらに賭けても当たったら掛け金が 2 倍になって返ってくる。 もし指定の期間中、毎日全財産をこのくじの A に割合 p で、B に残りの割合で賭け続けるとした場合、 p はどんな値にしておくのが望ましいか。

シミュレーションコード

Python3 で記述。

第1コマンドライン引数で確率 p を、第2コマンドライン引数で期間日数を指定。試行回数はとりあえずで 100 回。元手は10000円とした。

財産が何倍になったかの試行結果を matplotlib でヒストグラムに表示し、さらに横軸のスケールは書籍に合わせて常用対数をとった。

金融とかそこらへんのワードわからないので変数名とかは色々妥当じゃないかも・・・。

ポートフォリオのシミューレション

結果

p = 0.7

$ python3 main.py 0.7 100
[  4.   4.   7.  18.   0.  30.  10.  18.   7.   2.]
[-1.  -0.2  0.6  1.4  2.2  3.   3.8  4.6  5.4  6.2  7. ]

f:id:cielan:20170320184745p:plain

p = 0.8

$ python3 main.py 0.8 100
[  2.   1.   9.  13.  21.  21.  25.   1.   6.   1.]
[ -6.   -4.4  -2.8  -1.2   0.4   2.    3.6   5.2   6.8   8.4  10. ]

f:id:cielan:20170320184830p:plain

p = 0.9

$ python3 main.py 0.9 100
[  3.   7.  12.  14.  14.  17.  15.  12.   5.   1.]
[-13.  -11.1  -9.2  -7.3  -5.4  -3.5  -1.6   0.3   2.2   4.1   6. ]

f:id:cielan:20170320184850p:plain

p = 0.99

$ python3 main.py 0.99 100
[  7.   8.  15.   6.  19.  19.   5.  15.   4.   2.]
[-47.  -43.6 -40.2 -36.8 -33.4 -30.  -26.6 -23.2 -19.8 -16.4 -13. ]

f:id:cielan:20170320184902p:plain

所感

儲かる方ばかりにウェイトを寄せずに適度に分散して投資しよう。

プログラミングのための確率統計

プログラミングのための確率統計