ランダムウォークによる株価のシミュレーション#
ランダムウォークにより株式時系列データの簡単なシミュレーションを行う
「株式投資で元本割れを経験する割合が9割」という話を再現
前提#
ランダムウォーク#
過程\(y_t\)が定数項\(\delta\)を用いて
\[
y_t=\delta+y_{t-1}+\varepsilon_t, \quad \varepsilon_t \sim \operatorname{iid}\left(0, \sigma^2\right)
\]
と表現されるとき、\(y_t\)はランダムウォークと呼ばれる。ただし、\(y_0=0\)とする。
ランダムウォークは代表的な単位根過程、すなわち、その差分系列が定常過程となる確率過程である。
データ#
ランダムウォークを10個生成するとつぎのようになる。
元本割れが9割#
もっと試行回数を増やし、最安値が初期値を下回った(元本割れした)率を計算する
import pandas as pd
results = []
for n_years in [1, 2, 5, 7, 10]:
for seed in range(100):
prices_ = gen_prices(seed, n=250*n_years)
results.append({
"期間(年数)": n_years,
"元本割れ率": min(prices_) < base_price,
"最安値": min(prices_),
"最高値": max(prices_),
})
pd.DataFrame(results).groupby("期間(年数)").mean().round(3)
| 元本割れ率 | 最安値 | 最高値 | |
|---|---|---|---|
| 期間(年数) | |||
| 1 | 0.96 | 91.099 | 125.397 |
| 2 | 0.96 | 89.854 | 145.098 |
| 5 | 0.96 | 88.286 | 233.708 |
| 7 | 0.96 | 88.192 | 330.347 |
| 10 | 0.96 | 88.175 | 487.246 |