記事の目次

根拠と適用範囲

Fidelity はリテストと出来高の少ない持ち合いを解説し、SMB は具体的なエントリーを振り返っています。これらは教育用の事例であり、ここで提案するアルゴリズムのバックテストではありません。

データと市場OHLCVは、明示的なセッションカレンダーを備えています。株式、先物、暗号資産の取引量には、個別のフィードと執行検証が必要です。
研究対象の時間足5分足チャートは日中取引の一例です。日足チャートでは、保有期間、ギャップ、資金調達に関する前提条件を独自に定める必要があります。
価格は高出来高で50を突破し、活動が落ち着いた後に50.05に戻り、その後継続が確認されます。図解を原寸で開く
ブレイクアウト・リテストシーケンスにおける合成イベント価格と出来高であり、バックテストや完全なOHLCシリーズではありません。

実践の流れ

実践手順: ブレイクアウト・リテスト(出来高あり):拡大、静かな押し戻し、そして継続
詳しい手順を以下に示します。各段階でデータ不足や条件不成立があれば、除外理由を記録します。
  1. 既知のレベルを突破するQ、ATR、突破時の RVOL を固定します。
  2. 最初のリテストを待つ指定されたバンドを8バー以内に受け入れるか、期限切れとなる。
  3. 出来高の収縮を測る同時刻の平均値 RVOL を比較します。
  4. 継続を確認する再テスト高値にバッファーを加えた水準を上回る終値が必要となる。
  5. 実行して比較する実際の約定を使い、戻らず上昇したため逃した機会も計上します。

リテストを待つと取引機会の集合が変わる

フィデリティは、調整局面における活動の低下に伴うブレイクアウトの再テストについて論じています([1])。SMBのレビューでは、ブレイクアウト後のエントリー位置が強調されています([2])。研究課題は、待つことでリスク/リターンが十分に改善され、二度と戻ってこない動きを補えるかどうかです。

ブレイクアウトは必ずしも再テストする必要はありません。戻ってきたチャートと反発したチャートのみを分析すると、エントリーポイントのない有力銘柄や、レベルを下回って失敗したブレイクアウトが除外されます。ブレイクアウトが発生した時点で候補を作成し、ステートマシンに再テスト、期限切れ、または失敗を分類させます。

出来高には、最初のブレイクアウト時の異常な活動、プルバック時の参加、継続時の活動再開という3つの役割が考えられます。これら3つすべてを満たすことが最善策だと考えてはいけません。出来高が少ないのは、需要不足や容易な下落を伴う場合もあるため、静かな再テストは支持の証拠ではなく、あくまで仮説にとどまります。

基準と最初の有効なリテストを固定する

提案されている強気の 5 分足バージョンでは、Q を t より前の 20 バーの最高値とし、t は除外します。A=ATR14[t−1]、b=max(2 ticks,0.10A)、eps=max(2 ticks,0.15A) を設定します。ブレイクには、C[t]>Q+b、C[t−1]≤Q、location(C−L)/(H−L)≥0.70、RVOL[t]≥1.5 が必要です。ゼロレンジのバーではこの比率を満たすことはできません。Q、A、および両方のバッファを固定します。

t+1 から t+8 の間で、安値が区間[Q−eps,Q+eps]に入り、終値が Q 以上となる最初のバー r を固定します。それ以前に終値が Q−eps を下回れば候補を取り消します。t+1 から r の平均 RVOL は、突破時の RVOL の0.7倍以下でなければなりません。不合格なら、このフィルター付き候補を拒否し、見栄えのよい後のリテストへ選び直しません。

r の後の3本以内で、最初に H[r]+b より上で確定した終値が信号になります。t+1 から信号のバーまでの最安値から b を引いた価格にストップを置き、その次の約定可能な提示価格で入ります。すべての期間と閾値は研究用の提案です。空売り版は価格関係を反転しますが、出来高の効果は別に検証する必要があります。

安値がリテスト帯を完全に下回っても、終値が Q より上へ戻る場合に注意します。ここでの「安値が帯の中にある」規則ではその足を r として認めません。帯と交差すればよい規則なら認める可能性がありますが、別の検出器として新しいバージョンを付けます。

H≤L のブレイクアウトバーを拒否します。未定義の終値比率はフィルターを免除しません。これは、基準レベルを超えてギャップしたゼロレンジバーの場合も同様です。

after_breakout_close(t):
  if H[t]<=L[t] or not complete_prior_features: reject(); return
  candidate = freeze(Q,A,b,eps,break_rvol,session_id,
                     cutoff=session_end-5_minutes,known_at=received_close_time(t))
  if received_close_time(t)>=candidate.cutoff: expire(); return
  r = None
  for u in t+1..t+8:
    if session_id(u)!=candidate.session_id or received_close_time(u)>=candidate.cutoff:
      expire(); return
    if C[u]<Q-eps: cancel(); return
    if first_valid_retest(u):
      r=u; break
  if r is None: expire_no_retest(); return
  if missing_rvol(t+1,r) or mean_rvol(t+1,r)>0.7*break_rvol:
    reject_volume(); return
  for u in r+1..r+3:
    if session_id(u)!=candidate.session_id or received_close_time(u)>=candidate.cutoff:
      expire(); return
    if C[u]<Q-eps: cancel(); return
    if C[u]>H[r]+b:
      stop=min(L[t+1:u+1])-b
      consume_candidate_then_order_on_next_quote_if_before_cutoff()
      return
  expire_no_confirmation()
# A session-close timer also expires waiting candidates when no new bar arrives.

同じ時間帯を比較する

提案されている RVOL_bar は、現在のボリュームを、過去の 20 セッションにおける対応する時間帯のボリュームの中央値で割ります。TradingView は、時間別相対ボリューム指標 [3] に平均値を使用しています。ここで使用されている中央値は、意図的な調査上の変動です。再テストせずに、一方の推定値の結果を他方の推定値に当てはめないでください。

1バーブレイクアウトと6バープルバックは、総出来高だけで比較すべきではありません。平均同時出来高RVOLは、期間と日中活動パターンの両方をコントロールします。セッションの短縮、停止、およびベースラインが利用できない場合は、都合よく代用した値ではなく、insufficient_dataを生成する必要があります。

RVOL≥1.2 のような信号バーの出来高増加閾値を別実験として追加できます。相対的な価格強度や EMA トレンドフィルターも、追加した効果をそれぞれ測ります。取引終了時の全日出来高や、後からその日の勝ち銘柄と分かった情報で、朝のエントリーを選べません。

条件を満たす合成リテストと失敗経路

Q=50、A=1、tick=0.01 なら b=0.10、eps=0.15 です。突破足が H50.80、L49.90、C50.70 なら、終値位置は0.80/0.90、約0.889で、出来高は RVOL2 とします。押し戻し中の RVOL が1.0,0.8と0.6なら平均は0.8で、上限1.4を下回ります。リテスト足の安値は50.05、高値50.35、終値50.15です。

次の終値50.50は50.45を上回ります。50.55で買い、観測済みの押し戻し最安値50.05を使えば、ストップ49.95、リスク0.60、2R目標51.75になります。確認型が、確認前に価格が Q に触れたことだけを理由に50.00で入ったとは主張できません。あらかじめ Q に指値を置く方式は、利用情報と約定経路が異なります。

確認前に 49.80 が確定すると、出来高が少なくても 49.85 を下回るため、候補はキャンセルされます。有効な約定後、ストップ執行 49.90 により、50.55 から 0.65 が失われます。価格が 8 本のバー内で再テストすることなく直接 52 まで上昇した場合、再テストなしと記録します。この上昇は、ポジションを保有していない戦略によって得られた利益ではありません。

結果を見る前に、まずは保護策を選びましょう。

プルバック全体の下にストップを置くことは、r のみの下にストップを置くこととは異なります。このベースラインは、t+1 からシグナルまでの既知の最小値を使用します。損失を出している取引を継続するためだけに、エントリー後に保護範囲を古いベースまで広げないでください。

確認後にのみ発注する方式では、次の提示価格が大きく飛んだ場合、事前に決めたリスクまたは見込み利益の基準で見送れます。すでに待機していたエントリー注文は、取消前に生じた約定を残す必要があります。これらの方式を一つの楽観的な約定モデルへ混ぜてはいけません。

提案する日中取引の基本版では、2Rの目標、保護ストップ、エントリーから20本後、またはセッション終了前のうち、最初に該当した条件で決済します。目標は実際の約定価格から計算します。スイングに追随する版には、未来の情報を使わないスイング検出器と、個別の統計が必要です。

相関性の高い複数の銘柄は、同じ市場ニュースを受けて急騰する可能性があります。個々の銘柄に全額を独立した予算として割り当てるのではなく、ポートフォリオのリスクを限定しましょう。スプレッドをストップ距離で割った値を記録しておきましょう。再テストストップがタイトな場合、少額の通貨コストでもRの大部分を消費する可能性があります。

ベースラインは、短縮セッションを含め、予定されているセッション終了時刻の5分前にエントリーカットオフを設定します。各候補は、session_id を保持し、VWAP が使用されている場合は、anchor_id も保持します。カットオフに達するか、セッションを変更するか、アンカーをリセットすると、保留中のイベントが終了します。信号後の提示価格もカットオフ前に到着する必要があります。セッションタイマーは、それ以上のバーが到着しなくても待機状態をキャンセルします。そのため、バーカウンターは翌朝まで継続できません。このカットオフは、記事で定義された研究上の選択です。

即時ブレイクアウトコントロールを含める

同じブレイクアウト対象から始め、ブレイクアウト後に買いを入れる場合、ボリュームフィルターなしで再テストを待つ場合、ボリュームフィルターを使って待つ場合を比較します。リスク予算と取引カレンダーは比較可能なものにしてください。約定あたりの期待値と、割り当てられた日数あたりのリターンを報告してください。

再テスト確率、待ち時間、ボリューム拒否、不約定、MAE/MFE、純利益を測定します。勝率が高くても、戦略が有力銘柄を逃すと総利益が低くなる場合があります。ボリュームが単に有利な局面を選択しているだけではないことを確認するために、時間、トレンド、ボラティリティによるマッチングコントロールを使用します。

時系列検証を使用し、重複する候補をグループ化します。単一の明確な最適値ではなく、近接する再テスト期間とRVOLの閾値を調べます。プレフィックスリプレイにより、Qが新しいブレイクアウト高値に追随しないこと、および最初の再テストの同一性が後のデータによって変化しないことが証明されます。

フィルタリングされていない候補テーブル(拒否理由もすべて含む)を保持してください。このテーブルがあれば、後続の研究者は、別の対象集団で選択プロセスを再実行することなく、各条件の機会費用を再現できます。また、一見より良い結果が、主に取引回数の減少によるものなのか、それとも真に異なる後続経路によるものなのかを明らかにすることもできます。

よくある落とし穴

反発したチャートのみを選択する

リテストなしとリテスト失敗の結果も、分母に不可欠です。

出来高が少ないということは常に強気を意味する

静かな活動だけでは、買いの支持は確立されない。

反発を見てQを買う

先に指値注文を置いていなければ、それは過去に遡った架空の約定です。

この手法を使う前のチェックリスト

ご自身のデータで確認した項目にチェックを入れてください。進捗はこのブラウザに保存されますが、戦略の収益性を認定するものではありません。

0/7 項目

よくある質問

再テストが発生しない場合、戦略は追撃を続けるべきでしょうか?

この版は、その値動きを見送ります。突破直後に入る方式は、即興の例外でなく比較対象となる別の分岐です。

再検査では、必ず同じ価格を対象とする必要があるのでしょうか?

いいえ。許容誤差はイベント発生前にティック単位およびATRで固定されています。その幅は検証対象のパラメータです。

研究資料

各資料は、その横に記載された定義や根拠を支えています。擬似コード、架空の例、提案パラメータは別途検証が必要です。

  1. Entry and Exit Strategy: What you need to considerFidelity / OCC. 書き起こしのリテスト、ブレイク失敗、出来高の議論を参照済み。バックテストではありません。 確認日: .
  2. How to improve your trading entriesSMB Capital. 2020年八月10日の ADT レビュー原文の書き起こしを参照済み。監査済みの戦略 P&L はありません。 確認日: .
  3. Relative Volume at TimeTradingView. 同じ時間帯で比較する RVOL の定義を参照済み。20セッションの中央値は本記事の別提案です。 確認日: .

関連する手法

リスクについて

この内容は学習と研究設計を目的とし、金融上の助言ではありません。Backtestは過去データのシミュレーションであり、将来の成果を保証せず、実際の売買注文も行いません。このライブラリの手法が、そのままアプリで利用できる機能とは限りません。関連情報: 検証方法 および 学習センター.

実際の資金を使う前にルールを検証する

アプリの対応範囲、データ、個々の模擬取引を確認してください。高度な検出手法は別途実装が必要な場合があります。

App StoreでBacktestをダウンロード