Anchored VWAP: Fomula na Matumizi
Anchored VWAP huanza wastani wake unaoendelea kwenye bar unayochagua na hairejeshi mwanzo. Jifunze fomula ya Python na jinsi kubadilisha anchor kunavyobadili jibu.
Anchored VWAP ni bei ya wastani iliyopimwa kwa ujazo inayoweka mwanzo wa jumla zake zinazoendelea kwenye bar unayochagua, na haizirejeshi kamwe mwanzoni. Session VWAP huanza upya kila kengele ya ufunguzi, kwa hiyo hujibu tu swali la bei ya wastani ambayo hisa imefanyiwa biashara leo. Anchored VWAP hujibu swali tofauti: bei ya wastani ambayo hisa imefanyiwa biashara tangu wakati uliouchagua kuwa mwanzo.
Anchored VWAP ni nini?
Matoleo yote mawili hutumia hesabu ileile. Chukua kila bar tangu mwanzo, zidisha bei ya kila bar kwa ujazo wa bar hiyo, kisha weka jumla inayoendelea. Weka jumla ya pili inayoendelea ya ujazo pekee. Gawanya jumla ya kwanza kwa ya pili. Kwa kuandika kwa fomula, anchored VWAP kwenye bar n ni jumla ya bei iliyozidishwa kwa ujazo kutoka kwenye anchor bar hadi bar n, ikigawanywa kwa jumla ya ujazo wa bar hizo hizo.
Bei ya bar kwa kawaida ni typical price yake, yaani wastani wa high, low na close, au VWAP ya bar yenyewe ikiwa feed inachapisha thamani hiyo.
Hakuna kinachoondolewa kwenye jumla yoyote. Moving average ya siku 50 huondoa observation yake ya zamani zaidi kila inapopokea observation mpya, na hilo ndilo linaloiwezesha kubadilika. Anchored VWAP huongeza tu, kwa hiyo kumbukumbu yake ni ya kudumu. Session VWAP ni hesabu hiyo hiyo, lakini jumla zote mbili huwekwa kuwa sifuri kila ufunguzi. Hivyo, ni anchored VWAP ambayo anchor yake ni kengele ya ufunguzi.
Kuna tofauti gani kati ya VWAP na anchored VWAP?
Paneli iliyo hapa chini inaendesha zote mbili kwenye daily bars za Apple kwa robo moja. Safu ya session_vwap ni bei ya wastani iliyopimwa kwa ujazo ndani ya kila session moja, ikiwa na thamani mpya kila siku. Safu ya anchored_vwap huanza kwenye session ya kwanza ya kipindi hicho na kujumulisha kuanzia hapo.
SQL halisi nyuma ya kila namba
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 dateKatika 62 sessions, kutoka Apr 1 hadi Jun 30, mfululizo wa kila siku unasogea pamoja na tape, huku mfululizo uliowekwa anchor ukipinda polepole. Mstari uliowekwa anchor huanza kwenye 255.02, kwa sababu siku ya kwanza session moja ndiyo historia yote, na kufikia 286.86 mwishoni mwa kipindi hicho, ikilinganishwa na session VWAP ya mwisho ya 288.09. Umbo hilo ndilo somo. Mwanzoni, mstari uliowekwa anchor hufuata kwa karibu mstari wa kila siku, kisha hutulia kadiri ujazo uliokusanywa nyuma yake unavyoongezeka.
Watu huweka anchor wapi?
Anchors zinazotumika sana ni tangazo la mapato, bar ya kwanza ya gap, low ya wiki 52, au print ya ufunguzi ya hisa iliyoorodheshwa hivi karibuni. Dai linalohusishwa na zote ni lilelile. Kila aliyefanya muamala baada ya wakati huo alilipa, kwa wastani, anchored VWAP. Kwa hiyo, bei iliyo juu ya mstari inaeleza kuwa mshiriki wa wastani ana faida ambayo bado haijafikiwa kwa fedha.
Hapa kuna sehemu ambayo kwa kawaida haisemwi. Kuchagua anchor ni uamuzi wa kimtazamo, na jibu hubadilika pamoja nao. Paneli iliyo hapa chini inaweka anchor kwenye mwanzo wa kila moja ya miezi 12 iliyopita ya hisa hiyo hiyo, kisha huhesabu bei ya wastani iliyolipwa kutoka mwezi huo hadi tarehe moja ya mwisho isiyobadilika.
SQL halisi nyuma ya kila namba
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.mKuweka anchor kwenye Jul 2025 kunaweka bei ya wastani iliyolipwa kwenye 259.52, huku close ya mwisho ya kipindi ikipima 11.5% dhidi yake. Thamani hiyo huwa chanya wakati close ilikuwa juu ya mstari. Kuweka anchor kwenye Jun 2026 kunatoa 294.07 na -1.6%. Hisa ni ileile, bei ya mwisho ni ileile, lakini kuna hitimisho 12 tofauti kuhusu kama wamiliki tangu anchor wana faida. Hakuna chochote katika hesabu kinachokuchagulia anchor. Anchor iliyochaguliwa baada ya tukio inaweza kusogezwa hadi iunge mkono jambo lolote ambalo chart inakusudiwa kusema. Ndiyo maana tarehe ya anchor inapaswa kuwekwa kwenye caption ya kila chart ya anchored VWAP unayosoma.
Unahesabuje anchored VWAP katika Python?
Mfululizo yote miwili hutokana na kupita mara moja kwenye bars. Script iliyo hapa chini ni Python 3 ya standard library, bila packages wala network. Husoma bars 30 na kuchapisha session series kando ya anchored series, kisha huripoti bar ya kwanza ambapo bei ilivuka tena anchored line. Bars hizo zimetengenezwa kwa ajili ya maonyesho. Elekeza loop hiyo hiyo kwenye bars halisi, na hesabu haitabadilika.
"""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")
Jozi mbili za counters ndizo msingi wa wazo lote. session_pv na session_vol huwekwa kuwa sifuri kila tarehe inapobadilika. anchor_pv na anchor_vol hazifanyi hivyo kamwe. Baada ya hapo, kila kitu ni uchapishaji.
Kwa nini mstari uliowekwa anchor huacha kusogea?
Anchored VWAP huwa ngumu zaidi kusogezwa kadiri inavyozeeka, kwa sababu ya kiufundi. Kila bar mpya huingia kwenye wastani ikiwa na uzito unaolingana na ujazo wake ukigawanywa kwa ujazo wote tangu anchor. Siku ya pili, session moja inaweza kubeba nusu ya jumla. Baada ya sessions 200, session hiyo hiyo hubeba sehemu iliyo chini ya asilimia moja. Paneli iliyo hapa chini hupima uzito huo kwenye bars za Apple, katika mafungu ya sessions kumi.
SQL halisi nyuma ya kila namba
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_anchorKatika sessions kumi za kwanza, bar inayoingia huchangia wastani wa 30.09% wa mstari, huku anchor bar yenyewe ikichangia yote. Kufikia session 130, bar mpya zaidi imeshuka hadi 2.14%. Mambo mawili yanafuata unapoisoma chart hii. Anchor ya zamani huchora mstari ulio karibu kuwa tambarare na ambao hauathiriwi sana na kinachoendelea sasa. Anchor mpya huchora mstari unaozunguka karibu na bei na kuikata mara kwa mara. Hakuna moja iliyo sahihi zaidi. Ni fomula ileile katika umri tofauti. Kwa kusoma moja kwa moja kiasi cha ujazo kinachoingia ikilinganishwa na kawaida, ujazo wa wastani wa kila siku na ujazo wa kulinganisha hupima hilo.
Anchored VWAP hudai kuonyesha nini?
Dai la kawaida ni kusoma positioning. Anchor inapowekwa kwenye tukio, mstari huo ni bei ya wastani iliyolipwa na kila aliyefanya muamala tangu wakati huo. Kwa hiyo, bei iliyo juu ya mstari inaeleza kuwa wengi wanashikilia katika faida ambayo bado haijafikiwa kwa fedha, na bei iliyo chini yake inaeleza kinyume. Paneli iliyo hapa chini inaweka anchor kwenye close ya chini kabisa ya kila siku ambayo majina matano ya makampuni yanayojulikana kwa watumiaji yalichapisha katika miezi 12 iliyopita, kisha hupima close ya mwisho ya kipindi dhidi ya wastani uliotokana.
SQL halisi nyuma ya kila namba
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 DESCMajina hayo matano yanaanzia SPY kwenye 10.4% hadi MSFT kwenye 1.3%, kila moja ikipimwa dhidi ya tarehe yake ya anchor. Tofauti hiyo inaeleza kilichotokea, lakini ni muhimu kuwa sahihi kuhusu mipaka yake. Anchored VWAP ni takwimu elekezi inayohesabiwa kutoka kwa bei na volumes ambazo tayari zimeprintiwa. Si forecast wala kanuni yenye edge iliyothibitishwa katika utafiti uliochapishwa. Haina taarifa ambayo historia ya bei na volume haikuwa nayo tayari, na anchor iliyoizalisha ilichaguliwa na mtu. Ikiwa itasomwa kama muhtasari wa tape tangu tarehe fulani, ni ya kweli. Ikiwa itasomwa kama uamuzi wa mwisho, anchor ndiyo inayozungumza.
Maswali yanayoulizwa mara kwa mara
Kuna tofauti gani kati ya VWAP na anchored VWAP?
Session VWAP huweka upya jumla zake zinazoendelea kila ufunguzi wa soko, kwa hiyo hueleza siku ya sasa pekee. Anchored VWAP huanza jumla zake kwenye bar unayochagua na haizirejeshi kamwe, kwa hiyo hueleza bei ya wastani iliyolipwa katika kila session tangu bar hiyo.
Traders huweka anchor ya VWAP wapi?
Chaguo za kawaida ni tarehe ya mapato, bar ya kwanza ya gap, swing high au swing low, na siku ya kwanza ya trading kwa listing mpya. Bar yoyote inaweza kutumika kama anchor. Tarehe ya anchor ndiyo taarifa ambayo msomaji anahitaji ili kutafsiri mstari huo.
Je, anchored VWAP huwekwa upya usiku?
Hapana, na hilo ndilo sifa yake kuu. Jumla inayoendelea ya bei iliyozidishwa kwa ujazo pamoja na jumla inayoendelea ya ujazo hubaki hadi baada ya market close, kisha huendelea tena kwenye session inayofuata, bila kujali zimepita sessions ngapi.
Je, anchored VWAP hutabiri chochote?
Ni takwimu elekezi, si forecast. Hutoa muhtasari wa kile ambacho tayari kimelipwa tangu anchor. Kusogeza anchor husogeza mstari na kunaweza kubadili hitimisho linaloonekana. Kwa hiyo, dai lolote linalojengwa juu yake lina nguvu kulingana na msingi wa tarehe hiyo ya anchor.
Je, anchored VWAP inaweza kuhesabiwa kwenye daily bars?
Ndiyo. Paneli za ukurasa huu hutumia daily bars, huku kila session VWAP ikiwa bei ya bar. Intraday charts hutumia minute bars badala yake. Fomula ni ileile katika resolution zote mbili; kinachobadilika ni ukubwa wa increments pekee.
Kila paneli hapo juu huambatana na SQL iliyotumika kuitengeneza, kwa hiyo unaweza kuifungua na kubadilisha tarehe ya anchor mwenyewe. Ili kuendesha jumla hizo zinazoendelea kutoka tarehe unayoijali, iombe kwa Kiingereza cha kawaida kwenye terminal ya Strasmore.