Strasmore Research
Matuto Matt ConnorNi Matt Connor · Na-update noong 2026-08-08

Anchored VWAP: Formula at Mga Gamit

Alamin kung paano nagsisimula ang Anchored VWAP sa pinili mong bar, hindi nire-reset, at kinukuwenta sa plain Python. Tingnan kung paano binabago ng anchor ang resulta.

Ang Anchored VWAP ay isang volume weighted average price na nagsisimula ng running totals sa isang bar na pinili mo at hindi na nire-reset ang mga ito. Nagsisimula ulit ang Session VWAP sa bawat opening bell, kaya sinasagot lamang nito kung magkano ang average na presyong pinagpalitan ng share ngayong araw. Ibang tanong ang sinasagot ng anchored version: magkano ang average na presyong pinagpalitan ng share mula sa sandaling pinili mo bilang panimulang punto.

Ano ang anchored VWAP?

Pareho ang arithmetic ng dalawang bersyon. Kunin ang bawat bar mula sa simula, i-multiply ang presyo ng bawat bar sa volume nito, at panatilihin ang running total. Magpanatili rin ng hiwalay na running total para sa volume. Hatiin ang unang total sa ikalawa. Sa pormulang nakasulat, ang anchored VWAP sa bar n ay ang kabuuan ng presyo na minultiply sa volume mula sa anchor bar hanggang bar n, na hinati sa kabuuang volume ng parehong mga bar.

Karaniwan, ang presyo ng isang bar ay ang typical price nito, o average ng high, low at close. Maaari rin itong ang VWAP mismo ng bar kapag inilalabas ito ng feed.

Walang inaalis kailanman sa alinman sa dalawang total. Inaalis ng 50-day moving average ang pinakamatandang observation tuwing nagdadagdag ito ng bago, kaya nakakalikong muli ang linya nito. Ang anchored VWAP ay nagdadagdag lamang, kaya permanente ang memory nito. Pareho ang calculation ng Session VWAP, ngunit parehong ginagawang zero ang mga total sa bawat open. Dahil dito, isa itong anchored VWAP na ang anchor ay ang opening bell.

Ano ang pagkakaiba ng VWAP at anchored VWAP?

Sa panel sa ibaba, parehong ginagamit ang mga ito sa daily bars ng Apple sa loob ng one quarter. Ang column na session_vwap ay ang volume weighted average price sa loob ng bawat indibidwal na session, kaya bagong numero ito bawat araw. Nagsisimula ang column na anchored_vwap sa unang session ng window at patuloy na nag-iipon mula roon.

QueryDaily session VWAP kumpara sa VWAP na naka-anchor sa isang petsa (AAPL)
Ang eksaktong SQL sa likod ng bawat numero
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

Sa loob ng 62 sessions, mula Apr 1 hanggang Jun 30, gumagalaw ang daily series kasabay ng tape habang dahan-dahang kumukurba ang anchored series. Nagsisimula ang anchored line sa 255.02 dahil sa unang araw, isang session pa lamang ang buong history. Umaabot ito sa 286.86 sa pagtatapos ng window, kumpara sa final session VWAP na 288.09. Iyan ang ipinapakita ng hugis. Sa simula, malapit na sumusunod ang anchored line sa daily line. Pagkatapos, pumapantay ito habang nadaragdagan ang volume na nakapaloob dito.

Saan inilalagay ng mga tao ang anchor?

Kabilang sa mga popular na anchor ang earnings release, unang bar ng gap, 52-week low, o opening print ng bagong listed na stock. Pareho ang claim sa lahat ng ito. Ang lahat ng nag-transact mula sa sandaling iyon ay nagbayad, sa average, ng anchored VWAP. Kaya ang presyong nasa itaas ng linya ay nagpapahiwatig na ang average participant ay may paper gain.

Narito ang karaniwang hindi nasasabi. Judgment call ang anchor, at nagbabago ang sagot kasabay nito. Sa panel sa ibaba, ina-anchor ang parehong stock sa simula ng bawat isa sa nakaraang twelve months. Kinukuwenta rito ang average na presyong binayaran mula sa buwang iyon hanggang sa isang fixed end date.

QueryParehong stock at parehong huling presyo, labindalawang magkakaibang anchor (AAPL)
Ang eksaktong SQL sa likod ng bawat numero
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

Sa pag-anchor sa Jul 2025, ang average na presyong binayaran ay 259.52. Ang huling close ng window ay 11.5% kumpara rito. Positibo ang figure kapag nasa itaas ng linya ang close. Ang pag-anchor sa Jun 2026 ay nagbibigay ng 294.07 at -1.6%. Parehong stock at parehong huling presyo, ngunit twelve magkakaibang hatol kung kumikita ba o nalulugi ang mga holder mula sa anchor. Walang pinipiling anchor para sa iyo ang arithmetic. Maaaring ilipat ang anchor na pinili pagkatapos ng pangyayari hanggang suportahan nito ang gustong ipahiwatig ng chart. Kaya dapat nakalagay ang anchor date sa caption ng bawat anchored VWAP chart na binabasa mo.

Paano kinakalkula ang anchored VWAP sa Python?

Nagmumula ang parehong series sa isang pass sa mga bar. Ang script sa ibaba ay gumagamit ng standard library Python 3, nang walang packages at network connection. Binabasa nito ang thirty bars at ipinapakita ang session series sa tabi ng anchored series. Pagkatapos, iniuulat nito ang unang bar kung kailan muling tumawid ang presyo sa anchored line. Ginawa lamang ang mga bar para sa demonstration. Kung gagamit ka ng real bars sa parehong loop, hindi magbabago ang arithmetic.

"""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")

Ang dalawang pares ng counter ang buong konsepto. Nire-reset ang session_pv at session_vol tuwing nagbabago ang date. Hindi naman kailanman nire-reset ang anchor_pv at anchor_vol. Ang lahat ng kasunod ay pag-print lamang ng resulta.

Bakit humihinto sa paggalaw ang anchored line

Mas nagiging mahirap igalaw ang anchored VWAP habang tumatagal ito, dahil sa mechanical na dahilan. Pumapasok ang bawat bagong bar sa average na may weight na katumbas ng sarili nitong volume na hinati sa kabuuang volume mula sa anchor. Sa ikalawang araw, maaaring kumatawan ang isang session sa kalahati ng total. Pagkalipas ng two hundred sessions, fraction na lamang ng one percent ang bigat ng parehong session. Sa panel sa ibaba, sinusukat ang weight na ito sa Apple bars, na nakaayos sa blocks na ten sessions.

QueryGaano kalaki ang maaaring maipagalaw ng pinakabagong session sa naka-anchor na VWAP (AAPL)
Ang eksaktong SQL sa likod ng bawat numero
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

Sa unang ten sessions, ang bagong bar ay nag-aambag ng average na 30.09% sa linya. Ang anchor bar mismo ang kumakatawan sa kabuuan nito. Sa session 130, bumababa sa 2.14% ang ambag ng pinakabagong bar. Dalawang bagay ang makikita sa mga chart na ito. Ang lumang anchor ay lumilikha ng halos patag na linya na bahagyang tumutugon sa kasalukuyang galaw. Ang bagong anchor naman ay lumilikha ng linyang mabilis gumalaw sa paligid ng presyo at madalas tumawid dito. Walang mas tama sa dalawa. Pareho lamang silang formula na magkaiba ang edad. Para sa direktang pagsukat kung gaano karaming volume ang pumapasok kumpara sa normal, sinusukat ito ng average daily volume at relative volume.

Ano ang ipinapakitang claim ng anchored VWAP?

Karaniwang ginagamit ito bilang positioning read. Kapag event ang anchor, ang linya ang average na presyong binayaran ng lahat ng nag-transact mula noon. Kaya ang presyong nasa itaas ng linya ay nagpapahiwatig na ang karamihan ng holders ay may paper gain. Ang presyong nasa ibaba naman ay kabaligtaran. Sa panel sa ibaba, ina-anchor ang five household names sa pinakamababang daily close na na-print ng bawat isa sa nakaraang twelve months. Pagkatapos, sinusukat ang huling close ng window kumpara sa nagresultang average.

QueryNaka-anchor sa pinakamababang closing price ng bawat pangalan sa nakalipas na labindalawang buwan
Ang eksaktong SQL sa likod ng bawat numero
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

Ang five names ay mula SPY sa 10.4% hanggang MSFT sa 1.3%, at bawat isa ay sinusukat kumpara sa sarili nitong anchor date. Inilalarawan ng spread na iyon ang nangyari. Gayunman, mahalagang maging tiyak tungkol sa mga limitasyon. Ang Anchored VWAP ay descriptive statistic na kinakalkula mula sa mga presyong na-print at volume na naitala na. Hindi ito forecast at hindi rin rule na may napatunayang edge sa published research. Wala itong impormasyong hindi pa nakapaloob sa history ng presyo at volume. Pinili rin ng isang tao ang anchor na pinagmulan nito. Bilang buod ng tape mula sa isang partikular na petsa, tapat ang gamit nito. Bilang hatol, ang anchor ang nagsasalita.

Mga madalas itanong

Ano ang pagkakaiba ng VWAP at anchored VWAP?

Nire-reset ng Session VWAP ang running totals sa bawat market open, kaya inilalarawan lamang nito ang kasalukuyang araw. Sinisimulan ng Anchored VWAP ang mga total sa bar na pinili mo at hindi na nire-reset ang mga ito. Kaya inilalarawan nito ang average na presyong binayaran sa bawat session mula sa bar na iyon.

Saan nag-a-anchor ng VWAP ang mga trader?

Kabilang sa mga karaniwang pagpipilian ang earnings date, unang bar ng gap, swing high o swing low, at unang araw ng trading ng bagong listing. Maaaring maging anchor ang anumang bar. Ang anchor date ang kailangang malaman ng reader upang ma-interpret ang linya.

Nire-reset ba overnight ang anchored VWAP?

Hindi. Iyan ang pangunahing katangian nito. Parehong nagpapatuloy sa paglipas ng market close ang running sum ng presyo na minultiply sa volume at ang running sum ng volume. Nagpapatuloy ang mga ito sa susunod na session, gaano man karaming session ang lumipas.

May hinuhulaan ba ang anchored VWAP?

Descriptive statistic ito, hindi forecast. Binubuod nito ang mga presyong nabayaran na mula sa anchor. Kapag inilipat ang anchor, lilipat din ang linya at maaaring magbago ang lumilitaw na konklusyon. Kaya ang anumang claim na nakabatay rito ay kasingtibay lamang ng batayan para sa anchor date.

Maaari bang kalkulahin ang anchored VWAP sa daily bars?

Oo. Daily bars ang ginagamit sa mga panel sa page na ito, at ang session VWAP ng bawat isa ang nagsisilbing presyo ng bar. Sa intraday charts, minute bars naman ang ginagamit. Magkapareho ang formula sa alinmang resolution. Ang laki lamang ng increments ang nagbabago.


May kasamang SQL na gumawa sa bawat panel sa itaas, kaya maaari mong buksan ang alinman sa mga ito at ikaw mismo ang magpalit ng anchor date. Upang patakbuhin ang parehong running totals mula sa petsang mahalaga sa iyo, hilingin ito sa plain English sa Strasmore terminal.