주리아에서 주가 시뮬레이션.
미흡한 점이 있을지도 모르니 잘 부탁드립니다.
개요
주리아를 사용하여 주식 가격 변동을 진행하고 흑·sholls 모델을 따를 때의 시뮬레이션을 한다.
이 글에서 필자는 단지 엄밀한 토론을 했을 뿐이다. 수학 능력이 없기 때문에 각양각색의 엄밀성을 버리고'심정'으로만 진행했다.
카탈로그
독자 대상
컨디션
주식 가격의 변동 모델
시간에 $t$S의 주식 가격미화S_검은색 반바지 모형의 파동은 다음과 같은 기하학적 브라운 운동을 따른다.\begin{align}
dS_t = a S_t dt + \sigma S_t dW_t \tag{1}
\end{align}
여기 있다
\begin{align}
dS_t = a S_t dt + \sigma S_t dW_t \tag{1}
\end{align}
A:평균수익률은얼마인가
★주가변동이 얼마나 큰가
(1) 설명식의 심정, 주가는 $S달러의 변동창문을 열다
그럼,$W브라운 운동의 성질은 다음과 같은 확률 과정이다.
$W_0 = 0$
$W_거의 연속적이었어.
$0\leqs의 경우
임의의 $0=t1\leq t_2 < t_3 <\dots < t_대상
$W_{t_2} - W_{t_1} , W_{t_3} - W_{t_2} ,\dots , W_{t_n} - W_{t{n-1}달러는 독립적입니다.
후반부의 두 가지 상황을 고려하면 달러 dWt달러에 관해서는 다음과 같은 내용을 고려한 후에 시뮬레이션에 넣을 수 있다. (정말입니까?)
$$dW_t 는 N (0, dt) 을 따른다. $
대수 가격과 이토의 부제
그렇다면 지금까지의 고찰을 보면 주가는 이미 달러S에 이르렀다환율 변동을 모의할 수도 있지만 금융공정 등 세계에서 (1)식으로 주가를 처리하는 경우는 거의 없다.
다음에 설명한 대로 대수 가격 $X많은 취미 대상의 인상을 남겼다.
???'소감이죠?'
왜 가격의 대수를 취해야 하는가
여러 가지 이유가 있지만 개인이 공감하는 이유는
먼저, 제1점을 설명한다.
수익률 $R달러
$$
R_{t_i} =\frac{S_{t_i}-S_{t_{i-1}}}{S_{t_{i-1}}}
$$
을 입력합니다.$\log{(1+x)} 를 $x=0$정도에서 한 항목과 비슷하게 펼치면
$$
\log{(1+x)}\simeq x
$$
.이 $x=R달러 대입 후
R_{t_i} \simeq \log{ \Big( 1+\frac{S_{t_i}-S_{t_{i-1}}}{S_{t_{i-1}}} \Big)} \\
= \log{S_{t_i}} - \log{S_{t_{i-1}}} \\
\therefore R_{t_i} \simeq X_{t_i} - X_{t_{i-1}}
수익률이 근사치임을 확인할 수 있다.다음은 두 번째, 이를 설명하기 위해 이토의 보충문제를 설명할 필요가 있다.
이토의 부제
이토의 보제(또는 이토의 정식)는 다음과 같다.
$S_아래의 확률 과정(이등 과정)에 따라.
$$
dS_t = a_t dt + b_t dW_t\tag{2}
$$
또한 $t, x$의 함수 $f (t, x) 달러는 $t에 대해 1회, $x에 대해서는 2회 미분할 수 있습니다.
$f(t,x)$의 편도 함수
f_t = \frac{\partial f}{\partial t} \\
f_x = \frac{\partial f}{\partial x} \\
f_{xx} = \frac{\partial^2 f}{\partial x^2}
.이때
\begin{align}
df(t,S_t) =& \Big( f_t(t,S_t) + f_x(t,S_t)a_t + \frac{1}{2} f_{xx} (t,S_t) b^2_t \Big)dt \\
&+ f_x(t,S_t)b^2_t dW_t \tag{3}
\end{align}
되다그럼 이 (1)식을 토대로 대수 가격 $X변화를 생각해 봅시다.
$f(t,x)=\log{x} 달러
\begin{align}
f_t(t,x)= \frac{\partial f}{\partial t} &= 0 \\
f_x(t,x) = \frac{\partial f}{\partial x} &= \frac{1}{x} \\
f_{xx}(t,x) = \frac{\partial^2 f}{\partial x^2} &= -\frac{1}{x^2}
\end{align}
식과 (2)식의 대응 관계는df(t,S_t) = dX_t = \Big( a - \frac{\sigma^2}{2} \Big)dt + \sigma dW_t
.$\mu\equiv\Big(a-\rac{\sigma^2}\Big)를 여기에 설정하면$$
dX_t =\mu dt +\sigma dW_t\tag{4}
$$
이렇게 되면 대수 가격의 변동이 분명해진다.
수치 시뮬레이션
오래 기다리셨습니다.
지금까지의 의론 사념의 하강 사용, 대수 가격 $X다음 그림을 시뮬레이션해 봅시다.
시간 분할 설정
시간 간격은 다음과 같다.
(주리아의 배열 인덱스는 1에서 시작하기 때문에 시간의 인덱스도 1에서 시작한다.)\begin{align}
&0 = t_1 < t_2 < \dots < t_n = T \\
&t_i = \frac{T}{n-1} (i-1) \quad (i \in \{1, 2, \dots, n \})\\
&\Big( \Delta t = \frac{T}{n-1} \Big) \\
&(但し n \geq 2 かつ T > 0)
\end{align}
단지 등거리로 구분했을 뿐이다.이렇게 하면 시간을 설정할 수 있다.
드디어 코드에 들어갑니다.
코드
우선 코드의 전체 상황을 보여 주세요.
logPricePlot.jlusing Plots
using Random
using Distributions
function logPricePlot(n,seed = 10)
#---時間の生成---
T = 1
Δt = T/(n-1)
t = collect(0:Δt:T) #一定間隔Δtで、Tまで時間を生成
#---価格の生成---
#正規分布を生成
d = Normal(0,Δt^0.5) #dWは平均0,標準偏差Δt^0.5に従う
#正規分布に従う乱数を生成
#Random.seed!(seed) #乱数のシードを固定したい人向け
ΔW = rand(d,n-1)
#対数価格変動をシミュレート
μ = 0.04
σ = 0.2
X = zeros(n)
X[1] = 10 #初期対数価格X_1を設定
for i in 1:n-1
X[i+1] = X[i] + μ*Δt + σ*ΔW[i]
end
#---価格のプロット---
plot(t,X,
xlabel = "t",#x軸のラベル設定
ylabel = "logPrice",#y軸のラベル設定
label = "logPrice",#凡例設定
)
#グラフを保存したければ
#savefig("画像名.png")
end
logPricePlot(1000) #データ数1000個でプロット
나는 이것을 실행하면 다음과 같은 느낌의 대수 가격이 생길 것이라고 생각한다.
차례대로 설명하고 싶습니다.
시간 생성
$T=1달러를 정의하여 같은 간격으로 시간을 생성합니다.
이 부분이 이해하기 어려운 게...t = collect(0:Δt:T)
섹션0부터 간격 $\Deltat 달러까지 $T 달러로 제작된 데이터입니다collect()
.
줄을 서지 않아도 괜찮아, 단지t = 0:Δt:T
근데 움직여.
가격의 생성
여기가 주요 부분입니다.
어떻게 하는지 말하면(4)식
$$
dX_t =\mu dt +\sigma dW_t\tag{4}
$$
그리고 차례대로 가격을 세어 보세요.\begin{align}
dX_t &= \mu dt +\sigma dW_t \tag{4} \\
\Delta X_{t_i} &= \mu \Delta t + \sigma \Delta W_{t_i} \\
X_{t_{i+1}} - X_{t_i} &= \mu \Delta t + \sigma \Delta W_{t_i} \\
X_{t_{i+1}} &= X_{t_i} + \mu \Delta t + \sigma \Delta W_{t_i} \\
(\Delta W_{t_i} &\sim N(0,\sqrt{\Delta t}))
\end{align}
$\Delta W_{t i} 달러를 만드는 부분, 즉 정규 분포에 따라 무작위 수를 생성하는 부분에서 쥬리아의 표준포장Random
과 외부포장Distributions
의 힘을 빌렸다.
정적 분포의 무작위 수에 부합하려면 먼저 정적 분포를 만듭니다.d = Normal(0,Δt^0.5) #平均0,標準偏差Δt^0.5の正規分布を作成
그리고 생성된 분포를 rand()
에 전달하고 분포에 따라 무작위 수를 생성한다.ΔW = rand(d,n-1) #rand(分布,(次元))で分布に従う乱数を指定した次元で作ってくれる
이렇게${t i}를 만드셨다면 그 다음 차례대로 대수 가격을 만들면 됩니다.
가격도
이것은 Plots
이라는 포장의 힘을 빌려 시간과 대수의 가격을 그렸다.
나는 특별히 해설이 필요한 부분이 없다고 생각한다.
끝맺다
이번에는 줄리아에서 대수 가격의 시뮬레이션을 진행했다.
다음에 쓸 정력이 있다면 이번 시뮬레이션에 따라 Juria로 Realized Volatility를 계산해 보세요.
Reference
이 문제에 관하여(주리아에서 주가 시뮬레이션.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ismkt/items/210dee5cd6109e7c2ee9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
\begin{align}
&0 = t_1 < t_2 < \dots < t_n = T \\
&t_i = \frac{T}{n-1} (i-1) \quad (i \in \{1, 2, \dots, n \})\\
&\Big( \Delta t = \frac{T}{n-1} \Big) \\
&(但し n \geq 2 かつ T > 0)
\end{align}
using Plots
using Random
using Distributions
function logPricePlot(n,seed = 10)
#---時間の生成---
T = 1
Δt = T/(n-1)
t = collect(0:Δt:T) #一定間隔Δtで、Tまで時間を生成
#---価格の生成---
#正規分布を生成
d = Normal(0,Δt^0.5) #dWは平均0,標準偏差Δt^0.5に従う
#正規分布に従う乱数を生成
#Random.seed!(seed) #乱数のシードを固定したい人向け
ΔW = rand(d,n-1)
#対数価格変動をシミュレート
μ = 0.04
σ = 0.2
X = zeros(n)
X[1] = 10 #初期対数価格X_1を設定
for i in 1:n-1
X[i+1] = X[i] + μ*Δt + σ*ΔW[i]
end
#---価格のプロット---
plot(t,X,
xlabel = "t",#x軸のラベル設定
ylabel = "logPrice",#y軸のラベル設定
label = "logPrice",#凡例設定
)
#グラフを保存したければ
#savefig("画像名.png")
end
logPricePlot(1000) #データ数1000個でプロット
t = collect(0:Δt:T)
t = 0:Δt:T
\begin{align}
dX_t &= \mu dt +\sigma dW_t \tag{4} \\
\Delta X_{t_i} &= \mu \Delta t + \sigma \Delta W_{t_i} \\
X_{t_{i+1}} - X_{t_i} &= \mu \Delta t + \sigma \Delta W_{t_i} \\
X_{t_{i+1}} &= X_{t_i} + \mu \Delta t + \sigma \Delta W_{t_i} \\
(\Delta W_{t_i} &\sim N(0,\sqrt{\Delta t}))
\end{align}
d = Normal(0,Δt^0.5) #平均0,標準偏差Δt^0.5の正規分布を作成
ΔW = rand(d,n-1) #rand(分布,(次元))で分布に従う乱数を指定した次元で作ってくれる
이번에는 줄리아에서 대수 가격의 시뮬레이션을 진행했다.
다음에 쓸 정력이 있다면 이번 시뮬레이션에 따라 Juria로 Realized Volatility를 계산해 보세요.
Reference
이 문제에 관하여(주리아에서 주가 시뮬레이션.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ismkt/items/210dee5cd6109e7c2ee9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)