2012-10-15 320 views
3

在建模定量交易模型時,我經常遇到如何處理NA值的相同問題。下面的例子是關於自1997-01-01以來的EOD數據存儲在具有名爲「高」,「低」,「關閉」,「體積」的四列的xts對象中的股票。數據來自彭博社。當我想計算的滾動20天的成交量出現錯誤消息:如何使用xts對象在TTR庫中處理'系列包含非領先的NAs'?

SMA(stock$Volume, 20) 
Error in runSum(x, n) : Series contains non-leading NAs 

我很快找到了問題(這是我所知道的是NA值,因爲我已經試過這1000次),發現兩天,其中volume數據丟失。我已經在下面複製了這些日子的數據。作爲一個快速觀察,TTR中的SMA,EMA等函數不能處理NA,前提是數字後面跟着數字。

stock <- as.xts(matrix(c(94.46,92.377,94.204,NA,71.501,70.457,70.979,NA), 2, 4, 
    byrow = TRUE, dimnames = list(NULL, c("High","Low","Close","Volume"))), 
    as.Date(c("1998-07-07", "1999-02-22"))) 

解決此問題的最佳方法是什麼?是到stock$Volume存儲爲其中NA值被移除的臨時對象,然後計算所述軋製體積和背部與merge.xts同時加入fill = NA所以NA值被再次插入合併呢?但是,從過去的20個交易日開始,而不僅僅是20日窗口中的19個交易日是否正確?

我希望某種「最佳實踐」可以成爲本文的結果,因爲我認爲這個問題也會發生在其他金融R用戶身上,無論他們是從彭博,雅虎財經還是其他來源獲得他們的數據。

+0

這是一個「如何處理缺失數據」的問題,而不是一個編程問題。 TTR不會自動執行此操作,因爲無法知道哪種類型的插補方法適合於任何給定的用例。 –

+0

你是對的約書亞。它本身不是一個編程問題,但它是你必須編寫一個腳本,最好的處理缺少這一切發生的時間在金融時間序列數據的問題意識邊緣。如果遺漏的數據處理不當,您的後測結果可能會引起誤解。有沒有更好的論壇可用於這種類型的問題? –

+0

我想聽聽其他人如何處理這個問題。我有一個類似的問題,請參見http://stackoverflow.com/questions/11897169/change-nas-to-interpolated-flat-bars(無答案標記爲正確的呢,我相信一定會有一個更好的解決方案。) –

回答

0

把你的初始時間序列包含的NA,例如a.ts 通過使用na.approx的通用功能(動物園包文檔中更多細節)與經內插的值替換每個NA

b.ts=na.approx(a.ts) 

b.ts近似的NaS是時間

相關問題