Strasmore Research
تعلَّم Matt Connorبقلم Matt Connor · آخر تحديث في 2026-08-08

ما هو Anchored VWAP؟ الصيغة والاستخدامات

تعرّف إلى Anchored VWAP، الذي يبدأ متوسطه التراكمي من شمعة تختارها ولا يعيد التصفير، مع صيغة واضحة بلغة Python وتأثير تغيير نقطة الارتكاز.

Anchored VWAP هو متوسط السعر المرجّح بالحجم الذي يبدأ إجماليَيه التراكميين عند شمعة تختارها ولا يعيد تصفيرهما مطلقاً. أما VWAP الجلسة فيُعاد احتسابه عند كل جرس افتتاح، ولذلك لا يجيب إلا عن سؤال: ما متوسط السعر الذي جرى به تداول السهم اليوم؟ يجيب الإصدار anchored عن سؤال مختلف: ما متوسط السعر الذي جرى به تداول السهم منذ اللحظة التي اخترتها كنقطة بداية؟

ما هو Anchored VWAP؟

يستخدم الإصداران الحساب نفسه تماماً. خذ كل شمعة منذ البداية، واضرب سعرها في حجم تداولها، واحتفظ بإجمالي تراكمي. واحتفظ بإجمالي تراكمي ثانٍ للحجم وحده. اقسم الإجمالي الأول على الثاني. وبصيغة مكتوبة، يساوي Anchored VWAP عند الشمعة n مجموع حاصل ضرب السعر في الحجم من شمعة الارتكاز حتى الشمعة n، مقسوماً على مجموع الأحجام في الشموع نفسها.

يكون سعر الشمعة عادةً سعرها النموذجي، أي متوسط أعلى سعر وأدنى سعر وسعر الإغلاق، أو VWAP الشمعة نفسها عندما ينشر مزود البيانات هذه القيمة.

لا يُحذف أي شيء من أيٍّ من الإجماليين. فالمتوسط المتحرك لـ50 يوماً يحذف أقدم مشاهدة كلما أضاف مشاهدة جديدة، وهذا ما يسمح له بتغيير اتجاهه. أما Anchored VWAP فلا يضيف إلا قيماً جديدة، ولذلك تبقى ذاكرته دائمة. ويستخدم VWAP الجلسة الحساب نفسه، مع تصفير الإجماليين عند كل افتتاح، ما يجعله Anchored VWAP تكون نقطة ارتكازه جرس الافتتاح.

ما الفرق بين VWAP وAnchored VWAP؟

يعرض الرسم أدناه كليهما على شموع يومية لسهم Apple خلال ربع واحد. يعرض العمود session_vwap متوسط السعر المرجّح بالحجم داخل كل جلسة منفردة، ولذلك يبدأ برقم جديد كل يوم. أما العمود anchored_vwap فيبدأ من أول جلسة في الفترة ويتراكم بعد ذلك.

الاستعلام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 جلسة، من Apr 1 إلى Jun 30، تتحرك السلسلة اليومية مع التداولات، بينما ينحني خط Anchored VWAP ببطء. يبدأ الخط anchored عند 255.02، لأن الجلسة الواحدة في اليوم الأول تمثل التاريخ بأكمله، ويصل إلى 286.86 بنهاية الفترة، مقابل VWAP نهائي للجلسة يبلغ 288.09. وهذا هو الدرس الذي يوضحه الشكل. يتتبع الخط anchored الخط اليومي عن قرب في البداية، ثم يصبح أكثر استواءً مع تراكم حجم التداول خلفه.

أين يضع المتداولون نقطة الارتكاز؟

تشمل نقاط الارتكاز الشائعة تاريخ إعلان الأرباح، وأول شمعة في فجوة سعرية، وأدنى مستوى خلال 52 أسبوعاً، وأول صفقة تنفيذ لسهم أُدرج حديثاً. والافتراض المرتبط بها جميعاً واحد. فكل من أجرى معاملة بعد تلك اللحظة دفع، في المتوسط، سعراً يساوي Anchored VWAP، ولذلك فإن التداول فوق الخط يعني أن المشارك المتوسط يملك ربحاً غير محقق.

لكن هناك جانباً يُغفل عادةً. اختيار نقطة الارتكاز حكم تقديري، والنتيجة تتغير بتغيرها. يضع الرسم أدناه نقطة الارتكاز للسهم نفسه عند بداية كل شهر من الأشهر الاثني عشر الأخيرة، ثم يحسب متوسط السعر المدفوع من ذلك الشهر حتى تاريخ نهاية ثابت.

الاستعلامالسهم نفسه وآخر سعر نفسه، مع اثني عشر تثبيتًا مختلفًا (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 إلى متوسط سعر مدفوع يبلغ 259.52، ويقيس آخر إغلاق في الفترة 11.5% مقارنةً به. وتكون هذه القيمة موجبة عندما يكون الإغلاق فوق الخط. أما وضع نقطة الارتكاز عند Jun 2026 فيعطي 294.07 و-1.6%. السهم نفسه، وآخر سعر نفسه، لكن اثنا عشر حكماً مختلفاً بشأن ما إذا كان حائزو السهم منذ نقطة الارتكاز يحققون ربحاً غير محقق. لا يختار الحساب نقطة الارتكاز نيابةً عنك. ويمكن تحريك نقطة ارتكاز اختيرت بعد وقوع الحدث حتى تدعم ما يُراد أن يقوله الرسم. لذلك يجب أن يرد تاريخ الارتكاز في شرح كل رسم Anchored VWAP تقرؤه.

كيف تحسب Anchored VWAP في Python؟

تنتج السلسلتان من مرور واحد على الشموع. يستخدم البرنامج أدناه Python 3 من المكتبة القياسية، من دون حزم أو اتصال بالشبكة. يقرأ ثلاثين شمعة ويطبع سلسلة الجلسة إلى جانب السلسلة anchored، ثم يحدد أول شمعة عاد فيها السعر إلى عبور خط Anchored VWAP. والشموع مُنشأة لأغراض العرض. يمكنك تطبيق الحلقة نفسها على شموع حقيقية، ولن يتغير الحساب.

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

يمثل زوجا العدادات الفكرة بأكملها. يُصفّر session_pv وsession_vol عند تغير التاريخ. أما anchor_pv وanchor_vol فلا يُصفّران مطلقاً. وما يأتي بعد ذلك يقتصر على طباعة النتائج.

لماذا يتوقف الخط anchored عن الحركة؟

يصبح تحريك Anchored VWAP أصعب مع مرور الوقت لسبب حسابي. تدخل كل شمعة جديدة في المتوسط بوزن يساوي حجمها مقسوماً على إجمالي الحجم منذ نقطة الارتكاز. في اليوم الثاني، قد تمثل جلسة واحدة نصف الإجمالي. وبعد مئتي جلسة، تمثل الجلسة نفسها جزءاً من واحد في المئة. يقيس الرسم أدناه هذا الوزن على شموع Apple، ضمن مجموعات من عشر جلسات.

الاستعلامإلى أي مدى يمكن لأحدث جلسة تحريك 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

خلال الجلسات العشر الأولى، يمثل متوسط الشمعة الجديدة 30.09% من الخط، بينما تمثل شمعة الارتكاز نفسها كامل الوزن. وبحلول الجلسة 130، ينخفض وزن أحدث شمعة إلى 2.14%. وتترتب على ذلك نقطتان عند قراءة هذه الرسوم. ترسم نقطة الارتكاز القديمة خطاً شبه مستوٍ لا يستجيب إلا قليلاً لما يحدث الآن، بينما ترسم نقطة الارتكاز الحديثة خطاً يتذبذب حول السعر ويعبره باستمرار. ولا توجد واحدة منهما أكثر صحة. إنهما الصيغة نفسها في عمرين مختلفين. وللقياس المباشر لحجم التداول الوارد مقارنةً بالمعتاد، يقيس متوسط حجم التداول اليومي والحجم النسبي ذلك.

ماذا يدّعي Anchored VWAP أنه يوضحه؟

الادعاء المعتاد هو أنه يوضح وضعية المشاركين. عند وضع نقطة الارتكاز على حدث معين، يمثل الخط متوسط السعر الذي دفعه كل من أجرى معاملة منذ ذلك الحدث. ولذلك يعني السعر فوق الخط أن غالبية الحائزين تملك ربحاً غير محقق، بينما يعني السعر دونه العكس. يضع الرسم أدناه نقاط الارتكاز لخمسة أسهم معروفة عند أدنى إغلاق يومي سجله كل سهم خلال الاثني عشر شهراً الماضية، ثم يقيس آخر إغلاق في الفترة مقارنةً بالمتوسط الناتج.

الاستعلاممثبت عند أدنى سعر إغلاق لكل سهم خلال الاثني عشر شهرًا الماضية
استعلام 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%، ويُقاس كل منها مقارنةً بتاريخ نقطة ارتكازه. ويصف هذا التفاوت ما حدث، لكن من المهم تحديد حدوده بدقة. Anchored VWAP إحصاء وصفي يُحسب من أسعار وأحجام تداول سُجلت بالفعل، وليس توقعاً ولا قاعدة ثبتت فاعليتها في الأبحاث المنشورة. وهو لا يتضمن معلومات لا يحتوي عليها تاريخ السعر والحجم أصلاً، كما أن نقطة الارتكاز التي أنتجته اختارها شخص ما. وعند قراءته بوصفه ملخصاً للتداولات منذ تاريخ معين، يكون صريحاً. أما عند قراءته بوصفه حكماً، فإن نقطة الارتكاز هي التي تتحدث.

الأسئلة الشائعة

ما الفرق بين VWAP وAnchored VWAP؟

يُعيد VWAP الجلسة تصفير إجمالياته التراكمية عند كل افتتاح للسوق، ولذلك يصف اليوم الحالي فقط. يبدأ Anchored VWAP إجمالياته عند شمعة تختارها ولا يعيد تصفيرها، ولذلك يصف متوسط السعر المدفوع في كل جلسة منذ تلك الشمعة.

أين يضع المتداولون نقطة ارتكاز VWAP؟

تشمل الخيارات الشائعة تاريخ إعلان الأرباح، وأول شمعة في فجوة سعرية، وقمة أو قاعاً تأرجحياً، وأول يوم تداول لسهم مدرج حديثاً. ويمكن أن تكون أي شمعة نقطة ارتكاز، لكن تاريخ الارتكاز هو المعلومة التي يحتاج إليها القارئ لتفسير الخط.

هل يُعاد تصفير Anchored VWAP ليلاً؟

لا، وهذه هي الخاصية التي تحدده. يستمر مجموع حاصل ضرب السعر في الحجم ومجموع الحجم التراكميان عبر الإغلاق، ثم يُستأنف الحساب في الجلسة التالية، سواء جاءت بعد جلسة واحدة أو بعد عدد كبير من الجلسات.

هل يتنبأ Anchored VWAP بأي شيء؟

هو إحصاء وصفي وليس توقعاً. ويلخص ما دُفع بالفعل منذ نقطة الارتكاز. ويؤدي تغيير نقطة الارتكاز إلى تغيير الخط، وقد يعكس الاستنتاج الظاهري. لذلك لا تكون أي خلاصة مبنية عليه أقوى من الحجة التي تبرر اختيار تاريخ الارتكاز.

هل يمكن حساب Anchored VWAP على الشموع اليومية؟

نعم. تستخدم الرسوم في هذه الصفحة شموعاً يومية، مع استخدام VWAP كل جلسة كسعر الشمعة. أما الرسوم داخل اليوم فتستخدم شموعاً بالدقائق. والصيغة متطابقة في كلا الإطارين، ولا يتغير إلا حجم الزيادات.


يتضمن كل رسم أعلاه SQL الذي أنتجه، ولذلك يمكنك فتح أي رسم وتغيير تاريخ نقطة الارتكاز بنفسك. ولتشغيل الإجماليات التراكمية نفسها بدءاً من تاريخ يهمك، اطلب ذلك بلغة إنجليزية عادية على منصة Strasmore.