주리아에서 주가 시뮬레이션.
미흡한 점이 있을지도 모르니 잘 부탁드립니다.
개요
주리아를 사용하여 주식 가격 변동을 진행하고 흑·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.)