仮想通貨価格のモデリング (Geometric Brownian Motion)

仮想通貨価格のモデリング (Geometric Brownian Motion)

一般的な仮想通貨価格のモデリングにおいて、Geometric Brownian Motion (GBM) がよく用いられます。

以下はその例です。

$$
dS = \mu S dt + \sigma S dW
$$

  • $ (S) $は仮想通貨の価格
  • $ (\mu) $はドリフト(平均収益率)
  • $ (\sigma) $はボラティリティ(価格変動の度合い)
  • $ (W) $はウィーナープロセス(ブラウン運動)

以下はこのモデルを用いた 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
31
32
33
34
35
import numpy as np
import matplotlib.pyplot as plt

def generate_price(mu, sigma, S0, days, dt=0.01):
np.random.seed(42)
t = np.arange(0, days, dt)
n = len(t)

S = np.zeros(n)
S[0] = S0

for i in range(1, n):
dW = np.random.normal(0, np.sqrt(dt))
dS = mu * S[i-1] * dt + sigma * S[i-1] * dW
S[i] = S[i-1] + dS

return t, S

# パラメータの設定
mu = 0.001 # ドリフト
sigma = 0.02 # ボラティリティ
S0 = 100 # 初期価格
days = 365 # シミュレーション期間

# 価格の生成
t, price_simulation = generate_price(mu, sigma, S0, days)

# グラフの描画
plt.figure(figsize=(10, 6))
plt.plot(t, price_simulation, label='仮想通貨価格')
plt.title('仮想通貨価格のGeometric Brownian Motionモデル')
plt.xlabel('時間')
plt.ylabel('価格')
plt.legend()
plt.show()

このコードでは、GBMモデルに基づいて仮想通貨の価格を生成し、Matplotlibを使用して時間と価格のグラフを描画しています。

パラメータ$ (\mu) $、$ (\sigma) $、$ (S0) $を変更することで異なる結果が得られます。

[実行結果]

ソースコード解説

以下にコードの詳細な説明を示します。

1. 必要なライブラリのインポート

1
2
import numpy as np
import matplotlib.pyplot as plt
  • numpyは数値計算のためのライブラリで、行列計算や乱数生成などができます。
  • matplotlib.pyplotはグラフの描画に使用されます。

2. 価格生成関数の定義

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def generate_price(mu, sigma, S0, days, dt=0.01):
np.random.seed(42)
t = np.arange(0, days, dt)
n = len(t)

S = np.zeros(n)
S[0] = S0

for i in range(1, n):
dW = np.random.normal(0, np.sqrt(dt))
dS = mu * S[i-1] * dt + sigma * S[i-1] * dW
S[i] = S[i-1] + dS

return t, S
  • generate_price関数はGBMモデルに基づいて仮想通貨の価格を生成する役割を担います。
  • muドリフト(平均収益率)、sigmaボラティリティ(価格変動の度合い)、S0初期価格daysシミュレーション期間です。
  • dt時間ステップを表し、デフォルトでは$ 0.01 $に設定されています。
  • 生成された価格データと対応する時間軸を返します。

3. パラメータの設定

1
2
3
4
mu = 0.001  # ドリフト
sigma = 0.02 # ボラティリティ
S0 = 100 # 初期価格
days = 365 # シミュレーション期間
  • 仮想通貨価格のシミュレーションに使用されるパラメータを設定します。

4. 価格の生成

1
t, price_simulation = generate_price(mu, sigma, S0, days)
  • 先ほど定義したgenerate_price関数を呼び出し、仮想通貨価格のデータを生成します。

5. グラフの描画

1
2
3
4
5
6
7
plt.figure(figsize=(10, 6))
plt.plot(t, price_simulation, label='仮想通貨価格')
plt.title('仮想通貨価格のGeometric Brownian Motionモデル')
plt.xlabel('時間')
plt.ylabel('価格')
plt.legend()
plt.show()
  • matplotlib.pyplotを使用して、生成された仮想通貨価格データをグラフに描画します。
  • グラフには時間に対する価格の変動が可視化されます。
  • グラフのタイトルや軸ラベル、凡例なども設定されています。

グラフ解説

[実行結果]

このソースコードによって生成されるグラフは、Geometric Brownian Motion(幾何学ブラウン運動)モデルに基づいて仮想通貨の価格変動を模擬したものです。

以下に、グラフの内容を詳しく説明します。

グラフの構成要素:

1. X軸(時間):

  • グラフの横軸は時間を表しています。
  • daysパラメータで指定されたシミュレーション期間内の時間軸がプロットされます。

2. Y軸(価格):

  • グラフの縦軸は仮想通貨の価格を表しています。
  • 価格の単位は、モデル内での相対的な値です。

3. 曲線(仮想通貨価格):

  • プロットされた曲線は、Geometric Brownian Motionモデルに基づいて生成された仮想通貨の価格変動を示しています。
  • ブラウン運動の性質に基づき、確率的な変動が取り入れられており、連続的かつランダムな変動が観察されます。

4. タイトル:

  • グラフのタイトルは「仮想通貨価格のGeometric Brownian Motionモデル」です。
  • 使用されている価格変動モデルがGBMであることが示唆されています。

5. 軸ラベル:

  • X軸とY軸には、「時間」と「価格」という軸ラベルがそれぞれ設定されています。

6. 凡例:

  • グラフには「仮想通貨価格」という凡例が設定されており、プロットされた曲線が何を表しているかを示しています。

内容の解釈:

  • グラフは時間の経過に伴う仮想通貨価格の変動を視覚化しています。
  • ブラウン運動のランダムな性質により、価格は一定のトレンドを持ちつつも、確率的に変動しています。
  • 初期価格$((S0))$から始まり、時間が進むにつれて価格が変動していることが観察できます。

このグラフは、GBMモデルに基づく単純な価格変動のシミュレーションであり、実際の市場の複雑な動きを模倣しているわけではありません。

ただし、モデルの理解やパラメータの調整を通じて、価格変動の基本的な性質を観察するのに役立ちます。