Juria에서 파동을 가늠하는 걸 해보도록 하겠습니다.

두 번째 투고이기 때문에 실질적으로 첫 번째 투고다.

개요


저번 주가 대수 가격의 생성을 진행했다.
본 글은 생성된 대수적인 가격을 사용하여 가격 변동이 격렬한'변동성'을 나타내는 평가를 한다.이번에도 필자는 수학 능력이 없기 때문에 나는'기분'만 가지고 전진한다.

카탈로그

  • 독자 대상
  • 컨디션
  • 전회의 줄거리
  • 실현의 파동성에 관하여
  • 코드
  • 보태다
  • 끝맺다
  • 독자 대상


    저번는 차이가 많지 않다.
  • 정적 분포를 아는 사람
  • 줄리아 기본 문법(if 또는 for 등)을 아는 사람
  • (가능한 경우)저번글을 읽은 사람
  • 컨디션


    이것도 저번와 같다.
  • Julia 1.5.3
  • 사용 패키지
  • Distributions 0.24.4
  • Plots 1.20.1
  • Statistics
  • 전회의 줄거리


    저번 주가는 $대수 가격은 $X가격 변동률이 $\equiv\log{S t}보다 낮은 모델에서 주식 가격에 대한 시뮬레이션을 실시했다.
    \begin{align}
    dX_t = \mu dt + \sigma dW_t
    \end{align}
    

    실현의 파동성에 관하여


    그러면 이번에 생성된 대수 가격 $X파동률을 가늠해 봅시다.

    왜 파동성을 추측하고 싶습니까?


    그것은 파동성이 그 자산의 위험을 나타내기 때문이다.
    원래 변동성은 자산 가격의 변동 정도를 가리킨다.그리고 금융 세계에서 변동성은 자산의'리스크'로 여겨진다.
    왜 자산 가격 변동의 정도가 '리스크' 로 여겨집니까?우리 아래의 예를 한번 고려해 봅시다.
    나는 아래의 도박을 고려할 것이다.
  • 내기1: $\rac{1}{2}의 확률+100엔, $\rac{1}{2}달러의 확률-100엔
  • 내기2: $\rac{1} {2} 달러의 확률 +10만 엔, $\rac{1} {2} 달러의 확률 -10만 엔
  • 그렇다면 두 도박의 기대치는 모두 같다.그런데 어느 도박이 더 안전할까요?당연히 그것은 도박이라고 여길 것이다.왜냐하면, 내기를 해서 져도 100엔 정도면 되니까 2를 걸면 10만 엔이 손실되기 때문이다.(뭐, 그만큼 소득금액도 크다.)
    이런 궤변의 예에서도 알 수 있듯이 파동성이 크면 그 자산의'위험'이 매우 크다.
    변동성을 추정해 그 자산에 그만한 리스크가 있는지 가늠할 수 있다는 것이다.스케줄러:정말?

    누적 파동성과 실현 파동성


    그렇다면 변동성을 추정해야 하지만, 이번 추정의 목표로서의 누적 변동성(Integrated Volatility, IV)과 그 추정량으로서의 실현 변동성(Realized Volatility, RV)을 미리 설명해야 한다.
    누적 파동은 일반적으로 아래의 양을 가리킨다.
    \mathrm{IV} = \int_{0}^{T} \sigma^2 dt
    
    이것은 시간적분의 변동성 $\sigma달러의 제곱이기 때문에 시간$[0,T]달러의 변동성 크기를 대표한다고 볼 수 있다.
    (결말 63; 일종의 결말 63: "그게 너의 소감이지?"

    (여담)


    또한 현재 구상된 모델에서 $\sigma는 상수이기 때문에 누적 파동도는 아래의 양이다.
    \mathrm{IV} = \int_{0}^{T} \sigma^2 dt = \sigma^2 T
    
    즉, 현재 구상된 모델이 누적 파동성을 추정할 수 있다면 $\sigma를 추정할 수 있다.
    (※ 특히'현재 구상된 모델 중'을 강조하는 데는 이유가 있습니다.보태다에서 서술한 바와 같이 이번 모델을 약간 확장한 모델에 대해서는 누적 변동성에서 $\sigma달러를 자주 추측할 수 없습니다.)
    그렇다면 누적 파동성이 파동성의 크기를 추측할 수 있다면 관건적인 추측은 어떻게 하면 좋을까?
    사실상 누적파동의 일치추계는 아래의 양으로 파동을 실현하기 위한 것으로 알려져 있다.
    \mathrm{RV} = \sum_{i=1}^{n-1} (X_{t_{i+1}}-X_{t_i})^2
    
    이것은 단지 대수 가격의 차를 2승으로 더한 것일 뿐이다.
    '심정'을 설명하자면 파동성 중의 $n이 $이면 파동성과 누적 파동성이 일치하기 때문에 $n이 비교적 크면 파동성을 실현하여 누적 파동성을 정확하게 예측할 수 있다.
    (실제로 파동성이 누적파동성의 일치추계를 실현하기 위해서는 각종 조건을 충족시켜야 한다. 자세한 내용은 스스로 조사하라.)
    인상은 다음과 같은 느낌.
    \mathrm{RV} \xrightarrow{n \to \infty} \mathrm{IV}
    

    코드


    그럼 실제로 해 보세요.
    먼저 코드의 전체를 보여 드리겠습니다.
    estimateVolatility.jl
    using Plots
    using Random
    using Distributions
    using Statistics
    
    function estimateVolatility(n,m)
        #誤差(=RV-IV)を保存するための配列を宣言
        result = Array{Float64}(undef,m)
    
        for j in 1:m
            #####ここからほぼ前回のコード#####
            #---時間の生成---
            T = 1
            Δt = T/(n-1)
            t = collect(0:Δt:T) #一定間隔Δtで、Tまで時間を生成
    
            #---価格の生成---
            #正規分布を生成
            d = Normal(0,Δt^0.5) #dWは平均0,標準偏差Δt^0.5に従う
    
            #正規分布に従う乱数を生成
            Δ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
            #####ここまでほぼ前回のコード#####
    
            #---実現ボラティリティ(RV),累積ボラティリティ(IV)を計算---
            RV = 0
            for i in 1:n-1
                RV += (X[i+1]-X[i])^2
            end
    
            IV = σ^2*T #今回のケースではIVはこうなる
            #---推定結果の記録---
            result[j] = RV - IV
        end
    
        #---誤差の表示---
        println("---result---")
        println("Average:",mean(result))
        println("Std:",std(result))
        plot(result,st = :histogram,label = "RV-IV") #ヒストグラムを表示
    end
    
    estimateVolatility(10000,5000)
    

    실행 결과


    상기 코드를 실행하면 다음과 같은 느낌으로 오차의 평균, 표준 편차, 직사각형을 출력한다.
    ---result---
    Average:-1.2419854575511508e-7
    Std:0.0005650675372142399
    

    직사각형을 보면 정규 분포가 된다.
    상기 프로그램의 $n$n이 증가할 때 (즉 대수 가격에 대한 관측수를 증가하면) 이 오차 분포의 방차는 점점 작아진다.
    (관심 있으신 분들은 시도해 보세요.)

    해설


    설명하고 싶은데요.
    이 코드의 처리 개요는 다음과 같다.

    레코드 오차를 설명하는 그룹


    추정 결과로 오차를 기록한 수조를 미리 성명하다.
    성명된 수조result는 다음과 같다.
    result[j] = j回目の誤差(=RV-IV)
    

    대수 가격의 생성


    여기는 거의 저번 코드를 유지하고 있습니다.

    RV, IV 컴퓨팅


    RV
    \mathrm{RV} = \sum_{i=1}^{n-1} (X_{t_{i+1}}-X_{t_i})^2
    
    단지 계산에 근거할 뿐이다.
    누적파동(IV), 여담에서 말한 바와 같이 이번 상황은
    \mathrm{IV} = \int_{0}^T \sigma^2 dt = \sigma^2 T
    
    따라서 이것에 근거하여 계산하기만 하면 된다.

    계산 오차


    여기는 설명이 필요 없죠.
    추정 오차(=RV-IV)를 계산해 result에 저장하면 된다.

    디스플레이 오차


    여기 출력 오차의 평균, 표준 편차, 직사각형도
    패키지Statistics에 포함된 함수avg와 함수std의 평균치와 표준 편차.스케줄러:적당히배열해놓으면계산이 돼.
    이어 지난번에 사용했던Polts의 힘을 빌려 오차 직사각형을 그렸다.직사각형을 표시하는 것은 매우 간단하다
    plot(データ, st = :histogram)
    
    그럼 됐어.

    보태다


    이번에는 모델로 저번에 사용했던 블랙 반바지 모델.
    \begin{align}
    dX_t = \mu dt + \sigma dW_t
    \end{align}
    
    사용했습니다.
    다음은 확장된 내용입니다. $\mu달러와 $\sigma는 시간에 따라 달라지는 것이 있습니다.
    \begin{align}
    dX_t = \mu_t dt + \sigma_t dW_t
    \end{align}
    
    이때 누적 파동은
    \mathrm{IV} = \int_{0}^{T} \sigma_t^2 dt
    
    .이런 상황에서도 실현된 파동성은 누적 파동의 일치 추정량이다.
    하지만 $\sigma시간의 변화 속에서 잡담에서 한 것처럼 누적 파동의 측면에서 보면 $\sigma예측할 수 없다.

    끝맺다


    이번에는 수적 가격에서 실현된 변동성(RV)을 산출하고 변동성의 크기를 나타내는 누적 변동성(IV)을 추정했다.
    뭔가 많이 쓴 것 같기도 하고 내용이 엉망인 것 같기도 하고...
    죄송합니다. 문장이 어려워요.
    다음에 이번 주제에 대해서도 파동성을 실현하는 것이 있는데 고주파 관측과 함께 시장의 미구조 소음에 대한 말을 쓰고 싶습니다.

    좋은 웹페이지 즐겨찾기