Strasmore Research
Belajar Matt ConnorOleh Matt Connor

Anchored VWAP: Formula dan Kegunaannya

Fahami cara anchored VWAP bermula pada bar pilihan dan tidak menetapkan semula jumlah terkumpul, termasuk formula Python serta kesan mengubah titik anchor.

Anchored VWAP ialah purata harga berwajaran volum yang memulakan jumlah terkumpulnya pada satu bar yang anda pilih dan tidak pernah menetapkan semula jumlah tersebut. Session VWAP bermula semula pada setiap pembukaan pasaran. Oleh itu, ia hanya menjawab berapakah harga purata saham bertukar tangan pada hari ini. Versi anchored menjawab soalan yang berbeza: berapakah harga purata saham bertukar tangan sejak saat yang anda pilih sebagai titik permulaan.

Apakah anchored VWAP?

Kedua-dua versi menggunakan pengiraan yang sama. Ambil setiap bar sejak permulaan, darabkan harga setiap bar dengan volum bar tersebut, kemudian simpan jumlah terkumpul. Simpan jumlah terkumpul kedua untuk volum secara berasingan. Bahagikan jumlah pertama dengan jumlah kedua. Secara matematik, anchored VWAP pada bar n ialah jumlah harga didarab volum dari bar anchor hingga bar n, dibahagikan dengan jumlah volum bagi bar yang sama.

Harga bar biasanya ialah harga tipikalnya, iaitu purata harga tinggi, rendah dan tutup. Ia juga boleh menjadi VWAP bar itu sendiri apabila data feed menerbitkannya.

Tiada apa-apa yang dikeluarkan daripada mana-mana jumlah tersebut. Purata bergerak 50 hari menggugurkan pemerhatian tertua setiap kali pemerhatian baharu ditambah. Inilah yang membolehkannya berubah arah. Anchored VWAP hanya menambah data, maka rekod sejarahnya kekal. Session VWAP menggunakan pengiraan yang sama, tetapi kedua-dua jumlah ditetapkan kepada sifar pada setiap pembukaan pasaran. Ini menjadikannya anchored VWAP yang mempunyai loceng pembukaan sebagai anchor.

Apakah perbezaan antara VWAP dengan anchored VWAP?

Panel di bawah mengira kedua-duanya menggunakan bar harian Apple bagi satu suku tahun. Lajur session_vwap ialah purata harga berwajaran volum dalam setiap sesi tunggal. Nilainya dikira semula setiap hari. Lajur anchored_vwap bermula pada sesi pertama dalam tempoh tersebut dan mengumpul data dari situ.

PertanyaanVWAP sesi harian berbanding VWAP yang ditambat pada satu tarikh (AAPL)
SQL tepat di sebalik setiap nombor
SELECT
    toString(date)                AS session_date,
    formatDateTime(date, '%b %e') AS bar_label,
    round(toFloat64(vwap), 2)     AS session_vwap,
    round(
        sum(toFloat64(vwap) * toFloat64(volume)) OVER (ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
      / sum(toFloat64(volume))                   OVER (ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
    , 2)                          AS anchored_vwap
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'AAPL'
  AND date >= '2026-04-01'
  AND date <= '2026-06-30'
ORDER BY date
Run this yourself

Merentasi 62 sesi, dari Apr 1 hingga Jun 30, siri harian bergerak mengikut urus niaga pasaran, manakala siri anchored berubah secara perlahan. Garis anchored bermula pada 255.02 kerana pada hari pertama, satu sesi merangkumi keseluruhan sejarah. Garis itu mencapai 286.86 pada penghujung tempoh, berbanding VWAP sesi terakhir pada 288.09. Bentuk garis itu memberikan pengajaran utama. Pada awalnya, garis anchored bergerak hampir seiring dengan garis harian. Kemudian, garis itu menjadi lebih mendatar apabila volum terkumpul di belakangnya semakin besar.

Di manakah pedagang biasanya meletakkan anchor?

Anchor yang biasa digunakan ialah pengumuman pendapatan, bar pertama selepas jurang harga, paras terendah 52 minggu, atau print pembukaan saham yang baru disenaraikan. Kesimpulan yang dikaitkan dengan semua anchor ini adalah sama. Semua pihak yang berurus niaga selepas saat tersebut membayar harga purata yang diwakili oleh anchored VWAP. Oleh itu, harga di atas garis itu menunjukkan peserta purata berada pada keuntungan belum direalisasi.

Inilah perkara yang biasanya tidak dinyatakan. Pemilihan anchor ialah pertimbangan subjektif, dan kesimpulan berubah mengikut pemilihannya. Panel di bawah meletakkan anchor pada permulaan setiap daripada dua belas bulan terakhir bagi saham yang sama. Panel itu kemudian mengira harga purata yang dibayar dari bulan tersebut hingga satu tarikh akhir yang tetap.

PertanyaanSaham yang sama dan harga terakhir yang sama, dua belas tambatan berbeza (AAPL)
SQL tepat di sebalik setiap nombor
WITH
    monthly AS (
        SELECT
            toStartOfMonth(date)                     AS m,
            sum(toFloat64(vwap) * toFloat64(volume)) AS pv,
            sum(toFloat64(volume))                   AS vol
        FROM global_markets.stocks_daily_aggs
        WHERE ticker = 'AAPL'
          AND date >= '2025-07-01'
          AND date <= '2026-06-30'
        GROUP BY m
    ),
    anchored AS (
        SELECT
            m,
            sum(pv)  OVER (ORDER BY m ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
          / sum(vol) OVER (ORDER BY m ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS avwap
        FROM monthly
    ),
    final_close AS (
        SELECT toFloat64(argMax(close, date)) AS last_close
        FROM global_markets.stocks_daily_aggs
        WHERE ticker = 'AAPL'
          AND date >= '2026-06-01'
          AND date <= '2026-06-30'
    )
SELECT
    formatDateTime(a.m, '%b %Y')                 AS anchor_from,
    round(a.avwap, 2)                            AS anchored_vwap,
    round(100 * (f.last_close / a.avwap - 1), 2) AS close_vs_avwap_pct
FROM anchored AS a
CROSS JOIN final_close AS f
ORDER BY a.m
Run this yourself

Anchor pada Jul 2025 menghasilkan harga purata yang dibayar sebanyak 259.52. Harga tutup terakhir dalam tempoh itu berada pada 11.5% berbanding harga purata tersebut. Angka itu positif apabila harga tutup berada di atas garis. Anchor pada Jun 2026 menghasilkan 294.07 dan -1.6%. Saham yang sama dan harga terakhir yang sama menghasilkan dua belas kesimpulan berbeza tentang sama ada pemegang sejak tarikh anchor berada dalam keuntungan. Pengiraan itu sendiri tidak memilih anchor untuk anda. Anchor yang dipilih selepas sesuatu peristiwa boleh diubah sehingga menyokong maksud yang mahu disampaikan oleh carta. Sebab itu tarikh anchor perlu dinyatakan dalam kapsyen setiap carta anchored VWAP yang anda baca.

Bagaimanakah anchored VWAP dikira dalam Python?

Kedua-dua siri itu terhasil melalui satu laluan merentasi semua bar. Skrip di bawah ialah Python 3 daripada pustaka standard, tanpa pakej tambahan dan tanpa rangkaian. Skrip itu membaca tiga puluh bar dan mencetak siri sesi di sebelah siri anchored. Kemudian, skrip melaporkan bar pertama apabila harga melintasi semula garis anchored. Bar tersebut dicipta untuk demonstrasi. Jika gelung yang sama digunakan pada bar sebenar, pengiraannya tidak berubah.

"""Session VWAP and anchored VWAP from the same running totals. Standard library only."""
import csv
import io

# Illustrative bars, not market data: three sessions of ten 30 minute bars.
BARS = """bar,price,volume
2026-03-02 09:30,100.40,240000
2026-03-02 10:00,100.90,180000
2026-03-02 10:30,101.30,150000
2026-03-02 11:00,101.10,130000
2026-03-02 11:30,100.60,120000
2026-03-02 12:00,100.20,110000
2026-03-02 12:30,99.80,120000
2026-03-02 13:00,99.50,140000
2026-03-02 13:30,99.70,170000
2026-03-02 14:00,99.40,260000
2026-03-03 09:30,99.10,300000
2026-03-03 10:00,98.70,210000
2026-03-03 10:30,98.90,160000
2026-03-03 11:00,98.40,150000
2026-03-03 11:30,98.10,140000
2026-03-03 12:00,98.30,120000
2026-03-03 12:30,98.80,130000
2026-03-03 13:00,99.20,150000
2026-03-03 13:30,99.60,190000
2026-03-03 14:00,99.90,280000
2026-03-04 09:30,100.20,320000
2026-03-04 10:00,100.60,230000
2026-03-04 10:30,100.90,170000
2026-03-04 11:00,101.40,160000
2026-03-04 11:30,101.20,140000
2026-03-04 12:00,101.60,130000
2026-03-04 12:30,102.10,140000
2026-03-04 13:00,102.40,160000
2026-03-04 13:30,102.20,200000
2026-03-04 14:00,102.60,290000
"""

ANCHOR = "2026-03-02 10:30"   # the bar the anchored series starts on

session_pv = session_vol = 0.0
anchor_pv = anchor_vol = 0.0
current_day = None
anchored = False
start_side = None
crossover = None

print(f"{'bar':<18}{'price':>8}{'session':>10}{'anchored':>10}")

for row in csv.DictReader(io.StringIO(BARS)):
    stamp = row["bar"]
    day, price, vol = stamp[:10], float(row["price"]), float(row["volume"])

    if day != current_day:                  # the session totals reset at every open
        session_pv = session_vol = 0.0
        current_day = day
    session_pv += price * vol
    session_vol += vol
    session_vwap = session_pv / session_vol

    anchored = anchored or stamp == ANCHOR
    if not anchored:
        print(f"{stamp:<18}{price:>8.2f}{session_vwap:>10.2f}{'.':>10}")
        continue

    anchor_pv += price * vol                # the anchored totals never reset
    anchor_vol += vol
    anchored_vwap = anchor_pv / anchor_vol
    print(f"{stamp:<18}{price:>8.2f}{session_vwap:>10.2f}{anchored_vwap:>10.2f}")

    gap = price - anchored_vwap
    if start_side is None and abs(gap) > 1e-9:
        start_side = gap > 0
    elif start_side is not None and crossover is None and (gap > 0) != start_side:
        crossover = stamp

print("first bar back through the anchored VWAP:", crossover or "no crossing here")

Dua pasangan pembilang dan penyebut itu merangkumi keseluruhan konsep. session_pv dan session_vol ditetapkan kepada sifar apabila tarikh berubah. anchor_pv dan anchor_vol tidak pernah ditetapkan semula. Selebihnya hanyalah proses mencetak keputusan.

Mengapakah garis anchored berhenti bergerak?

Anchored VWAP semakin sukar digerakkan apabila usianya meningkat, atas sebab mekanikal. Setiap bar baharu memasuki purata dengan wajaran yang sama dengan volumnya sendiri dibahagikan dengan jumlah volum sejak anchor. Pada hari kedua, satu sesi boleh mewakili separuh daripada jumlah keseluruhan. Selepas dua ratus sesi, sesi yang sama hanya mewakili sebahagian kecil daripada satu peratus. Panel di bawah mengukur wajaran itu menggunakan bar Apple, dalam blok sepuluh sesi.

PertanyaanSejauh mana sesi terbaharu boleh mengubah VWAP yang ditambat (AAPL)
SQL tepat di sebalik setiap nombor
WITH running AS (
    SELECT
        row_number() OVER (ORDER BY date) AS n,
        toFloat64(volume)
      / sum(toFloat64(volume)) OVER (ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS weight
    FROM global_markets.stocks_daily_aggs
    WHERE ticker = 'AAPL'
      AND date >= '2026-01-02'
      AND date <= '2026-06-30'
)
SELECT
    intDiv(n - 1, 10) * 10 + 10 AS bars_since_anchor,
    round(100 * avg(weight), 2) AS newest_bar_weight_pct
FROM running
GROUP BY bars_since_anchor
ORDER BY bars_since_anchor
Run this yourself

Dalam sepuluh sesi pertama, bar yang masuk menyumbang purata 30.09% kepada perubahan garis. Bar anchor sendiri menyumbang keseluruhan wajaran tersebut. Menjelang sesi 130, bar terbaharu hanya menyumbang 2.14%. Dua kesimpulan boleh dibuat daripada carta ini. Anchor lama menghasilkan garis yang hampir mendatar dan tidak banyak bertindak balas terhadap pergerakan semasa. Anchor baharu menghasilkan garis yang bergerak pantas mengikut harga dan kerap melintasinya. Tiada satu pun yang lebih tepat. Kedua-duanya menggunakan formula yang sama pada usia berbeza. Untuk melihat secara langsung jumlah volum yang masuk berbanding paras biasa, purata volum harian dan volum relatif boleh digunakan.

Apakah yang didakwa ditunjukkan oleh anchored VWAP?

Dakwaan standardnya ialah bacaan kedudukan pelabur. Apabila anchor diletakkan pada sesuatu peristiwa, garis itu mewakili harga purata yang dibayar oleh semua pihak yang berurus niaga selepas peristiwa tersebut. Oleh itu, harga di atas garis menunjukkan majoriti pemegang berada pada keuntungan belum direalisasi. Harga di bawah garis menunjukkan keadaan sebaliknya. Panel di bawah meletakkan anchor bagi lima saham nama isi rumah pada harga tutup harian terendah yang dicatatkan oleh setiap saham sepanjang dua belas bulan lalu. Kemudian, panel itu mengukur harga tutup terakhir dalam tempoh tersebut berbanding purata yang terhasil.

PertanyaanDitambat pada penutupan terendah setiap saham dalam tempoh dua belas bulan lalu
SQL tepat di sebalik setiap nombor
WITH
    bars AS (
        SELECT
            ticker,
            date,
            toFloat64(vwap)   AS px,
            toFloat64(volume) AS vol,
            toFloat64(close)  AS c
        FROM global_markets.stocks_daily_aggs
        WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'KO', 'SPY')
          AND date >= '2025-07-01'
          AND date <= '2026-06-30'
    ),
    lows AS (
        SELECT
            ticker,
            argMin(date, c) AS low_date
        FROM bars
        GROUP BY ticker
    )
SELECT
    b.ticker                                AS symbol,
    formatDateTime(l.low_date, '%b %e, %Y') AS anchored_at,
    round(sumIf(b.px * b.vol, b.date >= l.low_date) / sumIf(b.vol, b.date >= l.low_date), 2) AS anchored_vwap,
    round(argMax(b.c, b.date), 2)           AS last_close,
    round(100 * (argMax(b.c, b.date)
        / (sumIf(b.px * b.vol, b.date >= l.low_date) / sumIf(b.vol, b.date >= l.low_date)) - 1), 1) AS close_vs_avwap_pct
FROM bars AS b
INNER JOIN lows AS l ON b.ticker = l.ticker
GROUP BY b.ticker, l.low_date
ORDER BY close_vs_avwap_pct DESC
Run this yourself

Lima saham itu berada dalam julat daripada SPY pada 10.4% hingga MSFT pada 1.3%. Setiap satu diukur berbanding tarikh anchornya sendiri. Julat tersebut menerangkan perkara yang telah berlaku, tetapi hadnya perlu dinyatakan dengan tepat. Anchored VWAP ialah statistik deskriptif yang dikira daripada harga dan volum yang telah dicatatkan. Ia bukan ramalan dan bukan peraturan yang mempunyai kelebihan terbukti dalam penyelidikan yang diterbitkan. Ia tidak mengandungi maklumat yang tiada dalam sejarah harga dan volum. Selain itu, anchor yang menghasilkan garis tersebut dipilih oleh seseorang. Sebagai ringkasan pergerakan pasaran sejak sesuatu tarikh, ia berguna dan jujur. Sebagai suatu kesimpulan muktamad, pemilihan anchor itulah yang menentukan tafsirannya.

Soalan lazim

Apakah perbezaan antara VWAP dengan anchored VWAP?

Session VWAP menetapkan semula jumlah terkumpulnya pada setiap pembukaan pasaran. Oleh itu, ia hanya menerangkan hari semasa. Anchored VWAP memulakan jumlahnya pada bar yang anda pilih dan tidak pernah menetapkan semula jumlah tersebut. Oleh itu, ia menerangkan harga purata yang dibayar merentasi semua sesi sejak bar itu.

Di manakah pedagang meletakkan anchor untuk VWAP?

Pilihan yang biasa ialah tarikh pengumuman pendapatan, bar pertama selepas jurang harga, paras tertinggi atau terendah ayunan, dan hari pertama dagangan bagi saham yang baru disenaraikan. Mana-mana bar boleh dijadikan anchor. Tarikh anchor perlu diketahui oleh pembaca untuk mentafsir garis tersebut.

Adakah anchored VWAP ditetapkan semula semalaman?

Tidak. Itulah sifat utamanya. Jumlah terkumpul harga didarab volum dan jumlah terkumpul volum kedua-duanya dibawa merentasi penutupan pasaran. Pengiraan itu kemudian disambung pada sesi berikutnya, walau berapa banyak sesi telah berlalu.

Adakah anchored VWAP meramalkan sesuatu?

Ia ialah statistik deskriptif, bukan ramalan. Ia meringkaskan jumlah yang telah dibayar sejak anchor. Perubahan anchor mengubah garis dan boleh membalikkan kesimpulan yang kelihatan. Oleh itu, setiap dakwaan yang berasaskannya hanya kukuh setakat alasan yang menyokong tarikh anchor tersebut.

Bolehkah anchored VWAP dikira menggunakan bar harian?

Ya. Panel di halaman ini menggunakan bar harian, dengan setiap Session VWAP dijadikan harga bar. Carta intrahari pula menggunakan bar minit. Formula yang digunakan adalah sama bagi kedua-dua resolusi. Yang berubah hanyalah saiz setiap kenaikan.


Setiap panel di atas disertakan dengan SQL yang menghasilkannya. Anda boleh membukanya dan mengubah sendiri tarikh anchor. Untuk menjalankan jumlah terkumpul yang sama dari tarikh yang anda pilih, minta pengiraan itu dalam bahasa biasa melalui terminal Strasmore.