見出し画像

その賭けは得?Pythonを使ってモンテカルロシミュレーションで見破る方法とは?

49%の確率で表、51%の確率で裏が出るコインがあったとします。
表が出た場合は賭け金が2倍になります、裏の場合は賭け金を失います。
賭け金は10円、資産を1000円として、1000回続けた場合、資産は最終的にどうなるかを計算してください。この賭けを受けた方が得ですか?

モンテカルロ・シミュレーションは、財務、プロジェクト管理、コスト、のリスクと不確実性を理解するために使用される手法です。モンテカルロ・シュミレーターは、潜在的はリスクや結果を視覚化し、意思決定に役立てます。

さて、上記の賭けは受けた方が得でしょうか?

答えを知りたい人は↓

import random
import matplotlib.pyplot as plt

money = 1000
result = []


for i in range(1000):
  bet = 10
  if random.random() <= 0.49:
    money += bet
    result.append(money)
  else:
    money -= bet
    result.append(money)

print(money)

plt.plot(result)
plt.show()

右肩下がりですね。。受けない方が良さそうですね。

次は「投資家の成績って実はまぐれじゃないの?」を実験してみましょう。

 45%の確率で10000円の利益が出て、55%の確率で10000円損する投資があったとします。 10000人の投資家いたとして、初期資産を10000円として5年間投資したとして、最終的に何人の投資家が残っていますか?
なお、資産が0になった投資家はカウントしないものとします。

import random
import matplotlib.pyplot as plt

# 初期資産
initial_capital = 10000

# 初期投資家人数
initial_investors = 10000

# 結果を保存するリスト
results = []

# 投資家の資産
investor_capital = initial_capital

# シミュレーションを5年分実施
for i in range(10):
    # 初期投資家人数を記録
    results.append(initial_investors)

    # 投資家の人数をカウントする変数
    investor_count = 0

    # 各投資家について
    for j in range(initial_investors):
        # 確率45%で利益、55%で損失
        #if random.choices(arr, probability)[0]:
        if random.random() <= 0.45:
            investor_capital += 10000
        else:
            investor_capital -= 10000

        # 資産が0以上の場合は、投資家の人数をカウント
        if investor_capital > 0:
            investor_count += 1
        investor_capital = 10000

    # 投資家の人数を更新
    initial_investors = investor_count


# グラフを描画
print(results)
plt.plot(results)
plt.show()

こちらほとんど全滅ですね。。もちろん投資には色々な要因が絡んでいるので一概には言えませんが、長くエクスポージャーに晒していると、不運に会う確率は上がりそうです。

2番目の問題はこの本からです。この本からモンテカルロシミュレーションをしりました。投資においては名著中の名著です。


この記事が気に入ったらサポートをしてみませんか?