주리아에서 주가 시뮬레이션.

첫 투고.
미흡한 점이 있을지도 모르니 잘 부탁드립니다.

개요


주리아를 사용하여 주식 가격 변동을 진행하고 흑·sholls 모델을 따를 때의 시뮬레이션을 한다.
이 글에서 필자는 단지 엄밀한 토론을 했을 뿐이다. 수학 능력이 없기 때문에 각양각색의 엄밀성을 버리고'심정'으로만 진행했다.

카탈로그

  • 독자 대상
  • 컨디션
  • 주식 가격의 변동 모델
  • 대수 가격과 이토의 부제
  • 수치 시뮬레이션
  • 끝맺다
  • 독자 대상

  • 정규분포(부드러움)를 아는 사람
  • 줄리아의 기본 문법(for,if 등)은 대체로 이해하지만 그래도 한번 시도해 볼까?의 사람
  • 컨디션

  • Julia 1.5.3
  • 사용 패키지
  • Distributions 0.24.4
  • Plots 1.20.1
  • 주식 가격의 변동 모델


    시간에 $t$S의 주식 가격미화S_검은색 반바지 모형의 파동은 다음과 같은 기하학적 브라운 운동을 따른다.
    \begin{align}
    dS_t = a S_t dt + \sigma S_t dW_t \tag{1}
    \end{align}
    
    여기 있다
  • 달러의 예상 수익률(상수)
    A:평균수익률은얼마인가
  • $\sigma 달러 변동(상수)
    ★주가변동이 얼마나 큰가
  • $W_t달러는 브라운 운동(후술)
  • 네.
    (1) 설명식의 심정, 주가는 $S달러의 변동창문을 열다
  • 전체적인 추세를 나타내는 부분(1항)
  • 확률적 변동을 나타내는 부분(제2항)
  • 의 두 부분과 표현된 느낌.
    그럼,$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}달러는 독립적입니다.
  • 시뮬레이션에서 파악해야 할 것은 후반부의 2개(정규 증량과 독립 증량)이다.
    후반부의 두 가지 상황을 고려하면 달러 dWt달러에 관해서는 다음과 같은 내용을 고려한 후에 시뮬레이션에 넣을 수 있다. (정말입니까?)
    $$dW_t 는 N (0, dt) 을 따른다. $

    대수 가격과 이토의 부제


    그렇다면 지금까지의 고찰을 보면 주가는 이미 달러S에 이르렀다환율 변동을 모의할 수도 있지만 금융공정 등 세계에서 (1)식으로 주가를 처리하는 경우는 거의 없다.
    다음에 설명한 대로 대수 가격 $X많은 취미 대상의 인상을 남겼다.
    ???'소감이죠?'

    왜 가격의 대수를 취해야 하는가


    여러 가지 이유가 있지만 개인이 공감하는 이유는
  • 대수가격차 근사수익률
  • 대수 가격 변동이 뚜렷하다
  • 의 2점.
    먼저, 제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)식의 대응 관계는
  • (2)식 $at$:$a S_t$
  • (2)식 $bt$:$\sigma S_t$
  • 그러므로 (3)식
    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.jl
    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=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를 계산해 보세요.

    좋은 웹페이지 즐겨찾기