數據
是否有一種技術可以在 R 中使用帶有選項數據(即每個日期的多個條目)的 xts 或 zoo 對象?
我開始使用 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 可能無法處理(計算以毫秒為單位,而不是微秒)。