Strasmore Research
Leren Matt ConnorDoor Matt Connor

Anchored VWAP: formule en toepassingen

Anchored VWAP begint het voortschrijdend gemiddelde bij een door u gekozen bar en wordt niet gereset. Bekijk de formule in Python en het effect van de anchor.

Anchored VWAP is een volumegewogen gemiddelde prijs waarbij de cumulatieve totalen beginnen bij één door u gekozen bar en daarna nooit worden gereset. Session VWAP begint bij elke opening opnieuw. Die indicator beantwoordt dus alleen de vraag tegen welke gemiddelde prijs het aandeel vandaag is verhandeld. De anchored-versie beantwoordt een andere vraag: tegen welke gemiddelde prijs is het aandeel verhandeld sinds het moment dat u als startpunt hebt gekozen?

Wat is anchored VWAP?

Beide versies gebruiken exact dezelfde berekening. Neem elke bar vanaf het startpunt, vermenigvuldig de prijs van die bar met het volume en houd daarvan een cumulatief totaal bij. Houd daarnaast een afzonderlijk cumulatief totaal van het volume bij. Deel het eerste totaal door het tweede. Uitgeschreven is de anchored VWAP op bar n de som van prijs maal volume vanaf de anchor-bar tot en met bar n, gedeeld door de som van het volume over diezelfde bars.

De prijs van een bar is doorgaans de typical price: het gemiddelde van de high, low en close. Soms is het de VWAP van de bar zelf, wanneer de feed die waarde publiceert.

Er wordt nooit iets uit een van beide totalen verwijderd. Een 50-daags voortschrijdend gemiddelde laat zijn oudste waarneming vallen zodra er een nieuwe bijkomt. Daardoor kan de lijn van richting veranderen. Anchored VWAP telt alleen op en houdt alle eerdere informatie vast. Session VWAP gebruikt dezelfde berekening, maar zet beide totalen bij elke opening op nul. Daarmee is het een anchored VWAP waarvan de opening de anchor is.

Wat is het verschil tussen VWAP en anchored VWAP?

Het onderstaande paneel berekent beide voor dagelijkse Apple-bars over één kwartaal. De kolom session_vwap is de volumegewogen gemiddelde prijs binnen elke afzonderlijke sessie. Dat is elke dag een nieuwe waarde. De kolom anchored_vwap begint bij de eerste sessie van de periode en bouwt vanaf daar cumulatief op.

QueryDagelijkse sessie-VWAP versus een op één datum verankerde VWAP (AAPL)
De exacte SQL achter elk getal
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

Over 62 sessies, van Apr 1 tot en met Jun 30, beweegt de dagelijkse reeks mee met de tape, terwijl de anchored-reeks geleidelijk afbuigt. De anchored-lijn opent op 255.02. Op dag één bestaat de volledige historie immers uit één sessie. Aan het einde van de periode komt de lijn uit op 286.86, tegenover een laatste session VWAP van 288.09. De vorm maakt het verschil duidelijk. In het begin volgt de anchored-lijn de dagelijkse lijn nauw, waarna zij afvlakt naarmate het onderliggende volume zich opstapelt.

Waar plaatsen beleggers de anchor?

Veelgebruikte anchors zijn een publicatie van bedrijfsresultaten, de eerste bar van een gap, een 52-weeks dieptepunt of de opening print van een nieuw genoteerd aandeel. De gedachte erachter is steeds dezelfde. Iedereen die na dat moment heeft gehandeld, heeft gemiddeld tegen de anchored VWAP gekocht of verkocht. Een koers boven de lijn betekent dan dat een gemiddelde marktparticipant op een niet-gerealiseerde winst zit.

Dit is het punt dat meestal onbesproken blijft. De keuze van de anchor berust op een oordeel, en de uitkomst verandert mee met die keuze. In het onderstaande paneel wordt hetzelfde aandeel geankerd aan het begin van elk van de laatste twaalf maanden. Vervolgens wordt de gemiddelde betaalde prijs berekend vanaf die maand tot één vaste einddatum.

QueryDezelfde aandelen en dezelfde laatste prijs, twaalf verschillende ankers (AAPL)
De exacte SQL achter elk getal
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

Een anchor op Jul 2025 resulteert in een gemiddelde betaalde prijs van 259.52. De laatste slotkoers van de periode staat op 11.5% ten opzichte daarvan. Dat cijfer is positief wanneer de slotkoers boven de lijn lag. Een anchor op Jun 2026 geeft 294.07 en -1.6%. Het gaat om hetzelfde aandeel en dezelfde laatste koers, maar om twaalf verschillende conclusies over de vraag of houders sinds de anchor winst hebben. De berekening kiest de anchor niet voor u. Een anchor die achteraf is gekozen, kan worden verschoven totdat die de gewenste boodschap van de chart ondersteunt. Daarom hoort de anchordatum in het bijschrift van elke anchored VWAP-chart die u leest.

Hoe berekent u anchored VWAP in Python?

Beide reeksen ontstaan in één iteratie over de bars. Het onderstaande script gebruikt standaardbibliotheek-Python 3, zonder packages en zonder netwerkverbinding. Het leest dertig bars en toont de session-reeks naast de anchored-reeks. Daarna meldt het de eerste bar waarop de prijs opnieuw door de anchored-lijn heen ging. De bars zijn voor deze demonstratie verzonnen. Als u dezelfde loop op echte bars toepast, blijft de berekening ongewijzigd.

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

De twee paren tellers vormen de kern van de berekening. session_pv en session_vol worden op nul gezet zodra de datum verandert. anchor_pv en anchor_vol worden nooit gereset. Alles daarna betreft alleen de uitvoer.

Waarom de anchored-lijn minder beweegt

Een anchored VWAP wordt mechanisch moeilijker te verplaatsen naarmate de indicator ouder wordt. Elke nieuwe bar komt met een gewicht in het gemiddelde dat gelijk is aan het eigen volume gedeeld door het totale volume sinds de anchor. Op de tweede dag kan één sessie de helft van het totale volume vertegenwoordigen. Tweehonderd sessies later vertegenwoordigt diezelfde sessie nog maar een fractie van één procent. Het onderstaande paneel meet dat gewicht op Apple-bars, in blokken van tien sessies.

QueryHoe sterk de nieuwste sessie een verankerde VWAP kan bewegen (AAPL)
De exacte SQL achter elk getal
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

In de eerste tien sessies vertegenwoordigt de binnenkomende bar gemiddeld 30.09% van de lijn. De anchor-bar zelf is daarbij verantwoordelijk voor het volledige gewicht. In sessie 130 is het gewicht van de nieuwste bar gedaald naar 2.14%. Bij het lezen van deze charts volgen twee conclusies. Een oude anchor produceert een vrijwel vlakke lijn die nauwelijks reageert op de huidige marktbeweging. Een recente anchor produceert een lijn die sterk rond de koers beweegt en die de koers voortdurend kan kruisen. Geen van beide is correcter. Het is dezelfde formule, maar in een andere levensfase. Voor een directe indruk van de hoeveelheid volume die binnenkomt ten opzichte van normaal meten gemiddeld dagvolume en relatief volume dat.

Wat zegt anchored VWAP te laten zien?

De standaardinterpretatie betreft de positionering. Wanneer de anchor op een gebeurtenis ligt, is de lijn de gemiddelde prijs die iedereen sinds die gebeurtenis heeft betaald. Een koers boven de lijn betekent dan dat een meerderheid een niet-gerealiseerde winst heeft. Een koers eronder wijst op het tegenovergestelde. In het onderstaande paneel worden vijf bekende namen geankerd op de laagste dagelijkse slotkoers die elk aandeel in de afgelopen twaalf maanden heeft geprint. Vervolgens wordt de laatste slotkoers van de periode afgezet tegen het daaruit voortvloeiende gemiddelde.

QueryVerankerd op de laagste slotkoers van elk aandeel over de afgelopen twaalf maanden
De exacte SQL achter elk getal
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

De vijf namen lopen uiteen van SPY op 10.4% tot MSFT op 1.3%. Elk aandeel wordt gemeten ten opzichte van zijn eigen anchordatum. Dat verschil beschrijft wat er is gebeurd. De beperkingen moeten daarbij duidelijk zijn. Anchored VWAP is een beschrijvende statistiek die wordt berekend uit reeds geprinte prijzen en volumes. Het is geen forecast en geen regel met een in gepubliceerd onderzoek aangetoonde edge. De indicator bevat geen informatie die niet al in de prijs- en volumehistorie aanwezig is. Bovendien is de anchor door een persoon gekozen. Als samenvatting van de tape sinds een bepaalde datum is de indicator eerlijk. Als oordeel is het de anchor die de conclusie bepaalt.

Veelgestelde vragen

Wat is het verschil tussen VWAP en anchored VWAP?

Session VWAP reset zijn cumulatieve totalen bij elke opening van de markt. De indicator beschrijft daardoor alleen de huidige dag. Anchored VWAP begint de totalen bij een door u gekozen bar en reset ze nooit. De indicator beschrijft daardoor de gemiddelde betaalde prijs over elke sessie sinds die bar.

Waar plaatsen traders een VWAP-anchor?

Veelgebruikte keuzes zijn een datum van publicatie van bedrijfsresultaten, de eerste bar van een gap, een swing high of swing low en de eerste handelsdag van een nieuwe notering. Elke bar kan als anchor dienen. De anchordatum is de informatie die een lezer nodig heeft om de lijn te interpreteren.

Wordt anchored VWAP 's nachts gereset?

Nee. Dat is de bepalende eigenschap. Zowel de cumulatieve som van prijs maal volume als de cumulatieve volumesom loopt door na de sluiting. De berekening gaat bij de volgende sessie verder, ongeacht hoeveel sessies later dat is.

Voorspelt anchored VWAP iets?

Het is een beschrijvende statistiek en geen forecast. De indicator vat samen wat sinds de anchor al is betaald. Als u de anchor verplaatst, verplaatst u ook de lijn en kan de schijnbare conclusie omslaan. Elke conclusie die daarop is gebaseerd, is daarom slechts zo sterk als de onderbouwing van die anchordatum.

Kan anchored VWAP op dagelijkse bars worden berekend?

Ja. De panelen op deze pagina gebruiken dagelijkse bars, waarbij de VWAP van elke sessie als barprijs dient. Intraday-charts gebruiken in plaats daarvan minutebars. De formule is op beide resoluties identiek. Alleen de omvang van de stappen verandert.


Elk paneel hierboven wordt geleverd met de SQL waarmee het is geproduceerd. U kunt een paneel openen en de anchordatum zelf wijzigen. Als u dezelfde cumulatieve totalen wilt berekenen vanaf een datum die voor u relevant is, kunt u dat in gewoon Nederlands aanvragen op de Strasmore-terminal.