記事の目次
根拠と適用範囲
Fidelityは回帰指標を、statsmodelsとNISTは当てはめと診断を説明します。いずれも本案のチャネル復帰戦略の収益性を確立するものではありません。
実践の流れ
- 過去窓に回帰を当てはめる検出バーを除外し、切片を含む対数価格OLSを使用してください。
- コンテキストを確認する登録された傾斜および残差要件を適用します。
- 帯外移動時のモデルを固定不変の係数と原点を保存します。
- 帯内への復帰を待つバンドの内側、かつターゲットの中心より下の位置でクローズする必要があります。
- リスクを評価する開発用データの外で損切り、時間決済、費用を検証します。
フィッティングされた直線は観測されたウィンドウを表す
フィデリティ社は、N期間にわたる回帰直線の終点([1])を用いて、同社の線形回帰指標を説明しています。この記事では、その説明方法を残差バンドを用いて拡張します。中心が傾斜しているということは、直線から大きく下回っているからといって、必ずしもファンダメンタルズ的に割安である、あるいは近いうちに上昇するとは限らないことを意味します。
2 つの質問を分けて考えてみましょう。直線が過去の期間をどれだけうまく説明できるか、そして今日の乖離がその後のリターンを予測できるかどうかです。R² は最初の質問に答えます。着実な下落は高い R² をもたらす可能性がありますが、適合線より下で繰り返し購入すると損失が発生します。
チャネルは平均回帰またはトレンド継続の予測に利用できますが、これらは相反する仮説です。下のベースラインは、下落局面を経て固定された下限バンド内に戻るのを待ちます。過去の平均回帰トレードが失敗した場合でも、モメンタムに切り替わることはありません。
検出バーより前の観測値のみを適合させる
j=0…N−1についてy[j]=log(C[j])とし、通常最小二乗法でy=a+bjを推定します。残差はe[j]=y[j]−a−bj、その尺度はs=sqrt(sum(e²)/(N−2))です。推定窓の終端からhステップ先の中心はm(h)=a+b(N−1+h)、価格帯はexp(m(h)±ks)です。提案設定N=60、k=2では正でない価格とゼロに近いsを除外します。
statsmodels OLSは入力する計画行列に切片を自動追加しないため[2]、定数列を含めます。t−1までで推定し、tの終値をh=1で評価します。tを推定に含めると、ショック自身がその判定に使う中心と幅の両方を動かしてしまいます。
提案された範囲コンテキストフィルタabs(b)×(N−1)/s≤1は、適合されたドリフトと残差スケールを比較します。これはスクリーニングルールであり、定常性テストではありません。逸脱によって候補が生成された際には、a、b、s、原点インデックス、および適合された入力ウィンドウを保存してください。そのアクティブな候補を再適合させないでください。
有効期限切れはトリガーよりも優先されます。擬似コードではその順序が明示され、逸脱が最初に検出されたときにprevious_zが初期化されます。欠損データ、非有限の適合結果、およびゼロ残差スケールは、ゼロ除算や人為的な極端なzスコアを許容するのではなく、候補を無効にします。
if no_candidate:
if invalid_or_nonpositive(close[t-N:t+1]): return
a,b,s = fit_log_ols(close[t-N:t], with_intercept=True)
if not finite(a,b,s) or s <= min_residual_scale: return
regime_ok = abs(b)*(N-1)/s <= 1.0
z = (log(C[t])-(a+b*N))/s
if regime_ok and z < -2:
freeze_candidate(a,b,s,origin=t-N,expiry=t+10,
previous_z=z,excursion_low=L[t])
else:
if t > candidate.expiry:
expire(); return
j = t-candidate.origin
z = (log(C[t])-(candidate.a+candidate.b*j))/candidate.s
update_excursion_low(L[t])
if candidate.previous_z < -2 and -2 <= z < 0:
emit_long(t)
candidate.previous_z = z
# Never refit an active candidate or backfill historical channels.
チャネル内への復帰は成功も失敗もする
仮想例:推定中心約100、傾き0、対数残差尺度s=0.01です。二シグマ下側帯は約98.02、上側帯は102.02です。価格97.8は下側帯外で、その後の終値98.3が帯内へ復帰します。エントリー98.4、損切り97.5、目標100なら価格リスク0.9、潜在利益1.6、費用前約1.78Rです。
合成経路が成功すると、まず100に到達します。失敗した経路では、新しい情報によって価格が96、そして94へと移動します。ポジションは、97.5付近の妥当な価格で停止するか、ギャップが生じた場合はさらに悪い価格で停止する必要があります。過去のデータとの良好な一致をもってしても、価格生成環境の変化を防ぐことはできません。
下落後にシグマを広げて、以前のストップロスが実際には破られていなかったと宣言してはいけません。そうすると、結果に基づく意思決定のスナップショットが変わってしまいます。将来の候補に対するモデルの更新は、既存の取引の会計処理を変更してはなりません。
別の経路では、97.8から101へ直接ジャンプします。バンド内に戻ったものの、ベースラインではz<0が必要となるため、中心ターゲットより上では買いません。このルールは、リスクとリターンのギャップが悪化した後に後から追加するのではなく、事前に固定されています。
固定係数は、中心が移動することを意味する可能性がある
aとbを固定しても、投影された中心は水平になりません。時間インデックスが進むにつれて、元の傾斜に沿って続きます。信号が出た時点で、予想される進入時間に対して投影された中心に等しいターゲットと、全変動幅の下限からバッファを引いた値より下のストップを固定します。
目標にも損切りにも達しなければ、提案ポジションは十本経過で時間決済します。候補の有効期限は復帰待ち、保有後の時間決済はエントリー後の保有期間を制限する別の時計です。取引開始で候補期間を誤って延長しないよう、両方を保存します。
執行が予定エントリー時間を超えて遅延した場合、経済ルールに基づき、凍結された目標価格を変更せずにそのまま維持するか、提出前にキャンセルするかを定義してください。潜在的な報酬を魅力的に保つためだけに、約定後に目標価格を変更しないでください。
急変時には次足始値と約定可能な気配の仮定を比較します。過去の線の交差は線上での約定保証ではありません。目標が待機中の指値注文なら、有効化時刻、数量、未約定の可能性をモデル化し、後の足が中心をまたぐだけで自動約定にしません。
残差診断は収益性の証明ではない
NISTは、独立性や安定分散などの古典的な残差仮定について議論しています [3]。金融価格はこれらの仮定に違反する可能性があります。したがって、±2sは自動的に次の価格の 95% 予測区間になるわけではなく、従来のOLS傾斜p値は取引可能な優位性の証拠にはなりません。
残差の自己相関、裾の挙動、窓をまたぐsの安定性を調べます。残差が片側にとどまるなら、新トレンドに逆張りしている可能性があります。診断はモデルの挙動を説明するために使い、有利な過去だけを選ぶためには使いません。
実用的な比較では、各候補について固定されたスナップショットを保持し、それらのスナップショットに対する価格変動をプロットします。見かけ上の回帰が、繰り返し再適合された中心が価格に向かって移動することによってのみ発生する場合、その効果は価格が元の基準に戻るのではなく、モデルの適応です。
R²、標準誤差、およびZスコアはそれぞれ異なる目的で使用されます。R²は適合度を表し、標準誤差はウィンドウ内の残差スケールを要約し、Zスコアはその固定スケールからの現在の偏差を表します。いずれも、次の取引が勝つ確率として再ラベル付けされるべきではありません。
ボリュームはチャネルを書き換えることなくイベントをフィルタリングできます
仮説の一つは、異常に高いRVOLが価格の再評価に伴う可能性を考え、その動きへの逆張りを避けます。別の仮説は、帯外移動時の高い活動量に続く静かな復帰を探します。都合に合わせ両説明を使わず、結果を見る前に特徴量を選び登録します。
同じ時間帯の基準を使い、可能ならスプレッドと公開時刻付きニュースを記録します。帯外移動が終わる前の判断に、終了後の全出来高を使ってはいけません。復帰確認時には観測済みの移動を集計できますが、特徴量のavailable_atは最後の入力の利用可能時刻を反映しなければなりません。
OLSをボリューム加重回帰に変更すると、モデル自体が変更されます。そのため、加重なしのベースラインとは別のバージョンとして評価する必要があります。そうしないと、ボリュームによるメリットが報告されたとしても、どの要素が重要なのかを特定することなく、中心値の変更、残差スケールの変更、およびエントリフィルターの変更が組み合わさった結果になってしまう可能性があります。
時系列テストと有用な対照
回帰チャネルを、同等の参入、退出、およびコストポリシーの下で、ボリンジャー平均と傾きのないzスコアベースラインと比較します。開発データでN、k、およびコンテキストフィルターを選択し、最終的な未公開テストを保持します。分割によって同じ変動結果が共有される場合、重複する取引ラベルの区間を削除します。
実装フィクスチャでは、切片、t−1 でのウィンドウの終了位置、対数スケーリング、自由度、s がゼロの場合、欠落観測値、およびプレフィックス不変性を検証する必要があります。期限切れの候補が次のバーで再エントリーする場合、遅延シグナルを発するのではなく、期限切れのままである必要があります。
事前定義した相場環境別に純リターン、裾の損失、非取引期間、成績を報告します。約定とギャップにストレスをかけます。足内経路が曖昧なギャップ足で中心ぴったりの約定を仮定しないと利益が出ないなら、採算を論じる前に約定モデルの修正が必要です。
高次の多項式は、不安定な外挿やより多くの研究選択肢を加えることで、過去のデータにより近い適合性を示す可能性がある。線形ベースラインは、その係数、射影、および失敗事例を直接検証できるため、価値がある。
よくある落とし穴
過去のチャネルを再推定する
現在のラインは以前のシグナルを書き換え、チャートが常に正確に見えるようにします。
R²を勝率に変換する
サンプル内における説明的適合度は、予測的な取引パフォーマンスとは異なる。
相場環境の変化に逆張りする
新しい情報によって金融商品の価格が再設定されると、古いチャネルは関連性を失う可能性がある。
この手法を使う前のチェックリスト
ご自身のデータで確認した項目にチェックを入れてください。進捗はこのブラウザに保存されますが、戦略の収益性を認定するものではありません。
よくある質問
回帰分析は常にボリンジャーバンドよりも優れているのでしょうか?
常に優れるわけではありません。傾きとモデル選択が増えるので、売買・約定規則をそろえて追加価値を比較します。
多項式を用いることで適合度を向上させることは可能か?
調査は可能だが、自由度が増し、外挿リスクも高まる。過去のデータとの類似性が高いというだけでは、より良い戦略を確立することはできない。
研究資料
各資料は、その横に記載された定義や根拠を支えています。擬似コード、架空の例、提案パラメータは別途検証が必要です。
- Linear Regression IndicatorFidelity. 回帰指標の終端値の定義を確認しました。 確認日: .
- statsmodels OLSstatsmodels. OLSの切片、欠損データ、当てはめの挙動を確認しました。 確認日: .
- Are the model residuals well-behaved?NIST/SEMATECH. 古典的な残差仮定を読みました。市場の予測可能性を結論づけたものではありません。 確認日: .
関連する手法
リスクについて
この内容は学習と研究設計を目的とし、金融上の助言ではありません。Backtestは過去データのシミュレーションであり、将来の成果を保証せず、実際の売買注文も行いません。このライブラリの手法が、そのままアプリで利用できる機能とは限りません。関連情報: 検証方法 および 学習センター.
実際の資金を使う前にルールを検証する
アプリの対応範囲、データ、個々の模擬取引を確認してください。高度な検出手法は別途実装が必要な場合があります。
App StoreでBacktestをダウンロード