クオンツ トレーディング モデルをモデル化する際に、NA 値をどのように処理するかという同じ問題に遭遇することがよくあります。以下の例は、「High」、「Low」、「Close」、「Volume」という名前の 4 つの列を持つ xts オブジェクトに格納された 1997 年 1 月 1 日以降の EOD データを持つ株式に関するものです。データはブルームバーグから。20 日間の出来高を計算しようとすると、次のエラー メッセージが表示されます。
SMA(stock$Volume, 20)
Error in runSum(x, n) : Series contains non-leading NAs
私はすぐに問題を特定し (これを 1000 回試したので、NA 値であることはわかっていました)、ボリューム データが欠落している 2 日間を見つけました。以下に当時のデータを転載します。簡単な観察として、TTR のSMA
, EMA
etc. 関数は、前に数字があり、後ろに数字がある場合、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値が削除された一時オブジェクトとして保存してから、ローリングボリュームを計算し、それをマージして、NA値が再度挿入されるようmerge.xts
に追加しますか? fill = NA
しかし、20 日間のウィンドウで利用可能な 19 日間だけでなく、過去 20 日間の取引日を取得しているので、それは正しいですか?
Bloomberg、Yahoo Finance、または別のソースからデータを取得するかどうかに関係なく、財務の他の R ユーザーにもこの問題が発生すると想定しているため、この投稿の結果として何らかの「ベスト プラクティス」が得られることを願っています。