ランダムウォークモデル

ランダムウォークモデル

ランダムウォークモデルは、価格や変数がランダムに変動するモデルで、特に金融市場の価格変動などをモデル化するのによく使用されます。

ランダムウォークの基本的な方程式は以下のように表されます。

$$
[ P_t = P_{t-1} + \epsilon_t ]
$$

ここで、$ ( P_t ) $は時刻$ ( t ) $における価格、$ ( \epsilon_t ) $は平均がゼロのランダムな変数(ノイズ)です。

以下は、このランダムウォークモデルを用いて価格の変動をシミュレートし、Pythonでグラフ化する例です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import numpy as np
import matplotlib.pyplot as plt

# ランダムウォークに基づく価格変動のモデル
def random_walk(initial_price, num_steps, volatility):
prices = [initial_price]
for _ in range(num_steps):
price = prices[-1] + np.random.normal(0, volatility)
prices.append(price)
return prices

# 初期価格
initial_price = 100

# ステップ数
num_steps = 100

# ボラティリティ(価格変動の程度)
volatility = 1.0

# 価格変動のシミュレーション
price_simulation = random_walk(initial_price, num_steps, volatility)

# グラフを描画
plt.plot(range(num_steps + 1), price_simulation)
plt.title('価格変動のランダムウォーク')
plt.xlabel('ステップ')
plt.ylabel('価格')
plt.grid(True)
plt.show()

このコードでは、ランダムウォークモデルに基づき、指定したステップ数分の価格変動をシミュレーションしています。

ボラティリティの値を変更することで、価格変動の程度を制御できます。

[実行結果]

ソースコード解説

このPythonソースコードは、ランダムウォークモデルを使用して価格変動をシミュレーションし、それをグラフで視覚化するものです。

以下はソースコードの詳細な説明です。

1. モジュールのインポート:

1
2
import numpy as np
import matplotlib.pyplot as plt
  • numpyは数値計算をサポートするライブラリで、主に配列や行列などの操作に利用されます。
  • matplotlib.pyplotはグラフ描画のためのライブラリです。

2. ランダムウォーク関数の定義:

1
2
3
4
5
6
def random_walk(initial_price, num_steps, volatility):
prices = [initial_price]
for _ in range(num_steps):
price = prices[-1] + np.random.normal(0, volatility)
prices.append(price)
return prices
  • random_walk関数は、初期価格、ステップ数、ボラティリティを受け取り、ランダムウォークモデルに基づいて価格変動をシミュレーションします。
  • np.random.normal(0, volatility)は平均が0で標準偏差がvolatilityの正規分布からランダムな変数を生成しています。

3. パラメータの設定:

1
2
3
initial_price = 100
num_steps = 100
volatility = 1.0
  • initial_priceは初期価格、num_stepsはステップ数、volatilityは価格変動の程度を表します。

4. 価格変動のシミュレーション:

1
price_simulation = random_walk(initial_price, num_steps, volatility)
  • random_walk関数を使用して価格変動をシミュレーションし、その結果をprice_simulationに格納します。

5. グラフの描画:

1
2
3
4
5
6
plt.plot(range(num_steps + 1), price_simulation)
plt.title('価格変動のランダムウォーク')
plt.xlabel('ステップ')
plt.ylabel('価格')
plt.grid(True)
plt.show()
  • plt.plotで価格変動のランダムウォークを描画します。
  • plt.titleでグラフにタイトルを追加し、plt.xlabelplt.ylabelで軸のラベルを指定します。
  • plt.grid(True)でグリッドを表示し、plt.show()でグラフを表示します。

このコードは、単純なランダムウォークモデルを使用して価格変動をシミュレーションし、それをグラフで視覚化するサンプルです。

グラフ解説

[実行結果]

上記のグラフは、ランダムウォークモデルに基づく価格変動のシミュレーションを表しています。

以下はグラフの詳細な説明です。

横軸 (X軸):

ステップ数を示しています。
各ステップは時間の経過を表しており、時刻$ ( t ) $が$ 0 $から$ 100 $まで変化します。

縦軸 (Y軸):

価格を示しています。初期価格は$ 100 $からスタートしており、各ステップでランダムな変動が加わり、価格が変動します。

グラフの形状:

各ステップでの価格変動がランダムであるため、グラフはランダムに上下に動きます。
ノイズ(ランダムな変数)が価格に加わり、その結果として価格がランダムウォークする様子が観察されます。

ボラティリティの影響:

ボラティリティが$ 1.0 $と設定されているため、価格変動が比較的大きくなっています。
ボラティリティが増加すると、価格の変動が激しくなります。

このグラフは、ランダムウォークモデルを用いて生成された価格変動のシミュレーションであり、実際の金融市場の価格変動などをモデル化するために使用される手法の一つです。