記事の目次

根拠と適用範囲

2016–2023について著者らは総リターン+1,637%、IRR41.6%、シャープレシオ2.81、最大ドローダウン12%を報告。手数料は一株$0.0035で、独立したスリッページモデルはない。公表研究の結果であり、新規再現実験や監査済み取引口座ではない。[1]

データと市場主な研究対象は米国株。先物、暗号資産、取引の休止時間がある市場には、別の仮説と約定モデルが必要だ。
研究対象の時間足五分間の寄り付きレンジ。約定研究にはイベント単位または秒単位のデータを使う。
価格は寄り付きレンジ高値50.30に達し、後に50.34で約定して51.14まで上昇。保護ストップはエントリー約定値より0.20下にある。図解を原寸で開く
合成データ。最初の5つの観測値は開始ウィンドウを示し、それ以降の点は時間間隔が異なる選択されたイベントを示しています。取引量は千株単位です。

実践の流れ

実践手順: RVOLを使用したオープニングレンジブレイクアウト:ルールと証拠
詳しい手順を以下に示します。各段階でデータ不足や条件不成立があれば、除外理由を記録します。
  1. 履歴を準備するセッション前に利用可能な銘柄ユニバースと過去入力を用意する。
  2. 寄り付き集計時間の終了を待つ五分間のウィンドウが完了するまで待ち、データの利用可能時刻を記録する。
  3. RVOL ランクを凍結します選択した銘柄、方向性、および資本予算を確定します。
  4. エントリーストップを送信処理後に注文を有効化し、拒否された注文と見逃された注文は保持する。
  5. 保護して清算する実際の約定数量を保護し、セッションの予定時刻にポジションを決済する。

出来高が銘柄を選び、価格が方向性を示す。

多くの銘柄は取引開始直後に大きく値動きする。検証可能な仮説は、その銘柄の通常の取引開始時と比較して取引量が異常に多い場合、ブレイクアウトの挙動は異なる条件を持つというものである。相対的な出来高は買い手と売り手を特定するものではない。成立した取引には必ず買い手と売り手の両方が存在する。方向性は別の価格ルールから導き出されなければならず、出来高は参加の度合いを測る指標となる。

寄り付き相対出来高を RVOL(d) = V(d, opening window) / mean(V(d−j, same window), j=1…14) と定義する。分母は過去のセッションから利用可能でなければならない。最初の五分と一日全体の平均出来高を比べると、問いも時間単位も異なる。TradingView は累積出来高と同じ時刻の出来高を区別しているため、実装は一つの定義を一貫して用いる。[3]

RVOLが4だからといって、RVOLが1の場合の期待収益の4倍になるとは限りません。活発な取引は、ニュース、スプレッドの拡大、取引停止、または報告修正などに関連して発生する可能性があります。通常の始値取引量が少ない銘柄でも、絶対的な取引量が少なくても、驚異的な比率になることがあります。したがって、適格性フィルターと執行評価は、最終的な取引決定よりも前に実施する必要があります。

ボリュームフィルターの経済的貢献度は、実証的な問題である。リスクとエクスポージャーを同程度に保ちながら、RVOLを使用した場合と使用しない場合で、同じ価格ルールをテストする。そうしないと、より良いエクイティカーブは、選択されたグループにおける取引回数の減少またはポジションの増加を反映しているに過ぎない可能性がある。

論文の構成と実装上の選択肢を分離する

参照設定は、始値が$5を上回ること、直前14日間の平均出来高が少なくとも百万株であること、ATR14が$0.50を上回ること、および五分間のRVOLが少なくとも一である銘柄の上位20銘柄を使用します。寄り付きの足が陽線ならロングのブレイクアウト、陰線ならショートのブレイクアウトとし、同事線は除外します。ストップは約定価格から0.1 ATRの距離に置き、ポジションは当日中に決済します。リスクは割り当て資本の1%、レバレッジの上限は四倍です。[1]

以下は提案する実装仕様であり、論文による追加の主張ではない。America/New_York の取引所カレンダーを用い、夏時間と短縮取引日を扱う。欠損した過去ウィンドウは利用不能であり出来高ゼロではない。遅延した寄り付き足はデータを実際に受信した後だけ使える。

銘柄ユニバース、寄り付き時間帯の OHLC、日足 ATR、過去14回の出来高、最終順位を含む選択スナップショットを固定する。同順位は安定した銘柄IDで解決する。突破を見てから銘柄を追加してはいけない。条件を満たす銘柄が12だけなら、未使用の配分を残すか再配分するかをリターン検証前に決める。

スナップショットには、イベント発生時刻と可用性時刻の両方が記録される必要があります。ベンダーは、後で修正を行う際に、バーを09:35の時点でタイムスタンプ付けすることができます。最終的に修正された履歴からすべての決定を再構築すると、元の注文処理で利用可能だった情報セットとは異なる情報セットが記述されます。

ステートマシンは遡及的なエントリを防止します

新規注文が存在するのは選択・処理・送信の後だけである。それ以前の価格突破で後発注文は約定しない。ストップ成行注文が有効になった時点で価格が既にトリガーを越えていれば、現在の市場価格付近で即約定する場合がある。以前のトリガー価格を約定値とするのは、実在しない有利な約定を作ることになる。

実際の約定に基づいて保護ストップを構築します。部分約定の場合は、既に約定した数量に対する保護に加え、未約定の残りの数量に対するポリシーも必要となります。空売り拒否、借入不可、またはブローカーリスクによる拒否は、システムに記録される結果です。これらのケースを密かに除外すると、残った取引サンプルが実際の機会セットよりも実行しやすいように見える可能性があります。

選択済み、送信済み、一部約定、保護済み、決済済み、拒否の状態を明示する。各遷移に時刻と数量を付け、エントリー直後の急反転に保護注文が間に合ったかを確認できるようにする。

on_opening_range_ready(session):
    snapshot = freeze_available_data(session)
    candidates = rank_eligible_by_rvol(snapshot)
    selected = candidates[:20]
    for asset in selected:
        side = sign(asset.or_close - asset.or_open)
        if side == 0: continue
        trigger = asset.or_high if side > 0 else asset.or_low
        submit_stop_after_processing_delay(asset, side, trigger)
on_entry_fill(fill):
    stop_distance = 0.1 * frozen_daily_atr[fill.asset]
    protective_stop = fill.price - fill.side * stop_distance
    protect_filled_quantity(fill, protective_stop)
on_session_liquidation_deadline():
    cancel_pending_entries()
    close_remaining_positions()

割り当てられた資本は、総口座資本とは異なります。

仮想の$100,000口座を、各$5,000の20個の資本枠に分ける。ある枠の1%をリスクとするなら一銘柄$50だ。口座全体の1%と誤読すると一銘柄$1,000となり、レバレッジ以前に二十倍違う。似た戦略名の実装を比較する際もこの違いは重要だ。

ストップ距離を$0.20とし、コストをまだ含めていない場合、損失予算$50では250株の保有が可能です。株価が$50の場合、想定元本は$12,500となり、現金配分$5,000を超えます。したがって、実際の規模は、リスク制限、想定元本制限、借入可能額、および残りのポートフォリオ容量のうち最小値を満たす必要があります。

ポートフォリオのレバレッジ上限は、同時進行するすべての取引をその上限サイズで行うことを許可するものではありません。発注済みの注文に対してはリスクを留保し、キャンセルまたは拒否された場合にそのリスクを解放してください。そうしないと、個別に有効な注文であっても、複数同時に約定した場合、全体として上限を超えてしまう可能性があります。

予定したストップ損失と実際の極端な損失を区別する。相関した銘柄は同時にストップをギャップで飛び越えることがある。全ストップが予定どおり約定した場合の計画損失を報告し、スプレッド拡大、保護遅延、不利なギャップの影響を検証する。二十銘柄は二十の独立したリスクを保証しない。

仮想の成功例、失敗例と足内順序の曖昧さ

寄り付きレンジを O=50、H=50.30、L=49.90、C=50.20 とする。出来高600,000株に対して過去平均200,000株なので RVOL=3。事前の日足 ATR は2。選択が完了してから50.30の買いストップが50.34で約定し、保護ストップは50.14となる。引け時に51.14で売れば一株$0.80の利益、R=$0.20としてコスト前4Rだ。

同じ初期設定でも、反転によって50.10でストップロスが約定する可能性があります。損失は一株あたり$0.24、手数料控除前では1.2Rとなります。本来のストップレベルは50.14であったため、−1Rまで強制的に戻してはなりません。この差額こそが、狭いストップロスが拡大させる可能性のある約定リスクです。

ベンダーが後日、開始数量を600,000から150,000に変更した場合、元の受領値と変更後の値を別々に保存してください。前者に基づくライブ判定は、後者が選択時に既知であったかのように評価することはできません。

1本のOHLCバーには、エントリー価格とストップ価格の両方が含まれることがありますが、その順序は明らかにされません。より細かいデータを使用するか、保守的および楽観的な境界を報告してください。勝ちとなるイントラバーシーケンスを選択することは、中立的な単純化ではありません。有用な単体テストでは、同一のOHLCを持つ2つのティックパスを構築し、シミュレーターがそれらの異なる結果を認識することを確認します。

実際の範囲内で公開結果を読んでください

公開されている QuantConnect の実装では、1,000 の株式ユニバースと Sharpe 2.396 を使用した 2016 テストが報告されています。その説明では、初期の Python バージョンと C# 実装の違いが明らかにされています。[2] これは再現の出発点として有用ですが、8 年間の研究全体を独自に検証するものではありません。

論文のラベルはIRRのままにしてください。回帰アルファはCAGRではありませんし、ポートフォリオヒット率を分母を明示せずに取引当たり勝率と改名することはできません。リターンの算出方法の違いにより、総リターンが似ていても年率換算の数値が異なる場合があります。

提案されたアブレーションでは、A:価格のみのORB、B:ORBにRVOLしきい値を加えたもの、C:しきい値にトップ-20ランキングを加えたものを使用します。同じロックされた評価カレンダー上で、機会数、受諾された注文、実際の約定、回転率、純結果を比較します。コストは、想定元本のわずかな割合としてだけでなく、各取引のRに対する相対値として報告します。

最終的なエクイティカーブを比較する前に、日々の対象となる銘柄群、選択されたシンボル、トリガーとなるタイミングと数量を比較してください。ここで不一致が生じた場合は、ルールまたはデータの問題です。スリッページを調整して最終的なリターンを一致させようとすると、この問題が隠蔽されてしまいます。信頼できる再現では、残りの不一致を記録し、その後、真に手を加えていない期間を評価します。

よくある落とし穴

終値情報に基づく始値のランキング

09:35には全セッションの出来高は利用不能。これを寄り付き取引の選択に使うと先読みになる。

狭いストップと非現実的に低いコストを組み合わせる

わずか数セントのスプレッドやスリッページでも、リスクRの大部分を消費する可能性があります。リスク単位でのコスト分布を報告してください。

保護を一足遅らせる

エントリーの次の足までストップを作らないと、直後の反転に間に合わない場合がある。実際の処理時間の仮定を用いて、エントリーから保護までの順序をモデル化する。

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

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

0/8 項目

よくある質問

RVOLの高値は、情報通の投資家が買いを入れていることを意味するのでしょうか?

いいえ。これは異常な取引完了状況を測定するものです。取引の方向性や参加者の身元については、別の証拠が必要です。

開始範囲を15分に変更できますか?

はい、別々にテストされたバリアントとして。過去のボリュームウィンドウを15分に合わせ、後からのエントリ、異なる停止、コスト、および追加の研究試験を考慮に入れます。

研究資料

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

  1. A Profitable Day Trading Strategy For The U.S. Equity MarketZarattini, Barbon, Aziz — 16/02/2024. PDF全文を読了。表2はPDFの物理ページ17、印刷ページ16。結果は著者の前提によるもので、新たなバックテストは実施していない。 確認日: .
  2. Opening Range Breakout for Stocks in PlayDerek Melchin — QuantConnect. 記事、サンプルコード、実装に関する議論を読みました。コードは実行していません。 確認日: .
  3. Relative Volume at TimeTradingView. 同時期の相対的な取引量を定義する主要な資料です。ORBの収益性を確立するものではありません。 確認日: .

関連する手法

リスクについて

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

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

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

App StoreでBacktestをダウンロード