Anchored VWAP: Rumus dan Kegunaannya
Anchored VWAP memulai rata-rata berjalan dari bar pilihan dan tidak mereset. Pelajari rumus Python serta dampak perubahan anchor pada hasil.
Anchored VWAP adalah volume weighted average price yang memulai akumulasi berjalan pada satu bar yang Anda pilih dan tidak pernah meresetnya. Session VWAP dimulai ulang pada setiap pembukaan pasar, sehingga hanya menjawab berapa harga rata-rata saham berpindah tangan hari ini. Versi anchored menjawab pertanyaan yang berbeda: berapa harga rata-rata saham berpindah tangan sejak titik awal yang Anda pilih.
Apa itu anchored VWAP?
Kedua versi menggunakan perhitungan yang sama. Ambil setiap bar sejak awal, kalikan harga setiap bar dengan volume bar tersebut, lalu simpan total berjalannya. Simpan total volume secara terpisah. Bagi total pertama dengan total kedua. Secara matematis, anchored VWAP pada bar n adalah jumlah harga dikalikan volume sejak bar anchor hingga bar n, dibagi jumlah volume pada bar yang sama.
Harga sebuah bar biasanya adalah typical price, yaitu rata-rata high, low, dan close, atau VWAP bar itu sendiri jika feed menyediakan nilainya.
Tidak ada nilai yang dihapus dari kedua total tersebut. Moving average 50 hari menghapus observasi tertua setiap kali menerima observasi baru. Inilah yang memungkinkannya berbalik arah. Anchored VWAP hanya menambahkan nilai baru, sehingga memorinya permanen. Session VWAP menggunakan perhitungan yang sama dengan kedua total direset menjadi nol pada setiap pembukaan. Dengan demikian, session VWAP adalah anchored VWAP dengan anchor pada pembukaan pasar.
Apa perbedaan antara VWAP dan anchored VWAP?
Panel di bawah menghitung keduanya pada daily bar Apple selama satu kuartal. Kolom session_vwap adalah volume weighted average price dalam setiap sesi tunggal, dengan angka baru setiap hari. Kolom anchored_vwap dimulai pada sesi pertama dalam periode tersebut dan terus mengakumulasi dari sana.
SQL tepat di balik setiap angka
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 dateSelama 62 sesi, dari Apr 1 hingga Jun 30, seri harian bergerak mengikuti tape, sedangkan seri anchored berubah secara perlahan. Garis anchored dibuka pada 255.02 karena pada hari pertama satu sesi merupakan seluruh riwayat, lalu mencapai 286.86 pada akhir periode, dibandingkan dengan session VWAP terakhir sebesar 288.09. Bentuk garisnya menjadi pelajaran utama. Garis anchored pada awalnya mengikuti garis harian dengan dekat, lalu mendatar ketika volume yang mendasarinya terus bertambah.
Di mana orang menempatkan anchor?
Anchor yang umum digunakan adalah tanggal publikasi laporan laba, bar pertama dalam gap, 52-week low, atau print pembukaan saham yang baru tercatat. Dasar pemikirannya sama. Semua pihak yang bertransaksi setelah momen tersebut membayar, secara rata-rata, pada anchored VWAP. Karena itu, harga di atas garis menunjukkan rata-rata pelaku pasar berada dalam posisi paper gain.
Berikut bagian yang biasanya tidak disebutkan. Anchor merupakan keputusan subjektif, dan hasilnya berubah mengikuti pilihan tersebut. Panel di bawah menempatkan anchor pada awal setiap bulan dalam dua belas bulan terakhir untuk saham yang sama. Panel itu kemudian menghitung harga rata-rata yang dibayar sejak bulan tersebut hingga satu tanggal akhir yang tetap.
SQL tepat di balik setiap angka
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.mAnchor pada Jul 2025 menghasilkan harga rata-rata yang dibayar sebesar 259.52. Close terakhir dalam periode tersebut berada di 11.5% terhadapnya. Angka ini positif ketika close berada di atas garis. Anchor pada Jun 2026 menghasilkan 294.07 dan -1.6%. Sahamnya sama dan harga terakhirnya sama, tetapi hasilnya memberikan dua belas penilaian berbeda mengenai apakah pemegang saham sejak anchor berada dalam posisi profit. Tidak ada bagian dari perhitungan yang memilihkan anchor untuk Anda. Anchor yang dipilih setelah kejadian dapat digeser hingga mendukung pesan apa pun yang ingin disampaikan grafik. Karena itu, tanggal anchor harus dicantumkan dalam caption setiap grafik anchored VWAP yang Anda baca.
Bagaimana cara menghitung anchored VWAP dengan Python?
Kedua seri dapat dihasilkan dalam satu kali iterasi atas seluruh bar. Skrip di bawah ini menggunakan standard library Python 3, tanpa package dan tanpa jaringan. Skrip tersebut membaca tiga puluh bar dan mencetak seri session di samping seri anchored. Setelah itu, skrip melaporkan bar pertama ketika harga kembali menembus anchored line. Bar yang digunakan dibuat khusus untuk demonstrasi. Jika loop yang sama diterapkan pada bar aktual, perhitungannya 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 pasang counter tersebut adalah inti perhitungannya. session_pv dan session_vol direset setiap kali tanggal berubah. anchor_pv dan anchor_vol tidak pernah direset. Setelah itu, seluruh proses hanya mencetak hasil.
Mengapa garis anchored berhenti bergerak
Anchored VWAP semakin sulit berubah seiring bertambahnya usia karena alasan mekanis. Setiap bar baru masuk ke dalam rata-rata dengan bobot yang sama dengan volumenya sendiri dibagi seluruh volume sejak anchor. Pada hari kedua, satu sesi dapat mencakup separuh dari total volume. Dua ratus sesi kemudian, sesi yang sama hanya berbobot sebagian kecil dari satu persen. Panel di bawah mengukur bobot tersebut pada bar Apple dalam blok sepuluh sesi.
SQL tepat di balik setiap angka
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_anchorSelama sepuluh sesi pertama, rata-rata bar yang masuk menyumbang 30.09% terhadap garis. Bar anchor sendiri menyumbang seluruh bobot tersebut. Pada sesi 130, bar terbaru hanya menyumbang 2.14%. Ada dua kesimpulan dari grafik ini. Anchor lama menghasilkan garis yang hampir datar dan nyaris tidak merespons kondisi saat ini. Anchor baru menghasilkan garis yang bergerak cepat mengikuti harga dan sering berpotongan dengannya. Tidak ada yang lebih benar. Keduanya menggunakan formula yang sama pada usia yang berbeda. Untuk membaca secara langsung seberapa besar volume yang masuk dibandingkan kondisi normal, average daily volume dan relative volume dapat digunakan.
Apa yang diklaim ditunjukkan oleh anchored VWAP?
Klaim standarnya adalah pembacaan positioning. Jika anchor ditempatkan pada suatu peristiwa, garis tersebut merupakan harga rata-rata yang dibayar semua pihak yang bertransaksi sejak peristiwa itu. Karena itu, harga di atas garis menunjukkan mayoritas pemegang berada dalam posisi paper gain, sedangkan harga di bawah garis menunjukkan kondisi sebaliknya. Panel di bawah menempatkan anchor pada daily close terendah yang dicetak oleh lima saham populer selama dua belas bulan terakhir. Setelah itu, panel mengukur close terakhir dalam periode tersebut terhadap rata-rata yang dihasilkan.
SQL tepat di balik setiap angka
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 DESCKelima saham tersebut berada dalam rentang SPY pada 10.4% hingga MSFT pada 1.3%. Masing-masing diukur terhadap tanggal anchornya sendiri. Rentang itu menggambarkan apa yang terjadi. Namun, batasannya perlu dijelaskan secara tepat. Anchored VWAP adalah statistik deskriptif yang dihitung dari harga dan volume yang sudah tercatat. Ini bukan forecast dan bukan aturan dengan keunggulan yang telah terbukti dalam riset yang dipublikasikan. Anchored VWAP tidak memuat informasi yang belum terdapat dalam riwayat harga dan volume. Anchor yang menghasilkan angka tersebut juga dipilih oleh seseorang. Jika dibaca sebagai ringkasan tape sejak suatu tanggal, metrik ini informatif. Jika dibaca sebagai putusan, anchor-lah yang sebenarnya berbicara.
FAQ
Apa perbedaan antara VWAP dan anchored VWAP?
Session VWAP mereset total berjalan pada setiap pembukaan pasar. Karena itu, metrik ini hanya menggambarkan hari berjalan. Anchored VWAP memulai totalnya pada bar yang Anda pilih dan tidak pernah meresetnya. Metrik ini menggambarkan harga rata-rata yang dibayar pada setiap sesi sejak bar tersebut.
Di mana trader menempatkan anchor VWAP?
Pilihan yang umum adalah tanggal publikasi laporan laba, bar pertama dalam gap, swing high atau swing low, dan hari pertama perdagangan saham yang baru tercatat. Bar apa pun dapat menjadi anchor. Tanggal anchor harus diketahui pembaca agar garis tersebut dapat ditafsirkan.
Apakah anchored VWAP direset overnight?
Tidak. Inilah karakteristik utamanya. Running sum dari harga dikalikan volume dan running sum volume sama-sama berlanjut melewati penutupan. Keduanya kemudian dilanjutkan pada sesi berikutnya, berapa pun jarak sesinya.
Apakah anchored VWAP memprediksi sesuatu?
Anchored VWAP adalah statistik deskriptif, bukan forecast. Metrik ini merangkum harga yang sudah dibayar sejak anchor. Mengubah anchor akan mengubah garis dan dapat membalikkan kesimpulan yang terlihat. Karena itu, klaim apa pun yang dibangun berdasarkan anchored VWAP hanya sekuat alasan pemilihan tanggal anchor tersebut.
Dapatkah anchored VWAP dihitung pada daily bar?
Ya. Panel pada halaman ini menggunakan daily bar, dengan setiap session VWAP sebagai harga bar. Grafik intraday menggunakan minute bar. Formulanya sama pada kedua resolusi. Yang berubah hanya ukuran setiap inkremen.
Setiap panel di atas dilengkapi SQL yang menghasilkan data tersebut. Anda dapat membukanya dan mengubah tanggal anchor sendiri. Untuk menjalankan total berjalan yang sama mulai dari tanggal yang Anda inginkan, minta melalui bahasa biasa di terminal Strasmore.