數據

是否有一種技術可以在 R 中使用帶有選項數據(即每個日期的多個條目)的 xts 或 zoo 對象?

  • February 19, 2011

我開始使用 optionmetrics 中的選項數據。我使用數據框,但似乎 xts 或 zoo 對像是獲得功能和速度的方法。我無法找出每個日期獲得 1 行的最佳解決方法。我應該做一個 xts 對象列表,每個 optionid 一個對象嗎?

這是我目前的方法:我試圖通過查看標準普爾 500 指數期權的對沖投資組合的回報來為更高的時刻定價,所以我真的需要將下一期的期權價格與這一期的日期相匹配。我將日期作為一個類使用數據框,Date並剝離日期、選項 ID 和選項價格 (boa) 列。我使用 optionid 作為列名將日期重新調整為寬,並將日期向後移動(我每天都這樣做,但它可以是任何持有期)。然後我融化回長數據幀並合併回原始數據幀。我將在下面給出程式碼。

如果我對看漲期權和看跌期權都這樣做,那麼我可以合併日期、行使價和到期日,並形成對沖投資組合。這種方法效果很好,但它似乎不太可擴展,並且可能忽略了 R 中的很多好工具。現在我只是在看索引選項,但也許稍後我會看橫截面,所以速度會派上用場。

您如何處理 R 中的選項數據?謝謝!

這是程式碼:

> head(call.l)
       date     exdate dte optionid strike close   Xms    boa    delta
1 1996-01-04 1996-03-16  72 10003226    600 617.7 -17.7 25.250 0.768930
2 1996-01-04 1996-02-17  44 10016457    570 617.7 -47.7 48.750 0.000000
3 1996-01-04 1996-06-22 170 10019107    595 617.7 -22.7 39.000 0.732626
4 1996-01-04 1997-06-21 534 10050656    700 617.7  82.3 15.750 0.294790
5 1996-01-04 1996-02-17  44 10060564    615 617.7  -2.7 11.000 0.599153
6 1996-01-04 1996-02-17  44 10091463    655 617.7  37.3  0.375 0.046054

temp.l <- call.l[, c("date", "optionid", "boa")]
temp.w <- dcast(temp.l, formula = "date ~ optionid", value_var = "boa")
temp.w <- temp.w[ order(temp.w[, "date"]), ]
temp.w.shift <- tail(temp.w, -1) 
temp.w.shift[, "date"] <- head(temp.w[, "date"], -1)
temp.l.shift <- melt(temp.w.shift, id.vars = "date", variable.name = "optionid", value.name = "boa.fut", na.rm = T)
call.l.new <- merge(call.l, temp.l.shift)

> head(subset(call.l.new, strike == 615))
         date optionid     exdate dte strike  close   Xms    boa    delta boa.fut
5   1996-01-04 10060564 1996-02-17  44    615 617.70 -2.70 11.000 0.599153 10.6250
43  1996-01-04 10372012 1996-03-16  72    615 617.70 -2.70 15.000 0.593709 14.6250
80  1996-01-04 10823593 1996-01-20  16    615 617.70 -2.70  7.750 0.597414  6.0000
144 1996-01-05 10060564 1996-02-17  43    615 616.71 -1.71 10.625 0.577407 12.2500
182 1996-01-05 10372012 1996-03-16  71    615 616.71 -1.71 14.625 0.578089 16.2500
219 1996-01-05 10823593 1996-01-20  15    615 616.71 -1.71  6.000 0.584558  7.0625

但是,我還沒有看到專門的選項框架……我過去這樣做的方式基本上是為每個選項(基礎、類型、罷工、到期)設置一個時間序列(xts 或 zoo)。顯然,通過程式碼執行此操作很重要,因為它極易出錯。

我們使用建構函式將它們放入工作區。進行跨越多個有效期的更長測試仍然是困難和脆弱的。

我們最終放棄了 R 和 matlab,轉而採用函式式程式方法。這樣,當我們評估程式碼時,掃描一個映射結構,而不是一個數組。

顯然這會更慢,但確實簡化了程式,並且很容易並行化。它在實時數據饋送上表現相當不錯。HFT 可能無法處理(計算以毫秒為單位,而不是微秒)。

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