Stochastic Process/Stochastic Process

Ch2. Brownian Motion

LunaMooN 2022. 2. 7. 11:00

1. Random Walk

(1) 동전던지기 실험 예시

  • 앞면이 나올 확률과 뒷면이 나올 확률이 각각 1/2 인 경우

 

Xj={1,if wj=Head1,if wj=Tail

  • Mk=kj=1Xj(k=1,...)M0=0
  • E(Mk)=0,Var(Xj)=1
    • k0<k1<k2<...<km 일 때, Mki+1Mki=ki+1j=ki+1Xj
  •  E(Mki+1Mki)=0
  • Var(Mki+1Mki)=ki+1j=ki+1Var(Xj)=ki+1ki

 

(2) 금융에서의 random walk

  • Discrete Time Series
    • Xt=Xt1+ϵt,ϵti.i.d(0,σ2)
      • Xt=X0+ϵ1+ϵ2+...+ϵt=X0+tj=1 ϵj
        • E[St]=X0,Var[St]=tσ2

 

2. Brownian Motion

(1) 정의

  • Brownian Motion은 다음의 조건을 만족한다
    • Prob(B0=0)=1
    • 임의의 0t1<t2<... 에 대하여 Bt1,Bt2Bt1,Bt2Bt1,... 은 서로 독립이다(Independence of increments).
    • BtBsN(0,σ2(ts)),0st
    • {Bt}: t 에 관해 연속이다.

 

  • Random Walk에 스케일을 조정한 Xt/nn 일 때, Bt 로 수렴한다.
    • Wiener Process(혹은 Brownian Motion)은 Random walk의 t 사이사이에 더 작은 시간단위를 추가한 것이다. 이는 연속적인 시간 하의 금융시장에 적용될 수 있다.

 

(2) 특징

  • 브라운 운동의 증분 Wt+sWs 는 이전 기간과 독립이다. 따라서 만약 0vsv 가 존재할 때 이는 Wt+sWs 에 아무런 영향을 주지 않는다. (Markov Process)
  • 만약 t>s 이면, E[Wt|Is]=Ws 이다. (Martingale Process)
  • 0s<t 에 대하여, WtWsN(0,σ2(ts)),WtsW0N(0,σ2(ts)) 가 성립한다.
  • 미분이 불가능하다. 

 

(3) Simulation

import numpy as np
import matplotlib.pyplot as plt

 

3. Arithmetic Brownian Motion

(1) 정의

  • dXt=μdt+σdWt,WtN(0,1)
    • 주가는 장기적으로 추세를 갖고 상승함
    • μ : drift term
  • Xt=μ+Xt1+ϵt
    • Xt=X0+ϵ1+ϵ2+...+ϵt=S0+tj=1 ϵj

 

(2) Stochastic Differential Equation

T0dXt=T0μdt+T0σdWtXTX0=μ(T0)+σ(WTW0),XT=X0+μT+σWT

(3) Mean and Variance

  • E[XT]=X0+μT
  • Var[XT]=σ2T
  • Cov[Xt,Xs]=σ2min(t,s)

 

(4) Simulation

dXt=μdt+σdWt 를 통해 μσ를 추정한다.

XT=X0+μT+σWT 에 추정된 값을 넣어 미래 시점의 X 값을 수만번 시뮬레이션 후 분포를 확인한다.

예시) 95% 신뢰수준에서 X 값이 어떤 boundary 안에 있을지 보고 그에 맞는 위험 관리를 할 수 있다.

import yfinance as yf
from Brownian_Motion import Brownian
import matplotlib.pyplot as plt

df = yf.download('KO', '2017-01-01', '2022-01-01').Close
model = Brownian(df, process='arithmetic', period='daily')
model.fit()
paths = []
for i in range(20):
    paths.append(model.predict(t=i))
paths = np.array(paths)
plt.plot(paths[:, :20])
plt.show()
prediction = model.predict(t=20)
plt.hist(prediction)
plt.show()
print(model.confidence_level_)

t=1,..,20 paths
t=20에서의 X 값 분포

 

(54.077968542154025, 64.95059117054961)

 

4. Geometric Brownian Motion

(1) 정의

  • dXt=μXtdt+σXtdWt,WtN(0,1)
    • 주가 수익률에 대한 확률과정
  • 주가의 변동에 따른 GBM 일반화 식 도출
    • 가정: 주가는 오르거나 내린다. 주가가 상승할 확률을 H, 하락할 확률을 T라고 하자. (위에서 동전 던지기의 H, T라고 생각하면 좀 더 이해가 쉽다.)
    • St=S0(1+μn+σn)H(1+μnσn)T
      • μ: drift
      • σ: return (주가의 순간 분산은 수익률 제곱이로 순간 표준편차는 수익률)
  • nt=H+T,M=HT
    • M 은 랜덤워크를 따름(위의 2.0에서 Mk 의 정의를 보면 알 수 있음)
  • St=S0(1+μn+σn)12(nt+M)(1+μnσn)12(ntM)
    • H=12(nt+M),T=12(ntM)
  • lnSt=lnS0+μtσ22t+σWt
    • ln(1+μn+σn)(μn+σn)12(μn+σn)2
    • ln(1+μnσn)(μnσn)12(μnσn)2
      • By Taylor's Series
    • n:Mn=Wt: 무한번 동전던지기 게임을 하면 랜덤워크 과정은 위너과정이 됨
  • 따라서, St=S0eσWt+(μσ22)t 가 기하브라운운동(GBM)의 식이 된다

 

(2) Stochastic Differential Equation

dXt=μXtdt+σXtdWt,dYt=dlnXt=dXtXt12dX2tX2tdX2t=σ2X2tdtdlnXt=μdt+σdWt12sigma2dtdlnXt=(μσ22)dt+σdWtT0dlnXt=T0μσ22dt+T0σdWtlnXtlnX0=(μσ22)T+σWT

 

(3) Mean and Variance

  • E[lnXt]=lnX0+(μ12σ2)t
  • Var[lnXt]=σ2T
  • Cov[Xt,Xs]=X20eμ(t+s)

 

(4) Simulation

import yfinance as yf
from Brownian_Motion import Brownian
import matplotlib.pyplot as plt

df = yf.download('KO', '2017-01-01', '2022-01-01').Close
model = Brownian(df, process='geometric', period='daily')
model.fit()
paths = []
for i in range(20):
    paths.append(model.predict(t=i))
paths = np.array(paths)
plt.plot(paths[:, :20])
plt.show()
prediction = model.predict(t=20)
plt.hist(prediction)
plt.show()
print(model.confidence_level_)

 

t=1,..,20 paths

 

t=20에서의 X 값의 분포

[57.69536717 61.45777074]

 

5. Fractional Brownian Motion

(1) 정의

  • Brownian Motion의 일반화된 확률 과정
  • Independent Increment 가정 성립하지 않음
    • Cov[BH(t),BH(s)]=E[BH(t)BH(s)]=12(|t|2H+|s|2H|ts|2H) : H는 Hurst Index

 

(2) 특징

  • Hurst index에 따라 Process가 결정됨 

 

BH(t)={Wiener Process,if H=1/2Mean-reverting,if H<1/2Trending,if H>1/2

 

Proof

For 0s1<t1<s2<t2,[s1,t1][s2,t2]=E[(BH(t1)BH(s1))(BH(t2)BH(s2)]=12(|t2s1|2H|t2t1|2H(|s2s1|2H|s2t2|2H))Map f(x)=x2Hthen E[(BH(t1)BH(s1))(BH(t2)BH(s2)]=12(f(a1)f(a2)(f(b1)f(b2))(a1=t2s1,a2=t2t1,b1=s2s1,b2=s2t2,and b2<a2<b1<a1)For H(0,1/2)f<0,E[.]<0negatively correlatedFor H(1/2,1)f>0,E[.]>0positively correlated

 

 

 

 

 

https://github.com/HEEJOOMOON/Stochastic_Process

'Stochastic Process > Stochastic Process' 카테고리의 다른 글

Ch3. Ornstein-Uhlenbeck Process  (0) 2022.02.07
Ch1. 금융에서의 Stochastic Process  (0) 2022.02.05