5

クオンツ トレーディング モデルをモデル化する際に、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, EMAetc. 関数は、前に数字があり、後ろに数字がある場合、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$VolumeNA値が削除された一時オブジェクトとして保存してから、ローリングボリュームを計算し、それをマージして、NA値が再度挿入されるようmerge.xtsに追加しますか? fill = NAしかし、20 日間のウィンドウで利用可能な 19 日間だけでなく、過去 20 日間の取引日を取得しているので、それは正しいですか?

Bloomberg、Yahoo Finance、または別のソースからデータを取得するかどうかに関係なく、財務の他の R ユーザーにもこの問題が発生すると想定しているため、この投稿の結果として何らかの「ベスト プラクティス」が得られることを願っています。

4

3 に答える 3

2

「ベストプラクティス」についてはわかりませんが、不均一時系列の演算子で示されているように、「不均一時系列演算子」と呼ばれるものが1つの代替手段になる可能性があります

このタイプの質問は、Quantitative Finance スタック交換サイトに適しています (たとえば、How to update a exponential moving average with missing values? を参照してください)。

于 2012-10-17T20:22:06.270 に答える