波動率

如何使用 R 解釋已實現波動率和 TSRV

  • October 23, 2020

我正在查看一些高頻數據,我想知道如何解釋和比較已實現波動率 (RV) 和兩尺度已實現波動率 (TSRV)。下面參考。給定 X 是股票的對數回報

$$ [X,X]{T}^{all} = \sum\limits{i=1}^{n} (X_{t_{i+1}} - X_{t_{i}})^2 $$

這裡下標 all 表示使用所有數據。在我的情況下,我的數據是一秒一秒的,所以它將是平方對數的差異之和,相隔 1 秒返回。

計算 RI 中的 RV 有一個函式,它獲取價格,獲取對數,然後是差異,將它們平方並求和:

RV<-function(prices)
{
 logprices = log(as.numeric(prices))
 logreturns = diff(logprices)
 return(sum(logreturns^2))
}

兩尺度實現波動率 (TSRV) 將整個樣本從 1 到 n 劃分為 K 個子樣本。在我的情況下,K = 300。所以會有一個移動視窗 time301-time1,time302 -time 2 ……並且這些視窗的 RV 將被平均。

$$ [X,X]{T}^{K} = \dfrac 1K\sum\limits{i=1}^{n-K+1} (X_{t_{i+K}} - X_{t_{i}})^2 $$ 然後 $$ \text{TSRV} = \Big(1- \dfrac zn\Big)^{-1}\Big([X,X]{T}^{K} - \dfrac zn [X,X]{T}^{all}\Big) $$ 在哪裡 $ z = (n-K+1)/K $ .

取兩者之間的差異$$ [X,X]{T}^{K} $$和 $$ [X,X]{T}^{all} $$消除了微結構雜訊的影響。因素 $ (1-z/n)^{-1} $ 是調整有限樣本偏差的係數。

在 R 中有一個計算 TSRV 的函式:

myTSRV<-function (pdata, K = 300, J = 1) 
{ 
 #pdata contains prices for a stock
 #K the slow time scale = 300 seconds
 #J is the fast time scale = 1 second
 logprices = log(as.numeric(pdata))
 n = length(logprices)
 nbarK = (n - K + 1)/(K) 
 nbarJ = (n - J + 1)/(J)
 adj = (1 - (nbarK/nbarJ))^-1  #adjust for finite sample bias
 logreturns_K = logreturns_J = c()
 for (k in 1:K) {
   sel = seq(k, n, K)
   logreturns_K = c(logreturns_K, diff(logprices[sel]))
 }
 for (j in 1:J) {
   sel = seq(j, n, J)
   logreturns_J = c(logreturns_J, diff(logprices[sel]))
 }
 TSRV = adj * ((1/K) * sum(logreturns_K^2) - ((nbarK/nbarJ) *  (1/J) * sum(logreturns_J^2)))
 return(TSRV)
}

我為 IBM 獲取了大約 $ 2 $ 小時併計算 RV 和 TSRV $ K= 300 $ 秒和 $ J= 1 $ 第二個大約 $ 2 $ 小時。

我有幾個問題。

  • RV 在 0.00002 到 0.00005 的範圍內。我如何解釋這個?在文獻中 RV 也稱為綜合變異數。我想要波動率,所以我需要將這些數字平方根才能達到 0.0044 到 0.007 嗎?
  • 即使我將它們平方根,0.0044 或 .007 是什麼意思?IBm 在這 2 小時內的波動率是 0.44% 到 0.7%?
  • .0044 和 .007 是否需要以某種方式標準化為年度或每日數字?你能建議怎麼做嗎?
  • 如何比較不同長度間隔的 RV 或 TSRV。假設我有一個使用 2 小時數據計算的 RV。如何使用 6 小時的數據將其與 RV 進行比較?

參考

我所有的文章都來自:https ://lirias.kuleuven.be/bitstream/123456789/282532/1/AFI_1048.pdf

TSRV 的原始論文:http ://wwwf.imperial.ac.uk/~pavl/AitSahalia2005.pdf

R 程式碼 getAnywhere(“TSRV”)

我將按順序解決您的問題:

1a) 對於使用紐約證券交易所單日開市至收市的高頻回報建構的 TSRV,輸出應為 1e-4 到 1e-5 數量級的數字。換句話說,你的數字看起來是對的。我使用 Kevin Sheppard 的 TSRV 的 MatLab 程式碼自己計算 IBM 數據的 TSRV 得到這些數字。

1b) RV 在文獻中稱為積分變異數。在沒有跳躍或微結構雜訊的連續時間建模框架中,RV 對於積分變異數是一致的。如果包含跳躍,RV 包含跳躍分量,因此對於二次變異 = 積分變異數加上跳躍變異數是一致的。如果包括微結構雜訊,RV 會發散。請注意,該問題的其他回答者建議 TSRV 與積分變異數一致,但不是二次變異。據我所知,這是不正確的。有關更多詳細資訊,請參閱我對該答案的評論。(**更新:**另一個回答者正在考慮雙功率變化 BPV,而不是 TSRV。這個領域有很多首字母縮略詞:-)

1c) 如果您想估計開盤到收盤的回報率波動率,則取 RV 或 TSRV 的平方根(使用開盤到收盤的高頻數據計算),這是一個有效的估計量。

  1. 平方根數的解釋是,它是回報的波動性,它跨越與您用來計算估計量的高頻數據相同的區間。在標準情況下,即開市至收市。

3)讓 $ v_{t_a,t_b} $ 表示跨區間的變異數估計量 $ [t_a, t_b] $ . 您始終可以使用時間的平方根(或者如果使用波動率,則僅使用時間)來放大或縮小它,以便您的所有估計量都處於一致的規模,例如年化變異數。但請注意,這只是一個縮放技巧,因此所有內容都以可比較的單位進行測量。您的估計器仍然只與跨區間的回報變異數有關 $ [t_a, t_b] $ . 實際上,將您的縮放變異數估計量解釋為跨越較長時間間隔(如一年)的收益變異數,僅在非常嚴格的建模假設(例如恆定變異數)下才有意義。就個人而言,我認為始終與您的變異數估計器一起儲存它所跨越的時期的一些記錄並參考它會更乾淨。

  1. 請參閱問題 3。您可以使用時間的平方根(即乘以 3 的平方根)將您的 RV 從兩個小時調整為可比較的六個小時單位。但是,請參閱我上面提出的觀點。比較跨越相同間隔的 RV 和 TSRV 估計量會更好,因為如果你比較兩小時和六小時估計量,你會隱含地對兩小時估計量不利,除非真實變異數在六小時間隔(如果您正在處理財務數據,幾乎可以肯定不是)。

引用自:https://quant.stackexchange.com/questions/18889