ドリフトを取り入れる
前の演習では、ランダムウォークに従う株価をシミュレーションしました。今回はそれを次の2点で拡張します。
- ドリフト(趨勢)を伴うランダムウォークを扱います。株価のような多くの時系列はランダムウォークですが、時間とともに上方へドリフトする傾向があります。
- 前の演習では、ランダムウォークのノイズは加法的でした。つまり、ランダムで正規分布に従う価格変化を直前の価格に足していました。しかし、この方法だと理論上は価格がマイナスになる可能性があります。そこで今回はノイズを乗法的にします。ランダムで正規分布に従う変化に 1 を足してトータルリターンを作り、それを直前の価格に掛けます。
この演習はコースの一部です
Pythonで学ぶ時系列解析
演習の手順
- 平均 0.1%、標準偏差 1% の正規分布に従う乗法的な「steps」を 500 個、
np.random.normal()を使って生成し、トータルリターンにするために 1 を加えます(これはリターンです)。 - 株価
Pをシミュレーションします:- numpy の
.cumprod()メソッドで steps の積を累積します。 - トータルリターンの累積積に 100 を掛け、初期値を 100 にします。
- numpy の
- ドリフトを伴うシミュレーションのランダムウォークをプロットします。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Generate 500 random steps
steps = np.random.normal(loc=___, scale=___, size=___) + ___
# Set first element to 1
steps[0]=1
# Simulate the stock price, P, by taking the cumulative product
P = ___ * np.cumprod(___)
# Plot the simulated stock prices
plt.plot(___)
plt.title("Simulated Random Walk with Drift")
plt.show()