VWAPとRSIの組み合わせ — 実勢平均と勢いを別レイヤーで読む考え方

VWAP(出来高加重平均価格)と RSI(相対力指数)は、どちらも単独で使われることが多い指標ですが、見ているものはまったく異なります。VWAP は「現在の価格が、出来高で重みづけした実勢平均からどれだけ離れているか」を、RSI は「直近の値動きが上下どちらに、どれくらい偏っているか」を表現する指標です。

本記事では、この 2 つを組み合わせた場合に何が見えてくるのか、cBot として実装する際の設計上の論点を整理します。あくまで「設計の参考」としての位置づけで、特定の数値設定が成果を保証するものではありません。

価格とVWAPを上段、RSIを下段に配置し、両者が同方向に揃った局面と中立局面を比較する模式図

VWAP の役割

VWAP は、一定期間の価格を出来高で加重平均した指標です。多くのプラットフォームではセッション開始からの累積で計算され、機関投資家が約定の妥当性を確認する際の基準として参照されることもあります。日中の値動きにおいて、「市場参加者が出来高ベースで集中して取引した価格帯」を視覚化するイメージです。

単純な移動平均との違いは、出来高の少ない時間帯よりも、出来高の多い時間帯の価格が中心線に強く反映される点です。これにより、薄商いのヒゲや一時的なスパイクの影響を受けにくくなる傾向があります。

単独利用時の限界として、VWAP は「方向そのもの」を示す指標ではなく、あくまで「実勢平均との位置関係」を示すに過ぎないという性質があります。価格が VWAP の上にあるからといって、勢いが伴っているかどうかまではこの指標から直接は読み取れません。また、日付をまたいでリセットする実装が多いため、長期トレンドの分析にはそのままでは向いていません。

RSI の役割

RSI は、一定期間内の上昇幅と下降幅の比率から、相対的な勢いを 0〜100 のレンジで表現する指標です。一般的には 70 を超えると「買われすぎ」、30 を下回ると「売られすぎ」とされる目安があり、レンジ相場での反転局面を把握する材料として用いられることが多い指標です。

RSI は「価格そのものの絶対値」ではなく「直近の値動きの偏り」を見ているため、レンジでは反転候補を捉えやすい一方、トレンド相場では 70 や 30 を超えた状態が長く続くことがあり、単純な逆張りシグナルとして読むには注意が必要です。

単独利用時の限界としては、RSI には「現在の価格が、実勢の中心からどの程度離れているのか」という位置情報が含まれていない点が挙げられます。同じ RSI 70 でも、価格が VWAP のすぐ上にいるのか、はるか上方にいるのかでは、その後の挙動の意味合いが変わってくると考えられます。

なぜこの組み合わせか

VWAP と RSI は、参照しているデータも次元も異なります。VWAP は「価格と出来高」から実勢平均の位置を、RSI は「直近の終値の変化幅」から勢いの偏りを表現する指標で、片方は位置、もう片方は勢いを担当しているイメージです。

この役割分担を活かすと、「現在の価格が実勢平均からどちら側にどの程度離れているか」と「直近の勢いが上下どちらに偏っているか」を、別レイヤーで切り分けて整理しやすくなります。

たとえば、価格が VWAP の下にあり、同時に RSI が 30 付近まで下がっている場合、「実勢平均よりも下方に位置し、勢いも売り側に偏っている」と読めます。一方、価格は VWAP の下なのに RSI が 50 付近にあるなら、「位置としては下方だが、勢いの偏りは小さい」という別のニュアンスになります。

この組み合わせは、片方だけでは判断しにくい「位置と勢いが一致しているか、ずれているか」を見るための材料として機能することが期待できます。位置と勢いがそろった局面と、どちらか片方しか満たさない局面を分けて扱う設計につなげやすい構造です。

パラメータをどう考えるか

VWAP は計算上の自由度がそれほど高くなく、主に「どの単位でリセットするか」が論点になります。デイトレ前提ならセッション単位、もう少し長い視点で見たいならローリング VWAP のような実装も選択肢になります。

RSI の期間設定は、短くするほどシグナルの頻度は増えますが、ノイズも増える傾向があります。長くするほど反応は鈍くなりますが、ダマシは減りやすいと一般に言われます。14 期間が広く使われている基準値ですが、時間足や対象銘柄によって最適点は変わるため、バックテストで挙動を確認したうえで扱うのが安全と考えられます。

「これが正解」というパラメータは存在しません。短期向けには反応の早い設定、長期向けには反応のゆるやかな設定という方向性で当たりをつけ、検証で詰めていく流れになります。

cBot化する際の考慮点

cBot として実装する際は、両者を「どの粒度で判定するか」を明確にする必要があります。VWAP は当日累積で計算するのか、ローリングで計算するのか、RSI はどの足で算出するのか、といった前提を最初に固めておきます。

データの取り方としては、OnBar イベントでの判定がシンプルですが、VWAP の累積計算は分足以下では端数の扱いに注意が必要です。RSI は十分なバー数が確保できないと値が安定しないため、ヒストリーが揃ってからロジックを有効化する設計にしておきます。

// 例: VWAP と RSI を両方参照する判定の骨組み
double rsi = Indicators.RelativeStrengthIndex(Bars.ClosePrices, 14).Result.LastValue;
double vwap = Indicators.VWAP().Result.LastValue; // カスタム/ビルトインに応じて
double price = Bars.ClosePrices.LastValue;

bool priceBelowVwap = price < vwap;
bool rsiOversoldZone = rsi < 30;

if (priceBelowVwap && rsiOversoldZone)
{
    // 位置と勢いが同方向にそろった局面として扱う
}

エッジケースとしては、セッション開始直後で VWAP の母数が十分に積み上がっていない時間帯、経済指標前後のスプレッド拡大、ヒストリー欠損などが挙げられます。これらの局面では判定を保留する設計が無難です。

また、VWAP と RSI の判定結果をそのままエントリーに直結させるのではなく、「フィルター」として運用する設計にしておくと、後からトレーリングや時間フィルターを追加しやすくなります。ポジション管理(部分利確・損切り)との接続も、別レイヤーで設計しておくと保守性が上がります。

実装の流れ

実装上のおおまかな流れは、入力 → 並列計算 → 状態フラグ判定 → 整合性出力 の 4 ステップに分けて整理すると見通しがよくなります。

入力からVWAP・RSI並列計算、状態フラグ判定、整合性フラグ出力までのcBot実装フロー図

入力ステップでは、価格バーと出来高、セッション定義を取り込みます。並列計算では VWAP と RSI を独立に算出し、互いの計算順序を絡ませないようにします。状態フラグ判定では、価格が VWAP の上か下か近辺(緩衝帯)か、RSI が 50 を境にどちら側か、過熱・過冷ゾーンに入っているかをラベル化します。整合性出力ステップでは、両者の状態を突き合わせて「同方向にそろった」「ずれている」「中立」といったフラグを返します。

このレイヤーは、エントリーシグナルそのものではなく「整合性の前提条件」を返す設計にしておくと、上位戦略から差し替えやすくなります。実際の発注・管理(サイズ・損切り・利確・トレーリング)は別モジュールに分離し、結合度を下げておくと保守性が上がります。イベントとしては、OnBar での確定足ベースの判定をベースにし、必要に応じて OnTick での補助判定(スプレッド監視など)を加える構成が扱いやすい構造です。

どう活用するか

自作派の方は、Claude Code を使った cBot 開発のたたき台として本記事の構造を流用していただけます。位置判定(VWAP)と勢い判定(RSI)を別関数に切り出して組み合わせる設計は、他の組み合わせ(移動平均 + RSI、VWAP + ボリンジャーバンドなど)にも横展開しやすい形です。

委託派の方で「VWAP と RSI を組み合わせた cBot を作りたい」という相談がある場合は、ai-programming.xyz の個別実装相談から要件をご相談いただけます。本記事の論点(リセット単位・期間・エッジケース)が、最初の要件整理シートとしてそのまま使える構造になっています。

教育目的では、スクール教材として「指標の役割分担をどう考えるか」を学ぶ題材として、本記事の構造を参考にしていただけます。

本記事は一般的な情報提供を目的としています。投資助言ではありません。 取引判断はご自身の責任で行ってください。