Strasmore Research
నేర్చుకోండి Matt Connorద్వారా Matt Connor

Anchored VWAP సూత్రం, ఉపయోగాలు ఎలా అర్థం చేసుకోవాలి

Anchored VWAP మీరు ఎంచుకున్న బార్‌ నుంచి సంచిత సగటును ప్రారంభించి రీసెట్ చేయదు. Pythonలోని సూత్రం, anchor మార్చితే ఫలితం ఎలా మారుతుందో తెలుసుకోండి.

Anchored VWAP అనేది ఒక వాల్యూమ్-వెయిటెడ్ యావరేజ్ ప్రైస్. మీరు ఎంచుకున్న ఒక బార్‌ నుంచి దాని సంచిత లెక్కలు ప్రారంభమవుతాయి. అవి ఎప్పుడూ రీసెట్ కావు. Session VWAP ప్రతి మార్కెట్ ఓపెనింగ్‌ వద్ద మళ్లీ ప్రారంభమవుతుంది. అందువల్ల అది ఈరోజు సగటు షేరు ఏ ధరకు చేతులు మారిందో మాత్రమే చెబుతుంది. Anchored VWAP వేరే ప్రశ్నకు సమాధానం ఇస్తుంది: మీరు ప్రారంభ రేఖగా ఎంచుకున్న క్షణం నుంచి సగటు షేరు ఏ ధరకు చేతులు మారిందో అది చెబుతుంది.

Anchored VWAP అంటే ఏమిటి?

రెండు రకాల VWAPలు ఒకే గణితాన్ని ఉపయోగిస్తాయి. ప్రారంభం నుంచి ప్రతి బార్‌కు, ఆ బార్ ధరను దాని వాల్యూమ్‌తో గుణించి సంచిత మొత్తంగా ఉంచాలి. వాల్యూమ్‌కు మరో సంచిత మొత్తాన్ని విడిగా ఉంచాలి. మొదటి మొత్తాన్ని రెండవదానితో భాగించాలి. సూత్రంగా, nవ బార్ వద్ద anchored VWAP అంటే anchor bar నుంచి nవ బార్ వరకు ధర × వాల్యూమ్ మొత్తాన్ని, అదే బార్ల వాల్యూమ్ మొత్తంతో భాగించడం.

బార్ ధర సాధారణంగా దాని typical price. అంటే high, low, closeల సగటు. ఫీడ్ బార్‌ VWAPను అందిస్తే, ఆ VWAPను కూడా ఉపయోగించవచ్చు.

ఏ మొత్తం నుంచి ఏదీ తొలగించబడదు. 50-రోజుల moving average కొత్త పరిశీలనను చేర్చిన ప్రతిసారీ అత్యంత పాత పరిశీలనను తొలగిస్తుంది. అందువల్ల అది దిశ మార్చుకోగలదు. Anchored VWAP మాత్రం కొత్త మొత్తాలను మాత్రమే జోడిస్తుంది. కాబట్టి దాని గత సమాచారం శాశ్వతంగా ఉంటుంది. Session VWAPలో ప్రతి మార్కెట్ ఓపెన్‌ వద్ద రెండు మొత్తాలూ సున్నాగా మారతాయి. అందువల్ల అది opening bellను anchorగా ఉపయోగించే anchored VWAPతో సమానం.

VWAP మరియు anchored VWAP మధ్య తేడా ఏమిటి?

కింది ప్యానెల్ ఒక త్రైమాసికంలో Apple daily barsపై రెండింటినీ చూపిస్తుంది. session_vwap కాలమ్ ప్రతి ఒక్క sessionలోని volume weighted average price. ఇది ప్రతి రోజూ కొత్తగా లెక్కించబడుతుంది. anchored_vwap కాలమ్ windowలోని మొదటి session నుంచి ప్రారంభమై అక్కడి నుంచి సంచితమవుతుంది.

క్వెరీఒక తేదీకి యాంకర్ చేసిన VWAPతో రోజువారీ సెషన్ VWAP పోలిక (AAPL)
ప్రతి సంఖ్య వెనుక ఉన్న ఖచ్చితమైన SQL
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

62 sessionsలో, Apr 1 నుంచి Jun 30 వరకు, daily series మార్కెట్ కదలికను అనుసరిస్తుంది. Anchored series మాత్రం నెమ్మదిగా వంగుతుంది. మొదటి రోజున ఒకే session మొత్తం చరిత్రగా ఉండటంతో anchored line 255.02 వద్ద ప్రారంభమవుతుంది. Window ముగిసే సమయానికి అది 286.86 వద్దకు చేరుతుంది. ఆ సమయంలో final session VWAP 288.09గా ఉంటుంది. ఆకారమే ముఖ్యమైన పాఠం. ప్రారంభంలో anchored line daily lineను దగ్గరగా అనుసరిస్తుంది. దాని వెనుక ఉన్న వాల్యూమ్ పెరుగుతున్న కొద్దీ అది స్తబ్దుగా మారుతుంది.

ప్రజలు anchorను ఎక్కడ ఉంచుతారు?

సాధారణ anchorsలో earnings release, gapలోని మొదటి bar, 52-వారాల కనిష్ఠం, లేదా కొత్తగా లిస్టైన షేరు యొక్క opening print ఉన్నాయి. వీటన్నింటి వెనుక ఉన్న వాదన ఒకటే. ఆ క్షణం తర్వాత లావాదేవీలు చేసిన ప్రతి ఒక్కరూ సగటున anchored VWAP చెల్లించారు. కాబట్టి line కంటే పైకి ఉన్న ధర సగటు భాగస్వామి paper gainలో ఉన్నట్లు సూచిస్తుంది.

సాధారణంగా చెప్పకుండా వదిలే విషయం ఇది. Anchor ఒక విశ్లేషణాత్మక నిర్ణయం. కాబట్టి దాని వెంటనే ఫలితం కూడా మారుతుంది. కింది ప్యానెల్‌లో అదే షేరుకు గత పన్నెండు నెలల్లో ప్రతి నెల ప్రారంభాన్ని anchorగా తీసుకున్నారు. ఆ నెల నుంచి ఒకే నిర్ణీత ముగింపు తేదీ వరకు చెల్లించిన సగటు ధరను లెక్కించారు.

క్వెరీఅదే స్టాక్, అదే చివరి ధర; పన్నెండు వేర్వేరు యాంకర్లు (AAPL)
ప్రతి సంఖ్య వెనుక ఉన్న ఖచ్చితమైన SQL
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

Jul 2025 వద్ద anchor ఉంచితే, చెల్లించిన సగటు ధర 259.52 అవుతుంది. Windowలోని చివరి close దానితో పోలిస్తే 11.5%గా ఉంటుంది. Close line కంటే పైగా ఉన్నప్పుడు ఈ సంఖ్య సానుకూలంగా ఉంటుంది. Jun 2026 వద్ద anchor ఉంచితే ఫలితాలు 294.07 మరియు -1.6%. అదే షేరు, అదే చివరి ధర, కానీ anchor తర్వాత షేర్లు కలిగి ఉన్నవారు లాభ స్థితిలో ఉన్నారా అనే విషయంపై పన్నెండు వేర్వేరు నిర్ణయాలు వస్తాయి. గణితం మీకు anchorను ఎంచదు. గత ఫలితం తెలిసిన తర్వాత ఎంచుకున్న anchorను chart చెప్పాల్సిన విషయానికి అనుకూలంగా మార్చుకోవచ్చు. అందుకే మీరు చదివే ప్రతి anchored VWAP chart captionలో anchor date ఉండాలి.

Pythonలో anchored VWAPను ఎలా లెక్కిస్తారు?

రెండు seriesనూ barsపై ఒకే passలో లెక్కించవచ్చు. కింది script standard library Python 3ను మాత్రమే ఉపయోగిస్తుంది. ఇందులో packages లేదా network అవసరం లేదు. ఇది ముప్పై barsను చదివి session seriesను anchored series పక్కన చూపిస్తుంది. తర్వాత ధర anchored lineను తిరిగి దాటిన మొదటి barను చూపిస్తుంది. ఈ ఉదాహరణలోని bars కల్పితమైనవి. అదే loopను నిజమైన barsపై అమలు చేసినా గణితం మారదు.

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

రెండు జతల countersలోనే మొత్తం భావన ఉంది. session_pv మరియు session_vol తేదీ మారినప్పుడల్లా సున్నాగా మారతాయి. anchor_pv మరియు anchor_vol మాత్రం ఎప్పుడూ రీసెట్ కావు. ఆ తర్వాత మిగిలినదంతా output చూపించడమే.

Anchored line కదలికను ఎందుకు ఆపుతుంది?

Anchored VWAP పాతబడే కొద్దీ దాన్ని కదిలించడం కష్టమవుతుంది. దీనికి యాంత్రిక కారణం ఉంది. ప్రతి కొత్త bar మొత్తం anchor తర్వాతి వాల్యూమ్‌లో తన వాల్యూమ్‌కు ఉన్న నిష్పత్తికి సమానమైన weightతో averageలో చేరుతుంది. రెండో రోజున ఒక session మొత్తం వాల్యూమ్‌లో సగం బరువును కలిగి ఉండవచ్చు. రెండువందల sessions తర్వాత అదే session బరువు ఒక శాతంలో కొంత భాగంగా మాత్రమే ఉంటుంది. కింది ప్యానెల్ Apple barsపై ఆ weightను పది sessions చొప్పున కొలుస్తుంది.

క్వెరీఅత్యంత తాజా సెషన్ యాంకర్ చేసిన VWAPను ఎంత మేర మార్చగలదు (AAPL)
ప్రతి సంఖ్య వెనుక ఉన్న ఖచ్చితమైన SQL
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

మొదటి పది sessionsలో కొత్తగా చేరే bar lineలో సగటున 30.09% భాగాన్ని ప్రభావితం చేస్తుంది. Anchor bar స్వయంగా ఆ ప్రభావానికి మొత్తం కారణమవుతుంది. 130 session నాటికి అత్యంత కొత్త bar weight 2.14%కు తగ్గుతుంది. ఈ chartsను చదివేటప్పుడు రెండు విషయాలు గుర్తుంచుకోవాలి. పాత anchor దాదాపు సమాంతరమైన lineను సృష్టిస్తుంది. ప్రస్తుత కదలికలకు అది చాలా తక్కువగా స్పందిస్తుంది. కొత్త anchor మాత్రం ధర చుట్టూ వేగంగా కదిలే lineను సృష్టించి, ధరను తరచూ దాటుతుంది. వీటిలో ఏదీ మరొకదానికంటే సరైనది కాదు. అవి వేర్వేరు వయస్సుల్లో ఉన్న ఒకే formula. సాధారణంతో పోలిస్తే ప్రస్తుతం ఎంత వాల్యూమ్ వస్తుందో నేరుగా తెలుసుకోవడానికి సగటు రోజువారీ వాల్యూమ్ మరియు సాపేక్ష వాల్యూమ్ ఉపయోగపడతాయి.

Anchored VWAP ఏమి చూపుతుందని చెబుతుంది?

సాధారణ వాదన ప్రకారం ఇది మార్కెట్ పొజిషనింగ్‌ను చూపిస్తుంది. ఒక event వద్ద anchor ఉంచితే, ఆ తర్వాత లావాదేవీలు చేసిన ప్రతి ఒక్కరూ చెల్లించిన సగటు ధరను line చూపిస్తుంది. కాబట్టి line కంటే పైకి ఉన్న ధర ఎక్కువ మంది paper gainలో ఉన్నట్లు సూచిస్తుంది. Line కంటే దిగువన ఉన్న ధర దీనికి విరుద్ధమైన స్థితిని సూచిస్తుంది. కింది ప్యానెల్‌లో ఐదు household namesకు గత పన్నెండు నెలల్లో నమోదైన అత్యల్ప daily closeను anchorగా తీసుకున్నారు. తర్వాత windowలోని చివరి closeను ఆ లెక్కించిన averageతో పోల్చారు.

క్వెరీప్రతి స్టాక్‌ గత పన్నెండు నెలల కనిష్ఠ ముగింపు ధర వద్ద యాంకర్ చేయబడింది
ప్రతి సంఖ్య వెనుక ఉన్న ఖచ్చితమైన SQL
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

ఈ ఐదు పేర్ల ఫలితాలు SPY వద్ద 10.4% నుంచి MSFT వద్ద 1.3% వరకు విస్తరించాయి. ప్రతి ఫలితం దాని స్వంత anchor dateతో కొలవబడింది. ఈ వ్యత్యాసం జరిగినదాన్ని వివరిస్తుంది. అయితే దాని పరిమితులను స్పష్టంగా గుర్తించాలి. Anchored VWAP ఇప్పటికే నమోదైన ధరలు, వాల్యూమ్‌లతో లెక్కించిన descriptive statistic మాత్రమే. ఇది forecast కాదు. Published researchలో స్థిరమైన ప్రయోజనం నిరూపించిన rule కూడా కాదు. ధర, వాల్యూమ్ చరిత్రలో ఇప్పటికే లేని సమాచారాన్ని ఇది కలిగి ఉండదు. దాన్ని సృష్టించిన anchorను ఒక వ్యక్తి ఎంచుకున్నాడు. ఒక తేదీ నుంచి మార్కెట్ కదలికకు సారాంశంగా చదివితే ఇది విశ్వసనీయంగా ఉంటుంది. తుది తీర్పుగా చదివితే, మాట్లాడేది anchorనే.

తరచుగా అడిగే ప్రశ్నలు

VWAP మరియు anchored VWAP మధ్య తేడా ఏమిటి?

Session VWAP ప్రతి మార్కెట్ ఓపెన్‌ వద్ద తన సంచిత మొత్తాలను రీసెట్ చేస్తుంది. కాబట్టి అది ప్రస్తుత రోజును మాత్రమే వివరిస్తుంది. Anchored VWAP మీరు ఎంచుకున్న ఒక bar వద్ద totalsను ప్రారంభించి ఎప్పుడూ రీసెట్ చేయదు. అందువల్ల ఆ bar నుంచి జరిగిన ప్రతి sessionలో చెల్లించిన సగటు ధరను ఇది వివరిస్తుంది.

Traders VWAPకు anchorను ఎక్కడ ఉంచుతారు?

సాధారణ ఎంపికల్లో earnings date, gapలోని మొదటి bar, swing high లేదా swing low, అలాగే కొత్తగా లిస్టైన షేరు tradingలో మొదటి రోజు ఉన్నాయి. ఏ barనైనా anchorగా ఉపయోగించవచ్చు. Lineను అర్థం చేసుకోవడానికి reader తెలుసుకోవాల్సిన ముఖ్యమైన విషయం anchor date.

Anchored VWAP రాత్రివేళ reset అవుతుందా?

లేదు. అదే దాని నిర్వచించే లక్షణం. ధర × వాల్యూమ్ running sum, వాల్యూమ్ running sum రెండూ market close తర్వాత కూడా కొనసాగుతాయి. ఎన్ని sessions తర్వాతైనా తదుపరి sessionలో అవి మళ్లీ కొనసాగుతాయి.

Anchored VWAP ఏదైనా అంచనా వేస్తుందా?

ఇది forecast కంటే descriptive statistic. Anchor తర్వాత ఇప్పటికే చెల్లించిన ధరలను ఇది సారాంశంగా చూపిస్తుంది. Anchorను మార్చితే line మారుతుంది. కనిపించే నిర్ణయం కూడా తారుమారు కావచ్చు. కాబట్టి దానిపై ఆధారపడిన ఏ వాదనకైనా బలం ఆ anchor dateకు ఉన్న సమర్థనపై ఆధారపడి ఉంటుంది.

Daily barsపై anchored VWAPను లెక్కించవచ్చా?

అవును. ఈ పేజీలోని panels daily barsను ఉపయోగిస్తాయి. ప్రతి session VWAPను bar priceగా తీసుకున్నారు. Intraday chartsలో minute barsను ఉపయోగిస్తారు. రెండు resolutionsలో formula ఒకటే. మారేది increments పరిమాణం మాత్రమే.


పైనున్న ప్రతి panelను రూపొందించిన SQL కూడా అందుబాటులో ఉంది. కాబట్టి మీరు ఏదైనా panelను తెరిచి anchor dateను స్వయంగా మార్చవచ్చు. మీకు కావాల్సిన తేదీ నుంచి అదే running totalsను లెక్కించాలంటే Strasmore terminalలో సాధారణ ఇంగ్లీష్‌లో అడగండి.