記事の目次
根拠と適用範囲
プラットフォームの資料とブライアン・シャノンのスライドは、計算、アンカー選択、押し目について説明しています。以下の提案アルゴリズムについて、独立に検証された収益率の時系列を示す資料ではありません。価格がVWAPに触れただけで利益の出る取引になるわけではありません。[1] [2] [3]
実践の流れ
- アンカーを定義するシグナル発生前に、固定した選択ルールと情報が利用可能になった時刻が必要です。
- データを選択してください個々の約定から正確に計算するか、HLC3による足単位の近似を使うかを決めます。
- その時点までの情報を累積する価格と出来高は、意思決定の締め切り時点までのみ使用してください。
- 価格の反応を待つ価格が線に触れるだけでは足りず、押し目の後の回復を条件にします。
- 段階的に検証する同じ取引候補を、現実的な約定コストを含めて比較します。
平均取引価格であり、保証されたサポートではありません
約定データによる正確なVWAPは、各約定の価格と数量の積を合計し、総数量で割って求めます。多くのチャート実装は個々の約定の代わりに各足のHLC3と出来高の積を使います。この近似値は足の時間間隔によって変わる場合があります。TradingViewは足単位の計算と選択可能なリセット期間を説明しています。[1]
アンカーとは、固定されたセッション開始日、既に発表された決算発表イベント、確定したブレイクアウト、または確定したスイングのことです。シャノンのスライドは意味のあるアンカーと傾斜を使用し、すべてのタッチを自動的な購入とはみなしません。[3] ラインからの距離は、選択されたサンプルに対する位置を示します。特定の市場参加者グループの正確なコストベースを明らかにするものではありません。
アンカリングはモデリング上の決定事項です。セッションアンカーは、その日の取引が平均的にどの水準で行われたかを問います。イベントアンカーは、そのイベント以降の取引がどの水準で行われたかを問います。どちらも普遍的に優れているわけではなく、視覚的に魅力的な複数のアンカーを平均しても、独立した証拠にはなりません。開始時間を選択する前に、質問を明確にしてください。
イベントの発生時刻と、情報が利用可能になる時刻
event_atとavailable_atは別々に保存します。月曜日に発生した安値の確認にその後の日足2本が必要なら、その安値をアンカーにできるのは水曜日の足が確定してからです。その時点で月曜日から線を描くことはできますが、水曜日の確認情報を使って月曜日の取引を再現してはいけません。
ニュースから生成されたアンカーには、戦略で実際に利用可能な公開タイムスタンプが必要です。価格変動後に割り当てられた改訂ファイルやラベルは、同時証拠とはみなされません。自由にドラッグできるチャートアンカーは探索には便利ですが、アルゴリズムとして使用するには明示的な選択ルールが必要です。TradingViewの描画ツールは、ユーザーが選択した開始点を記録します。[2]
また、代替と有効期限も定義してください。新しいブレイクアウトが発生した場合、古いアンカーを置き換えるのか、2つ目の独立した候補を作成するのか、それともアクティブなトレードをそのままにしておくのか。テストを行う前に決定してください。現在のポジションが不安に見えるたびにアンカーを置き換えると、リスクが静かに拡大し、表示されている過去のサポートを再現できなくなる可能性があります。
累積計算と事前に固定する条件
価格が一コインあたりの米ドルで、取引量がコインの数量である場合、加重された分子は米ドルとなり、結果は一コインあたりの米ドルに戻ります。数量を取引高に置き換えると、加重が変わります。累積取引量がゼロの場合は、NAを返します。以下のATRバッファと条件は、シャノンのシステムを完全に再現したものではなく、提案された実験的なルールです。
意思決定時刻までに受信した観測値だけで計算します。後から届く訂正データには、各時点で利用可能だった情報を扱う明文化した方針が必要です。チャートと約定エンジンを照合できるよう、価格の種類、アンカールールの版、数量単位、データ締切時刻を保存します。例示のトレンド条件はフィルターであり、エントリーには別の価格イベントが必要です。
傾きは、同じ選択済みアンカーから現在値と五本前の値を計算します。別のアンカーの保存値を再利用してはいけません。五本前までの累積数量も正である必要があります。アンカーが判明してから以前の区間を再計算することは現在の判断には使えますが、過去のシグナルを後付けすることはできません。
擬似コードでは、tとaはバーインデックスです。start_bar_indexはアンカールールによって選択された最初のバーであり、available_atはタイムスタンプです。バー内で発表されたニュースの場合、OHLCVバージョンはイベント発生時以降に始まる最初の完全なバーから始まります。トレードベースのバージョンは、イベント発生時の正確なタイムスタンプから開始できます。これらの表記法は区別してください。
anchor = first_confirmed_event(rule, data_asof=bar_close_time(t))
if anchor is None: return NO_SIGNAL
a, known_at = anchor.start_bar_index, anchor.available_at
if bar_close_time(t) < known_at: return NO_SIGNAL
pv = sum(((H[i]+L[i]+C[i])/3)*V[i] for i in a..t)
vol = sum(V[i] for i in a..t)
if vol <= 0: return INSUFFICIENT_DATA
avwap_now = pv / vol
trend_ok = False
if t >= a+5:
past_vol = sum(V[i] for i in a..t-5)
if past_vol > 0:
past_pv = sum(((H[i]+L[i]+C[i])/3)*V[i] for i in a..t-5)
avwap_lag = past_pv / past_vol
trend_ok = C[t] > avwap_now and avwap_now > avwap_lag
# Both values use this same anchor; only emit a decision now.
# The trade trigger remains separate from this example filter.
手計算と2つの失敗例
3 つの合成取引を考えてみましょう。10 単位を 100 で、20 単位を 102 で、10 単位を 99 で取引します。VWAP は (1000 + 2040 + 990)/40 = 100.75 です。加重平均なしの場合、約 100.333 ですが、最終価格は 99 です。これらは異なる質問に答えています。 H=102、L=99、C=99の取引を1つのバーに集約すると、HLC3は100となり、これは実際の取引VWAPとは0.75だけ異なります。
101の価格がVWAP、100.75を上回っていても、101での購入によるプラスの期待収益は確立されません。失敗の1つは、下降トレンドにおいて101から100.75を経て99へと進むことです。タッチするたびに購入することは、単に下落を捉えようとする試みを繰り返すことになります。2つ目の失敗は、将来のラインがいくつかの魅力的な反発に適合することを確認した後にのみアンカーを選択することです。
このチャートは、シーケンスを明確に示すために、固定された参考基準レベルを使用しています。実際のAVWAPは、新しいボリュームが到着するたびに更新されます。描画された水平レベルを完全な履歴VWAPシリーズであるかのようにインポートしないでください。その役割は、候補となる位置、プルバック、およびその後の回復を説明することです。
押し目には回復条件と無効化条件が必要
提案する買いの一例では、押し目が始まる前に所定のトレンド条件を満たす必要があります。最初の押し目がAVWAP ±0.15 ATRの領域に入り、その後3本以内に終値がテスト足の高値を超え、かつAVWAPより上で確定することを求めます。候補成立時にATRを固定します。損切りは押し目安値からバッファを差し引いた水準の下に置き、スプレッドとスリッページを含めて次の約定可能なイベントでエントリーします。
価格が承認前に許容範囲を下回って終値をつけた場合、または時間制限が経過した場合は、未成立の候補をキャンセルします。すべてのプルバックバーがVWAPより上に留まることを要求する戦略は、本来テストしようとしていた非常に一時的なテストを拒否する可能性があります。プルバック前のトレンド状態と回復状態を区別してください。
クロスオーバーを確認するには、昨日の終値を昨日のVWAPと比較し、今日の終値を今日のVWAPと比較します。両方の終値を今日の移動平均線と比較すると、イベントの定義が変わります。ポジションが成立したら、あらかじめ設定した構造的ストップまたは別途指定したトレーリングルールを維持してください。ストップ幅を広げるためにアンカーを移動しないでください。
平均回帰目標についても、明確な規約が必要です。イベント発生時に固定されたVWAP目標は、継続的に変動するVWAP目標とは異なります。後者の場合、各観測後に注文が修正されるかどうかを指定し、結果として生じる執行タイミングを考慮する必要があります。事後的にラインがリミットレベルを横切ったとしても、注文が約定したことの証明にはなりません。
同じ情報を二重に数えず、出来高条件を追加する
VWAPはすでに出来高で価格位置を重み付けしています。RVOLは基準に対して異常な市場参加を測るため追加情報になり得ますが、その上乗せ効果を測る必要があります。押し目中の出来高減少と回復時の出来高拡大を別々に検証してから組み合わせます。
VWAP バンドの場合、分散が取引またはバーのプロキシを使用するかどうか、ボリュームが重みにどのように組み込まれるか、および推定値がリセットされるタイミングを指定します。2 標準偏差の距離は、自動的に 95% 反転または平均への回帰の確率を意味するものではありません。トレンド、依存性、および観測値の分布は、この近道を無効にするものです。
視覚的に一致する2つの指標は、独立した統計的観測値ではありません。例えば、上昇中のVWAPを上回る価格と移動平均線を上回る価格は、多くの情報を共有している可能性があります。相関関係のある条件ごとに信頼度ポイントを加算するような恣意的なスコアを用いるのではなく、管理された比較を用いるようにしてください。
見栄えのよい線ではなく、アンカー選択ルールを検証する
セッション開始、ブレイクアウト確認、ピボット確認など、アンカールールの小さなセットを事前に登録します。同じ価格の候補について、VWAPなし、価格位置のみ、位置と傾斜、そして追加のボリュームフィルターを比較します。HLC3推定値の時間枠感度と、アンカーが遅れて利用可能になったために失われた機会の数を報告します。
履歴末尾へのデータ追加に対する不変性を確認します。過去の締切時点まで計算した後、後続データを追加し、すでに出力したシグナルが変わらないことを検証します。スイング確認後に表示上の過去の線が変わっても、シグナルログを書き換えてはいけません。anchor_rule_version、event_at、available_at、出来高の取得元、price_typeを保存します。
最後に、データ受信の遅延と現実的な実行条件の下で計算を再現します。純期待値、取引頻度、ドローダウン、および却下された候補を報告します。パフォーマンスが正確な終値約定に依存する場合、または各成功例ごとに異なるアンカーを選択する場合、有用な結果は、展開可能な取引優位性ではなく、実装上の警告となります。
よくある落とし穴
結果からアンカーを選択する
最終テストで多数のアンカーを試すと、偶然見栄えのよい線を選ぶ可能性が高くなります。
基軸資産の出来高を、決済通貨建ての売買代金に置き換える
これにより重み付けが変更され、異なる特徴定義が必要になります。
判明したばかりの終値で約定したと仮定する
魅力的な結果は、省略されたスプレッドと決定の遅延によって左右される可能性がある。
この手法を使う前のチェックリスト
ご自身のデータで確認した項目にチェックを入れてください。進捗はこのブラウザに保存されますが、戦略の収益性を認定するものではありません。
よくある質問
VWAPとAVWAPではどちらが良いですか?
主な違いは、選択する区間です。特定の質問に答えるためにアンカーを選択し、目的のデータで検証してください。
過去のスイング高値・安値をアンカーにできますか?
はい、しかしシグナルはスイングが確認された後にのみ開始できます。過去に線を引いたとしても、過去の取引は許可されません。
研究資料
各資料は、その横に記載された定義や根拠を支えています。擬似コード、架空の例、提案パラメータは別途検証が必要です。
- Volume Weighted Average Price (VWAP)TradingView. バーベースのVWAP計算とアンカー/リセット期間。 確認日: .
- Anchored VWAP drawing toolTradingView. アンカー付きVWAP描画ツールで、ユーザーが選択する開始点。 確認日: .
- Specific Anchored VWAP StrategiesBrian Shannon / CMT Association. アンカー、傾斜、引き戻しに関する公開スライド。有料書籍を全て読んだというわけではない。 確認日: .
関連する手法
リスクについて
この内容は学習と研究設計を目的とし、金融上の助言ではありません。Backtestは過去データのシミュレーションであり、将来の成果を保証せず、実際の売買注文も行いません。このライブラリの手法が、そのままアプリで利用できる機能とは限りません。関連情報: 検証方法 および 学習センター.
実際の資金を使う前にルールを検証する
アプリの対応範囲、データ、個々の模擬取引を確認してください。高度な検出手法は別途実装が必要な場合があります。
App StoreでBacktestをダウンロード