ノイズの多い測定の背後にある隠れた水準
状態空間モデルは、時間とともに変化する隠れた状態と、そのノイズを含む観測から成ります。最も単純なローカルレベルモデルは yₜ=μₜ+eₜ(eₜ (variance σ²ₑ))と μₜ=μₜ₋₁+hₜ(hₜ (variance σ²ₕ))で、水準 μₜ はランダムウォークであり、各測定は独立なノイズを加えます。UnobservedComponents(y, level='llevel').fit(disp=False) は σ²ₑ(sigma2.irregular)と σ²ₕ(sigma2.level)を最尤法で推定します。比 q=σ²ₕ/σ²ₑ は信号対雑音比で、q が小さいと水準はゆっくりで、平均して消すべきノイズが多いことを意味します。SPYの月次対数ボラティリティ258か月では σ̂²ₑ=0.089、σ̂²ₕ=0.045 なので q=0.50 です。
カルマンフィルタは毎月2段階で水準を推定します。予測 μ̂_(t|t-1)=μ̂_(t-1|t-1) のあと、サプライズで補正 μ̂_(t|t)=μ̂_(t|t-1)+Kₜ (yₜ-μ̂_(t|t-1)) をします。立ち上がり後、ゲインは K=P/(P+1)(P=1/2(q+√(q²+4q)))に落ち着き、フィルタは重み K の指数加重移動平均とまったく同じになります。ここでは K=0.502 で、pd.Series(y).ewm(alpha=K, adjust=False).mean() はフィルタ後の水準と 7×10⁻¹⁰ の精度で一致します。同じモデルは移動平均係数 -(1-K)=-0.498 のARIMA(0,1,1)でもあり、AICはどちらも 290.526 です。フィルタ後の水準 res.filtered_state[0] は t までのデータだけを使います。平滑化された水準 res.smoothed_state[0] は標本全体を使います。同じパラメータで200か月目でデータを切ると、フィルタ後の水準はまったく変わらず、平滑化水準は 0.116 動きます。平滑化は振り返りの道具であり、シグナルにしてはいけません。水準の予測は -2.09 で平坦、95%区間は ±0.83 から ±1.61 に広がります。
- ノイズ+水準:信号対雑音比 q が、新しい観測が推定をどれだけ動かすかを決める。
- フィルタはEWMAで、ローカルレベルモデルはARIMA(0,1,1)。1つの考えに3つの名前。
- フィルタは過去、平滑化は未来を使う。平滑化した系列で取引してはならない。
ラボ:採点される内容
- ローカルレベルの当てはめ10点
- 2つの分散10点
- フィルタ後と平滑化の水準5点
- 定常ゲイン15点
- EWMAとしてのフィルタ15点
- 先読みしているか20点
- 姿を変えたARIMA10点
- ボラティリティの研究15点