Strasmore Research
Jifunze Matt ConnorNa Matt Connor

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.

UlizaVWAP ya kipindi cha siku dhidi ya VWAP iliyowekwa kwenye tarehe moja (AAPL)
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 date
Run this yourself

Katika 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.

UlizaHisa ileile na bei ileile ya mwisho, nanga kumi na mbili tofauti (AAPL)
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.m
Run this yourself

Kuweka 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.

UlizaKiasi ambacho kipindi kipya zaidi kinaweza kusogeza VWAP iliyowekwa (AAPL)
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_anchor
Run this yourself

Katika 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.

UlizaIliyowekwa kwenye bei ya chini zaidi ya kufunga ya kila jina katika miezi kumi na miwili iliyopita
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 DESC
Run this yourself

Majina 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.