VWAP メモ

楽天証券の口座でデイトレの自動売買に挑戦しようと Windows / Excel 上で利用できる マーケットスピード II RSS を活用してリアルタイムで株価などのデータを取り込んでいます。リアルタイムで売買ができるように Python で強化学習のアルゴリズムを利用したシステム開発に日々取り込んでいます。

毎日のように生成 AI とのやりとりをしていますが、VWAP に関するやりとりで残しておきたい内容を備忘録としてまとめました。


VWAP クラス

一定間隔で取得する株価 price と累積出来高 cumulative_volume データから update メソッドを実行して VWAP を算出するクラスです。生成 AI の Copilot で生成してもらいました。

class VWAP:
    def __init__(self):
        self.running_pv = 0.0
        self.running_vol = 0.0
        self.vwap = 0.0
        self.prev_vwap = 0.0
        self.prev_volume = None

    def clear(self):
        self.running_pv = 0.0
        self.running_vol = 0.0
        self.vwap = 0.0
        self.prev_vwap = 0.0
        self.prev_volume = None

    def getValue(self) -> float:
        return self.vwap

    def getSlope(self) -> float:
        return self.vwap - self.prev_vwap

    def update(self, price: float, cumulative_volume: float) -> float:
        # 初回ティック:始値を VWAP として採用
        if self.prev_volume is None:
            self.prev_volume = cumulative_volume
            self.vwap = price
            self.prev_vwap = price
            return self.vwap

        # 出来高の増加量
        vol_delta = cumulative_volume - self.prev_volume
        self.prev_volume = cumulative_volume

        # 異常値(出来高減少)は無視
        if vol_delta <= 0:
            return self.vwap

        # 加重合計を更新
        self.running_pv += price * vol_delta
        self.running_vol += vol_delta

        # VWAP 更新
        self.prev_vwap = self.vwap
        self.vwap = self.running_pv / self.running_vol

        return self.vwap

強化学習で VWAP の情報を利用する場合

一般的な VWAP ベースの報酬ロジックでは、建玉のエントリー価格がVWAPより有利かどうか(割安で買えたか、割高で売れたか)を基準に報酬を設計します。 これは「市場の平均約定価格より有利な取引を評価する」考え方に基づいています。

✅ ロング(買建)の場合

  • 価格 < VWAP → 割安で買えた → 報酬を強化
  • 価格 > VWAP → 割高で買った → 報酬を抑制またはペナルティ
例:報酬ロジック(買建)
reward = np.tanh((vwap - entry_price) / vwap * scaling_factor)
  • scaling_factor10〜50 程度で調整
  • VWAP より安く買えたほど報酬がプラスに近づく

✅ ショート(売建)の場合

  • 価格 > VWAP → 割高で売れた → 報酬を強化
  • 価格 < VWAP → 割安で売った → 報酬を抑制またはペナルティ
例:報酬ロジック(売建)
reward = np.tanh((entry_price - vwap) / vwap * scaling_factor)
  • VWAP より高く売れたほど報酬がプラスに近づく

応用設計案

  • 報酬の符号を VWAP 乖離率の符号に一致させる
    → ロングなら (VWAP - Price), ショートなら (Price - VWAP)
  • 報酬の強さを乖離率の大きさで調整
    → 乖離が大きいほど報酬を強化(ただし tanh で圧縮)
  • VWAP 乖離が不利な方向ならペナルティ
    → 例:ロングで VWAP より高く買ったら -0.5 固定報酬など

実務での使われ方(参考)

  • 機関投資家は VWAP より有利な価格で約定することを目指す
    VWAP を「執行品質」の基準として使う
  • アルゴリズム取引では VWAP を「目標価格」として報酬設計に組み込む
    VWAP 乖離が小さいほど「良い執行」と評価される

参考サイト

  1. 売買高加重平均価格(VWAP) ─ 用語集 | 日本取引所グループ
  2. VWAP(ブイワップ)の見方・使い方 | 需給指標 | 指標の見方・使い方 | 投資のノウハウ | 株の達人
にほんブログ村 株ブログ 株日記へ
PVアクセスランキング にほんブログ村

0 件のコメント:

コメントを投稿