記事の目次
根拠と適用範囲
取引所の資料はデータフィールドの意味を、注文フロー研究は背景を説明します。いずれも本稿が提案する吸収・ダイバージェンス検出器の収益性を検証したものではありません。
実践の流れ
- フィードをチェックテイカー側の分類、数量単位、時刻を確認します。
- 別々の仮説を測定する吸収とCVDダイバージェンスを混同せず、それぞれを計算します。
- 価格の確認を待つ必要な特徴量が利用可能になった後のリクレイムを使います。
- 約定と保護をモデル化約定可能な気配、スプレッド、イベント極値を使います。
- サンプル外検証価格のみに基づく挙動とレイテンシーによるストレスと比較してください。
2つの異なる観察結果
各約定には買い手と売り手がいます。デルタの符号は流動性を取る側で決まり、買いテイカーの約定量から売りテイカーの約定量を引きます。CVDは定めたリセット時点からデルタを累積します。Bybitの公開約定データにあるSフィールドはテイカー側を示します [1]。強制清算フィードの同名フィールドが同じ意味とは限りません。
強気吸収仮説は、大幅な売り圧力に見舞われながらも、下落幅が限定的である状況を指します。このような状況では、CVDはより低い安値をつける可能性があります。一方、強気ダイバージェンス(CVD)は、より低い安値と、その安値におけるより高いCVDの値を必要とします。これらの条件は互換性がなく、互いに矛盾する可能性があります。
買い板の反復補充は表示流動性についての観測であり、参加者の特定ではありません。気配の消失は取消しでも約定でも起こります [2]。「吸収の代理指標」と呼び、特定の機関が価格を支えていると断言せず、測定した内容を示します。
吸収とダイバージェンスを別々に検出する
提案されている強気吸収プロキシは、既知のサポートS付近で動作します。W=30秒間、売りボリュームは過去の同時刻の95パーセンタイルを超え、sell/(buy+sell)は少なくとも0.70である必要があり、ウィンドウ開始からの下落ミッドプライス変動は、直前までの1分足ATRの0.15以下でなければなりません。十分な総ボリュームと途切れないフィードが必要です。これらの閾値は研究提案です。
代理指標の成立後、S+bufferより上の終値を確認するまで、完成した1分足で最大K=3本待ちます。終値確認後に利用可能な気配だけでエントリーし、イベント全体の安値からバッファを引いた水準より下に保護注文を置きます。弱気版ではフローと価格の方向を反転します。
ダイバージェンスを確認するには、left=right=2 の 2 つの価格ピボット安値を使用します。2 番目が確認された後、P2<P1−buffer と CVD(time_P2)>CVD(time_P1)+delta_min を要求します。CVD を、独立して選択された 2 つの魅力的な CVD 安値ではなく、2 つの価格ピボットのタイムスタンプで比較します。両方のポイントは同じリセットウィンドウに属している必要があります。2 番目のピボットは、右側の 2 つのバーが表示された後にのみ使用可能になります。
吸収の測定窓とリクレイムの待機窓を結び付ける規則も必要です。候補を有効にするときに元の支持水準、イベント開始時刻、安値を保存します。好都合な反発が出るまで、開始点を最新の大量売りの窓に繰り返し移動してはいけません。
分類されていない取引またはフィードギャップがあると、両方のエンドポイントに数値が含まれている場合でも、後続の CVD が不完全になります。新しいリセットまたは復元されたデータからの正常な再構築が行われるまで、累積セグメントは使用不可としてマークされます。分類されたフローがその期間全体にわたって完了している場合にのみ、ピボットを比較します。両方のピボットの前の未知のオフセットは数学的に相殺できますが、そのためには共有オフセットと完全な増分が必要です。この保守的なベースラインでも、有効なセグメントが必要です。
on_trade(tr):
if tr.id in seen_ids: return
if tr.taker_side not in {BUY,SELL} or not valid_size_and_feed(tr):
mark_window_and_cumulative_segment_unavailable_until_reset_or_rebuild(); return
seen_ids.add(tr.id)
signed_size = (+1 if tr.taker_side == BUY else -1)*normalized_size(tr)
delta_bucket += signed_size
CVD += signed_size
on_window_close(t):
if not full_window_and_prior_baseline_available(t): return
absorption = near_frozen_support and total_size>=configured_minimum
absorption &= sell_share>=0.7 and sell_size>past_p95
absorption &= downward_excursion<=0.15*ATR_before_window
if absorption and no_active_event:
arm_reclaim_candidate(known_at=window_data_ready_at,expiry=fixed_deadline)
on_price_pivot_confirmation(p2,t):
p1 = previous_confirmed_price_low(p2)
if p1 is None or not same_cvd_reset(p1,p2): return
if missing_cvd_at_either_pivot(p1,p2): return
if not complete_classified_flow_between(p1.occurred_at,p2.occurred_at): return
if not cumulative_segment_valid(p1,p2): return
divergence = p2.price<p1.price-buffer and cvd_at(p2)>cvd_at(p1)+dmin
if divergence and no_active_event:
arm_candidate(known_at=received_confirmation_time(t))
# Unclassified trades never default to SELL; overlapping windows do not reset TTL.
時刻、売買分類、出来高の単位
イベント時刻、受信時刻、取引ID、接続状態を保持してください。ローソク足の色や上昇ティックによる近似値は別の推定値です。それに応じて名前を付けてください。特に、この推定値では、ほとんど変化のない価格系列と大量の売りを確実に区別することはできません。生の取引とその集計値を二重にカウントしないでください。
数量は固定の単位に正規化します。価格が大きく動くと、コイン数量ベースのCVDと想定元本ベースのCVDは異なる挙動を示します。インバース契約は独自の数量仕様が必要で、数量×価格を一律に使えません。パーセンタイルの基準には現在の測定窓を含めません。
CVDは完了したテイカー約定のフローです。OFI研究は気配更新も考慮する動機を与えます [3]。ただしL2データを加えてもアイスバーグ注文の所有者は分かりません。S付近の買い板補充統計は有用な可能性がありますが、更新の一括配信や隠れた流動性のため不完全です。特徴量名と根拠の説明でもこの区別を保ちます。
合成例:吸収後の利益とダイバージェンス後の損失
S=100、その前のATR=2とbuffer=0.10を考えます。30秒で、買いボリュームは20、売りボリュームは100となり、delta−80、売りシェアは83.3%となります。過去の売りパーセンタイルは70です。中間価格は100.10から最低値99.85まで下落し、0.25だけ変動して、0.30の制限を下回ります。CVDが急落しているにもかかわらず、これは吸収プロキシとして適格です。
次のバーは 100.20 で終値となります。100.25 で買い、ストップは 99.75、ターゲットは 101.25 で、リスクは 0.50、報酬は 1.00、またはコスト控除前で 2R となります。利用可能な価格が既に 100.60 の場合、その固定ターゲットに対する報酬は 0.65 に低下し、リスクは 0.85 に上昇します。事前に宣言された最小報酬/リスクルールによりエントリーが拒否される可能性があります。バックテストでは、利用できない 100.25 の約定は保持できません。
別のダイバージェンス失敗例では、同一セッションの価格安値が100と99.50で、その時点のCVDがそれぞれCVD−500と−420です。確認とリクレイム後に100.15で買いが約定し、ストップ設定は99.40です。価格はさらに下落し、保護注文が99.35で約定して0.80を失います。ダイバージェンスがあっても、指値買いの消失や新たな売り波は防げません。
価格確認と執行は依然として重要である
価格が下落し続ける間、同じプロキシが複数の期間にわたって継続する場合があります。重複する期間をイベントとしてグループ化し、1回のエントリーまたは有限の再エントリーポリシーを指定します。有効期限切れ、古いデータ、過度のスプレッド、または確認前に事前に定められたさらなるブレイクが発生した場合は、キャンセルします。
エントリー価格の改善を狙う受動的な指値注文は、リクレイム後の買いとは別方式です。未約定の多さや逆選択で、良い価格という見かけ上の利点が失われる場合があります。リプレイでは過去の最終約定価格への接触だけでなく、注文が市場に届いた時点の流動性を確認します。
固定R、既知のVWAP目標、構造に基づく目標は別々の決済方式です。午前中の取引に当該セッションの最終VWAPは使えません。契約を課金時刻をまたいで保有する場合は、手数料、スリッページ、資金調達料を含めます。
ピボットの確認を待つ間に、どれだけの反発が発生するかを測定してください。視覚的に魅力的な乖離は、経済的には遅れている可能性があります。シグナルが出る前に既に目標値に達していた候補銘柄については、早期の反発を確定した戦略で得られる利益として扱うのではなく、機会損失として報告してください。
デルタ情報の追加効果を測る
同じ参照値、時間、ボラティリティで価格のみのリクレームをコントロールとして使用します。吸収のみ、ダイバージェンスのみ、およびそれらの組み合わせを比較します。条件を追加しても、必ずしもリターンが向上するとは限りません。最終的に選択されたトレードの勝率だけでなく、確認と約定が行われた候補を報告します。
想定システムに応じ、例えば100–500msの追加遅延を加えて耐性を検証し、切断区間を別に分析します。これは提案するテストで、全システム共通の遅延仮定ではありません。スプレッド一つ分のコストで結果が消えるなら、その脆弱性を記述します。
各取引所を個別に評価し、その市場固有のフローと他市場にも通用するシグナルを区別します。CVDリセット、ピボット確認の遅延、イベントの重複、パーセンタイル推定は、図の見た目以上に結果を変えます。前処理を版管理し、データ不足の印を見える状態に保ちます。
ユニットシナリオには、取引量がゼロの期間、攻撃側が欠落している期間、重複する取引ID、ピボット間のリセット、期間終了後に到着する遅延取引などが含まれるべきです。これらのケースは、単に算術演算がエラーなく実行されるかどうかではなく、機能の経済的な解釈を検証するものです。
よくある落とし穴
メカニズムを統合する
吸収とCVD安値更新は同時に起こり得ます。ダイバージェンスを必須にすると、測りたい現象を除外する可能性があります。
一つの取引所を市場全体とみなす
別の取引所では、異なる方向や逆方向の積極的な約定フローが生じることがあります。
板の数量減少をすべて売りとみなす
表示数量は取消しでも消えます。アグレッサー側に基づくデルタの計算には約定データが必要です。
この手法を使う前のチェックリスト
ご自身のデータで確認した項目にチェックを入れてください。進捗はこのブラウザに保存されますが、戦略の収益性を認定するものではありません。
よくある質問
高出来高と長いヒゲだけで吸収を証明できますか?
これは、OHLCVの弱いプロキシにすぎません。この定義には、分類された積極的なフローと価格推移の測定が必要です。
CVDのダイバージェンスは、即座に取引を誘発する可能性がありますか?
これは特徴量であり、完結した売買システムではありません。本稿では未来情報を使わない価格トリガーを待ち、エントリー規則を別に定めます。
研究資料
各資料は、その横に記載された定義や根拠を支えています。擬似コード、架空の例、提案パラメータは別途検証が必要です。
- Public TradeBybit. テイカー側、約定時刻、IDのフィールド説明を参照しました。戦略の検証ではなくデータ仕様です。 確認日: .
- OrderbookBybit. 表示数量、スナップショット・差分更新、公開板情報の限界を参照しました。 確認日: .
- The price impact of order book eventsCont, Kukanov and Stoikov. 約定フローと気配に関する研究を参照しました。本稿の吸収/CVD検出器をテストした研究ではありません。 確認日: .
関連する手法
リスクについて
この内容は学習と研究設計を目的とし、金融上の助言ではありません。Backtestは過去データのシミュレーションであり、将来の成果を保証せず、実際の売買注文も行いません。このライブラリの手法が、そのままアプリで利用できる機能とは限りません。関連情報: 検証方法 および 学習センター.
実際の資金を使う前にルールを検証する
アプリの対応範囲、データ、個々の模擬取引を確認してください。高度な検出手法は別途実装が必要な場合があります。
App StoreでBacktestをダウンロード