Anchored VWAP: சூத்திரம் மற்றும் பயன்பாடுகள்
Anchored VWAP, நீங்கள் தேர்ந்தெடுக்கும் bar-இல் இருந்து running average-ஐத் தொடங்கி reset ஆகாது. Python சூத்திரத்தையும், anchor-ஐ மாற்றுவது முடிவை எவ்வாறு மாற்றும் என்பதையும் அறிக.
Anchored VWAP என்பது நீங்கள் தேர்ந்தெடுக்கும் ஒரு bar-இல் இருந்து running totals-ஐத் தொடங்கி, அவற்றை ஒருபோதும் reset செய்யாத volume weighted average price ஆகும். Session VWAP ஒவ்வொரு market open-லும் மீண்டும் தொடங்குகிறது. எனவே, இன்று சராசரியாக எந்த விலையில் பங்குகள் கைமாறின என்பதையே அது காட்டும். Anchored VWAP வேறொரு கேள்விக்கு விடையளிக்கிறது: நீங்கள் தொடக்கப் புள்ளியாகத் தேர்ந்தெடுத்த தருணத்திலிருந்து, சராசரியாக எந்த விலையில் பங்குகள் கைமாறின?
Anchored VWAP என்றால் என்ன?
இரண்டு முறைகளிலும் ஒரே கணிதம்தான் பயன்படுத்தப்படுகிறது. தொடக்க bar-இலிருந்து ஒவ்வொரு bar-ஐயும் எடுத்துக்கொண்டு, அந்த bar-ன் விலையை அதன் volume-ஆல் பெருக்கி running total ஆகச் சேர்க்க வேண்டும். Volume-க்காகத் தனியாக இரண்டாவது running total-ஐ வைத்திருக்க வேண்டும். முதல் total-ஐ இரண்டாவது total-ஆல் வகுக்க வேண்டும். முறையாக எழுதினால், bar n-இல் உள்ள anchored VWAP என்பது anchor bar முதல் bar n வரை price × volume-ன் கூட்டுத்தொகையை, அதே bar-களின் volume கூட்டுத்தொகையால் வகுத்ததாகும்.
ஒரு bar-ன் விலை என்பது பொதுவாக அதன் typical price ஆகும். அதாவது, அதன் high, low மற்றும் close ஆகியவற்றின் சராசரி. Feed அந்த bar-க்கான VWAP-ஐ வெளியிட்டால், அதுவும் பயன்படுத்தப்படலாம்.
இரண்டு total-களிலிருந்தும் எதுவும் ஒருபோதும் நீக்கப்படாது. 50-day moving average புதிய observation-ஐப் பெறும் ஒவ்வொரு முறையும் பழைய observation-ஐ நீக்குகிறது. அதனால்தான் அது திசைமாற முடிகிறது. Anchored VWAP மதிப்புகளைச் சேர்த்துக்கொண்டே இருக்கும். எனவே அதன் நினைவகம் நிரந்தரமானது. Session VWAP-இல் இதே கணக்கீடு பயன்படுத்தப்படுகிறது; ஆனால் ஒவ்வொரு market open-லும் இரண்டு total-களும் zero ஆக reset செய்யப்படுகின்றன. இதனால், அதன் anchor market opening bell ஆக இருக்கும் anchored VWAP போல அது செயல்படுகிறது.
VWAP-க்கும் anchored VWAP-க்கும் என்ன வேறுபாடு?
கீழுள்ள panel, ஒரு quarter காலத்துக்கான Apple daily bars மீது இரண்டையும் கணக்கிடுகிறது. session_vwap column என்பது ஒவ்வொரு session-க்குள் உள்ள volume weighted average price ஆகும். இது ஒவ்வொரு நாளும் புதிதாகக் கணக்கிடப்படும். anchored_vwap column என்பது window-இன் முதல் session-ல் தொடங்கி, அங்கிருந்து சேர்த்துக்கொண்டே வரும் மதிப்பாகும்.
ஒவ்வொரு எண்ணின் பின்னணியில் உள்ள துல்லியமான 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 date62 sessions கொண்ட இந்தத் தொடரில், Apr 1 முதல் Jun 30 வரை, daily series tape-ஐப் பின்தொடர்ந்து நகர்கிறது. Anchored series மெதுவாக வளைந்து நகர்கிறது. முதல் நாளில் ஒரே ஒரு session-தான் முழு வரலாறாக இருப்பதால், anchored line 255.02-ல் தொடங்குகிறது. Window முடிவில் அது 286.86-ஐ அடைகிறது. அதே நேரத்தில், இறுதி session VWAP 288.09 ஆகும். இதன் வடிவமே முக்கியமான பாடம். ஆரம்பத்தில் anchored line daily line-ஐ நெருக்கமாகப் பின்தொடர்கிறது. பின்னர் அதன் பின்னால் சேரும் volume அதிகரிக்கும்போது அது தட்டையாகிறது.
மக்கள் anchor-ஐ எங்கு வைக்கிறார்கள்?
பொதுவான anchor-கள் earnings release, gap-இன் முதல் bar, 52-week low, அல்லது புதிதாகப் பட்டியலிடப்பட்ட stock-ன் opening print ஆகியவையாகும். இவை அனைத்துக்கும் பின்னால் உள்ள கருத்து ஒன்றே. அந்த தருணத்திற்குப் பிறகு transaction செய்த அனைவரும் சராசரியாக anchored VWAP விலையைச் செலுத்தியுள்ளனர். எனவே, line-க்கு மேலுள்ள விலை, சராசரி market participant paper gain நிலையில் இருப்பதைக் காட்டுகிறது.
பொதுவாகச் சொல்லப்படாமல் விடப்படும் பகுதி இதுதான். Anchor என்பது ஒரு judgment call. அதனுடன் முடிவும் மாறும். கீழுள்ள panel, அதே stock-ஐ கடந்த பன்னிரண்டு மாதங்களின் ஒவ்வொரு மாதத் தொடக்கத்திலும் anchor செய்து, அந்த மாதத்திலிருந்து ஒரே fixed end date வரை செலுத்தப்பட்ட சராசரி விலையைக் கணக்கிடுகிறது.
ஒவ்வொரு எண்ணின் பின்னணியில் உள்ள துல்லியமான 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.mJul 2025-ல் anchor செய்வதால், செலுத்தப்பட்ட சராசரி விலை 259.52 ஆகிறது. Window-இன் இறுதி close அதனுடன் ஒப்பிடும்போது 11.5% ஆகும். Close line-க்கு மேலிருந்தால் இந்த மதிப்பு positive ஆக இருக்கும். Jun 2026-ல் anchor செய்தால், முடிவு 294.07 மற்றும் -1.6% ஆகிறது. Stock ஒன்றே. இறுதி விலையும் ஒன்றே. ஆனால் anchor-க்குப் பிறகு வைத்திருப்பவர்கள் gain நிலையில் உள்ளார்களா என்பதற்கு பன்னிரண்டு வேறுபட்ட முடிவுகள் கிடைக்கின்றன. கணிதம் உங்கள் சார்பில் anchor-ஐத் தேர்ந்தெடுக்காது. கடந்த நிகழ்வை அடிப்படையாகக் கொண்டு தேர்ந்தெடுக்கப்பட்ட anchor-ஐ, chart சொல்ல வேண்டிய கருத்துக்கு ஆதரவாக மாற்றிக்கொண்டே இருக்க முடியும். அதனால்தான் நீங்கள் பார்க்கும் ஒவ்வொரு anchored VWAP chart-ன் caption-ல் anchor date குறிப்பிடப்பட வேண்டும்.
Python-ல் anchored VWAP-ஐ எவ்வாறு கணக்கிடுவது?
இரண்டு series-களும் bars மீது ஒரே pass மூலம் கிடைக்கின்றன. கீழுள்ள script, packages அல்லது network இல்லாமல் standard library Python 3-ல் எழுதப்பட்டுள்ளது. இது thirty bars-ஐப் படித்து, session series-ஐ anchored series-க்கு அடுத்ததாக அச்சிடுகிறது. பின்னர் price anchored line-ஐ மீண்டும் கடந்து சென்ற முதல் bar-ஐக் காட்டுகிறது. Demonstration-க்காக bars உருவாக்கப்பட்டவை. அதே loop-ஐ real bars மீது இயக்கினாலும் 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")
இரண்டு counter-களின் இரண்டு ஜோடிகளே முழுக் கருத்தையும் விளக்குகின்றன. session_pv மற்றும் session_vol date மாறும் ஒவ்வொரு முறையும் zero ஆக reset செய்யப்படுகின்றன. anchor_pv மற்றும் anchor_vol ஒருபோதும் reset செய்யப்படுவதில்லை. அதன் பிறகு நடைபெறுவது அனைத்தும் output செய்வதே.
Anchored line ஏன் நகர்வதை நிறுத்துகிறது?
Anchored VWAP வயதாகும்போது, அதை நகர்த்துவது கடினமாகிறது. இதற்கு ஒரு இயந்திரவியல் காரணம் உள்ளது. ஒவ்வொரு புதிய bar-மும், anchor-க்குப் பிறகு சேர்ந்துள்ள மொத்த volume-ல் அதன் சொந்த volume வகிக்கும் பங்கிற்கு இணையான weight-உடன் average-க்குள் சேர்கிறது. இரண்டாவது நாளில், ஒரு session மொத்தத்தின் பாதி அளவுக்கு weight வகிக்கலாம். Two hundred sessions கழித்து, அதே session-ன் weight ஒரு சதவீதத்தின் ஒரு பகுதி மட்டுமே. கீழுள்ள panel, Apple bars மீது இந்த weight-ஐ ten-session blocks-ஆக அளவிடுகிறது.
ஒவ்வொரு எண்ணின் பின்னணியில் உள்ள துல்லியமான 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முதல் ten sessions-ல், புதிதாக வரும் bar line-ன் சராசரியாக 30.09% அளவை நிர்ணயிக்கிறது. Anchor bar தானாகவே அதில் முழுப் பங்கையும் வகிக்கிறது. Session 130-க்கு, புதிய bar-ன் பங்கு 2.14% ஆகக் குறைகிறது. இந்த charts-ஐப் பார்க்கும்போது இரண்டு விஷயங்கள் தெளிவாகின்றன. பழைய anchor, தற்போதைய நிகழ்வுகளுக்கு மிகக் குறைவாகப் பதிலளிக்கும், கிட்டத்தட்ட தட்டையான line-ஐ உருவாக்குகிறது. புதிய anchor, price-ஐச் சுற்றி வேகமாக அசைந்து, அதை அடிக்கடி கடக்கும் line-ஐ உருவாக்குகிறது. இதில் எதுவும் மற்றொன்றைவிடச் சரியானது அல்ல. வேறுபாடு formula-வில் இல்லை; அவற்றின் வயதில் மட்டுமே உள்ளது. வழக்கமான அளவுடன் ஒப்பிடும்போது தற்போது எவ்வளவு volume வருகிறது என்பதை நேரடியாக அறிய, average daily volume மற்றும் relative volume ஆகியவை உதவும்.
Anchored VWAP எதை காட்டுவதாகக் கூறுகிறது?
பொதுவாகக் கூறப்படும் விளக்கம் positioning read ஆகும். ஒரு நிகழ்வை anchor-ஆகக் கொண்டால், அதன் பின்னர் transaction செய்த அனைவரும் செலுத்திய சராசரி விலையை line காட்டுகிறது. எனவே, line-க்கு மேலுள்ள price, பெரும்பாலான holdings paper gain நிலையில் இருப்பதைக் குறிக்கும். Line-க்கு கீழுள்ள price அதற்கு எதிர்மாறான நிலையைக் குறிக்கும். கீழுள்ள panel, ஐந்து 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தங்கள் சொந்த anchor date-க்கு எதிராக அளவிடப்பட்டபோது, இந்த ஐந்து names SPY முதல் MSFT வரை பரவுகின்றன; அவற்றின் மதிப்புகள் முறையே 10.4% முதல் 1.3% வரை உள்ளன. இந்த spread-ல் நடந்த நிகழ்வுகள் பிரதிபலிக்கின்றன. ஆனால் அதன் வரம்புகளைத் தெளிவாகப் புரிந்துகொள்வது அவசியம். Anchored VWAP என்பது ஏற்கனவே பதிவு செய்யப்பட்ட prices மற்றும் volumes-ல் இருந்து கணக்கிடப்படும் descriptive statistic ஆகும். அது forecast அல்ல. Published research-ல் நிரூபிக்கப்பட்ட edge கொண்ட rule-மும் அல்ல. Price மற்றும் volume history-யில் ஏற்கனவே இல்லாத எந்தத் தகவலும் இதில் இல்லை. மேலும், அதை உருவாக்கிய anchor-ஐ ஒருவர் தேர்ந்தெடுத்துள்ளார். ஒரு குறிப்பிட்ட date-க்குப் பிறகு tape-ல் நடந்தவற்றின் சுருக்கமாக இதைப் படித்தால், அது நேர்மையானது. ஒரு தீர்ப்பாகப் படித்தால், anchor-தான் பேசுகிறது.
FAQ
VWAP-க்கும் anchored VWAP-க்கும் என்ன வேறுபாடு?
Session VWAP ஒவ்வொரு market open-லும் running totals-ஐ reset செய்கிறது. எனவே, அது நடப்பு நாளை மட்டுமே விவரிக்கும். Anchored VWAP, நீங்கள் தேர்ந்தெடுக்கும் ஒரு bar-ல் totals-ஐத் தொடங்கி ஒருபோதும் reset செய்யாது. எனவே, அந்த bar-க்குப் பிறகு நடந்த ஒவ்வொரு session-லும் செலுத்தப்பட்ட சராசரி விலையை அது விவரிக்கும்.
Traders VWAP-க்கு anchor-ஐ எங்கு வைக்கிறார்கள்?
பொதுவான தேர்வுகள் earnings date, gap-இன் முதல் bar, swing high அல்லது swing low, மற்றும் புதிய listing-ன் முதல் trading day ஆகியவை. எந்த bar-யும் anchor ஆக இருக்கலாம். Line-ஐப் புரிந்துகொள்ள வாசகர் அறிந்திருக்க வேண்டியது anchor date ஆகும்.
Anchored VWAP overnight-ல் reset ஆகுமா?
இல்லை. அதுவே அதன் அடிப்படை பண்பு. price × volume-ன் running sum மற்றும் volume-ன் running sum ஆகிய இரண்டும் market close-ஐத் தாண்டியும் தொடர்கின்றன. அடுத்த session எப்போது வந்தாலும், அவை அங்கிருந்து மீண்டும் தொடர்கின்றன.
Anchored VWAP எதையாவது predict செய்கிறதா?
இது forecast அல்ல; descriptive statistic ஆகும். Anchor-க்குப் பிறகு ஏற்கனவே செலுத்தப்பட்ட விலையை இது சுருக்கமாகக் காட்டுகிறது. Anchor-ஐ மாற்றினால் line மாறும். அதனால் தோன்றும் முடிவும் மாறக்கூடும். எனவே, அதனை அடிப்படையாகக் கொண்ட எந்தக் கருத்தும் அந்த anchor date-க்கான காரணத்தின் வலிமையைப் பொறுத்ததே.
Daily bars மீது anchored VWAP-ஐக் கணக்கிட முடியுமா?
ஆம். இந்தப் பக்கத்தில் உள்ள panels, ஒவ்வொரு session VWAP-ஐ bar price-ஆகக் கொண்டு daily bars-ஐப் பயன்படுத்துகின்றன. Intraday charts-ல் அதற்கு பதிலாக minute bars பயன்படுத்தப்படுகின்றன. இரண்டு resolutions-லும் formula ஒன்றே. மாறுவது increments-ன் அளவு மட்டுமே.
மேலுள்ள ஒவ்வொரு panel-உடனும் அதை உருவாக்கிய SQL வழங்கப்பட்டுள்ளது. எனவே, ஒன்றைத் திறந்து anchor date-ஐ நீங்களே மாற்றலாம். உங்களுக்கு விருப்பமான date-இலிருந்து அதே running totals-ஐ இயக்க, Strasmore terminal-ல் plain English-ல் கேட்கலாம்.