تحليل البنية الدقيقة للسوق 29 يونيو 2026
اكتشف تفاصيل شريط التداول وسعر العرض والطلب، مع تصحيح حجم التداول ونانو ثانية من البيانات. اقرأ التقرير لتفهم كواليس حركة السوق بدقة متناهية.
هذا التقرير هو الملحق التفصيلي لـ ملخص السوق بتاريخ 29 يونيو 2026: وهو يمثل البيانات الخام التي تسبق الشموع الدقيقة — 156.1 مليون صفقة فردية و 505.38 مليون تحديث لسعر العرض والطلب (NBBO) خلال جلسة يوم اثنين عادية. كل رقم هو نتيجة استعلام مخزن (يمكنك توسيع أي لوحة للحصول على استعلام SQL الدقيق)، كما يتضمن التقرير تحليلين مفصلين لما تم اكتشافه اليوم: تصحيح لحجم التداول تطلبه قاموس الأكواد الخاص بشريط الأسعار، وملف مورد يتوقف فجأة عند حرف S.
سجل التداول، صفقة تلو الأخرى
يأتي التحقق من الجلسة أولاً ولا يُفترض حدوثه أبداً: يحتوي تقويم عطلات البورصة على 0 صفوف لتاريخ 29 يونيو 2026، وسجل مؤشر SPY بالضبط 390 شمعة دقيقة ضمن نافذة التداول العادية — جلسة كاملة من الساعة 9:30 صباحاً حتى 4:00 مساءً بتوقيت نيويورك. وخلال فترة التداول الممتدة، سجل الشريط الموحد 156.1 مليون صفقة فردية.
استعلام SQL الدقيق وراء كل رقم
WITH
(SELECT count() FROM global_markets.stocks_market_holidays WHERE date = '2026-06-29') AS holiday_rows,
(
SELECT countIf(window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00')
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-06-29 00:00:00' AND window_start < '2026-06-30 00:00:00'
) AS spy_bars
SELECT
holiday_rows AS holiday_rows_jun29,
spy_bars AS spy_regular_session_bars,
round(count() / 1e6, 1) AS trades_m,
round(100.0 * countIf(size < 100) / count(), 2) AS odd_lot_pct_of_trades,
round(100.0 * toFloat64(sumIf(size, size < 100)) / toFloat64(sum(size)), 2) AS odd_lot_pct_of_shares,
multiIf(
countIf(size <= 19) >= 0.5 * count(), 19,
countIf(size <= 20) >= 0.5 * count(), 20,
countIf(size <= 21) >= 0.5 * count(), 21,
countIf(size <= 22) >= 0.5 * count(), 22,
countIf(size <= 23) >= 0.5 * count(), 23,
0) AS median_print_shares,
round(countIf(size = 1) / 1e6, 1) AS one_share_trades_m,
round(100.0 * countIf(size != round(size)) / count(), 2) AS fractional_pct_of_trades
FROM global_markets.stocks_trades
WHERE sip_timestamp >= '2026-06-29 00:00:00' AND sip_timestamp < '2026-06-30 00:00:00'كانت نسبة 72.61% من جميع الصفقات عبارة عن كميات فردية (odd lots) — وهي صفقات تقل عن 100 سهم — ومع ذلك لم تحرك سوى 8.79% من إجمالي الأسهم الخام — وهو الإجمالي غير المصحح الذي يقلله قسم تحليل حجم التداول أدناه. وكان وسيط الصفقات هو 21 سهم، والذي تم قياسه باستخدام مسبار أقواس ذاتي التحقق — حيث تراكمت الأعداد عند 19 إلى 23 سهماً — ويعطي النتيجة 0 إذا أخطأ القوس، وهو محدد بحيث يحافظ على القيمة في حال الخطأ. بلغ عدد الصفقات التي كانت لسهم واحد فقط 17.9 مليون صفقة، وحملت 4.73% من الصفقات أحجاماً كسرية — وهو نمط يتوافق مع تطبيقات التجزئة التي تنفذ الصفقات عبر الشريط تدريجياً، مع قيام صناع السوق بالطرف الآخر.
تحليل أحجام التداول: استخراج "الحجم المطابق" من القاموس
عند جمع حقل الحجم (size) من جميع عمليات التنفيذ، يظهر تاريخ 29 يونيو تداول 24.79 مليار سهم. هذا الرقم غير صحيح، وبيانات الشريط (tape) تؤكد ذلك. تحمل كل عملية تنفيذ رموز حالة (condition codes)، ويقوم معالج معلومات الأوراق المالية (SIP) — وهو النظام الذي يدمج كافة منصات التداول في تدفق واحد — بنشر قاموس يوضح، رمزاً تلو الآخر، ما إذا كان التنفيذ يضيف إلى الحجم الموحد أم لا. بعض الرسائل هي مجرد إعادة بث إداري لأحجام تم احتسابها بالفعل. وبدلاً من الاعتماد على قائمة ثابتة من الرموز "المعروفة"، يستخرج هذا المقال مجموعة الاستثناء من القاموس نفسه:
استعلام SQL الدقيق وراء كل رقم
SELECT
count() AS excluded_codes,
sum(id) AS excluded_id_checksum,
arrayStringConcat(arraySort(groupArray(concat(toString(id), ' ', name))), ' · ') AS codes
FROM global_markets.stocks_condition_codes
WHERE asset_class = 'stocks'
AND type = 'sale_condition'
AND JSONExtractBool(update_rules, 'consolidated', 'updates_volume') = 0تحمل 3 من حالات البيع قيمة updates_volume = false في التدفق الموحد: 15 Market Center Official Close · 16 Market Center Official Open · 38 Corrected Consolidated Close (per listing market). إليك ما تعلمناه: تضمنت مسودة سابقة للملخص اليومي الرموز 15 و16 بشكل ثابت — وهما رسالتا الافتتاح والإغلاق الرسميتان المذكورتان في كل دليل بيانات — بينما تم تجاهل الرمز 38 تماماً. القاموس هو المصدر الموثوق، وليس قائمة الرموز المحفوظة.
تم تقسيم العمل إلى كتلتين برمجيتين: يؤدي استخدام استعلام فرعي (scalar subquery) على القاموس ضمن عملية فحص تشمل 156.1 مليون صف إلى تجاوز الحد الزمني المسموح به وهو 30 ثانية. لذا، تقوم الكتلة أعلاه باستخراج المجموعة في صف واحد — مع وضع قيود للتحقق من عدد الرموز ومجموع تحقق المعرف (69) — بينما تقوم الكتلة أدناه بتطبيق القيم المستخرجة. إذا تغير القاموس مستقبلاً، فإن مجموع التحقق سيجعل هذا المقال جاهزاً للمراجعة؛ وبذلك لا يمكن للقيم أن تصبح قديمة دون تنبيه.
استعلام SQL الدقيق وراء كل رقم
SELECT
round(toFloat64(sum(size)) / 1e9, 2) AS raw_shares_bn,
round(toFloat64(sumIf(size, NOT hasAny(conditions, [15, 16, 38]))) / 1e9, 2) AS matched_shares_bn,
round(toFloat64(sumIf(size, hasAny(conditions, [15, 16, 38]))) / 1e9, 2) AS excluded_shares_bn,
countIf(hasAny(conditions, [15, 16, 38])) AS excluded_prints
FROM global_markets.stocks_trades
WHERE sip_timestamp >= '2026-06-29 00:00:00' AND sip_timestamp < '2026-06-30 00:00:00'المحاسبة المصححة: 24.79 مليار سهم إجمالي، 20.66 مليار سهم حسب حسابات SIP، و4.13 مليار سهم مستبعدة عبر 91175 من عمليات التنفيذ الإدارية. تعريف واحد دقيق: "الحجم المطابق" يعني الحجم الذي تحتسبه قواعد الحالة الخاصة بنظام SIP ضمن الإجمالي الموحد — لا شيء أكثر من ذلك. نحن لا نقيم أي الصفقات كانت ذات أهمية اقتصادية؛ بل نطبق القواعد المحاسبية الخاصة بالشريط نفسه.
The largest prints, decoded
The day's biggest prints are where condition codes stop being trivia:
استعلام SQL الدقيق وراء كل رقم
SELECT
ticker,
formatDateTime(toTimeZone(sip_timestamp, 'America/New_York'), '%H:%i:%S') AS et_time,
round(toFloat64(size) / 1e6, 2) AS shares_m,
toFloat64(price) AS price,
round(toFloat64(size) * toFloat64(price) / 1e6, 1) AS notional_usd_m,
round(100 * (toFloat64(size) * toFloat64(price)) / max(toFloat64(size) * toFloat64(price)) OVER (), 1) AS pct_of_biggest_dollar_print,
arrayStringConcat(arrayMap(c -> toString(c), conditions), ', ') AS condition_id
FROM global_markets.stocks_trades
WHERE sip_timestamp >= '2026-06-29 00:00:00' AND sip_timestamp < '2026-06-30 00:00:00'
AND size >= 10000000
AND NOT hasAny(conditions, [15, 16, 38])
ORDER BY size DESC
LIMIT 10Read the top rows as a worked example. The day's largest print — 61.69 million CAG (Conagra) shares at $13.98, roughly $862.5 million, stamped 16:04:53 ET under codes 8, 41 (8 Closing Prints, 41 Trade Thru Exempt) — is the NYSE closing auction result published after 4:00 pm. It counts toward volume exactly once. The same 61.69 million shares then re-appear under code 15, Market Center Official Close: a re-report the dictionary excludes, part of the 4.13 billion stripped above. That code-15 row is stripped from the table above by design, so its receipt gets its own cheap one-row panel:
استعلام SQL الدقيق وراء كل رقم
SELECT
round(toFloat64(maxIf(size, has(conditions, 8))) / 1e6, 2) AS auction_print_shares_m,
round(toFloat64(maxIf(size, has(conditions, 15))) / 1e6, 2) AS official_close_reprint_shares_m,
round(toFloat64(maxIf(size, has(conditions, 8))) - toFloat64(maxIf(size, has(conditions, 15))), 2) AS share_difference,
formatDateTime(toTimeZone(argMaxIf(sip_timestamp, size, has(conditions, 15)), 'America/New_York'), '%H:%i:%S') AS reprint_et,
argMaxIf(exchange, size, has(conditions, 15)) AS reprint_exchange_id,
countIf(has(conditions, 15)) AS cag_code15_prints
FROM global_markets.stocks_trades
WHERE ticker = 'CAG'
AND sip_timestamp >= '2026-06-29 00:00:00' AND sip_timestamp < '2026-06-30 00:00:00'The largest of the 6 official-close messages on CAG carries 61.69 million shares — the auction's 61.69 million exactly (difference: 0) — stamped 16:04:53 ET from exchange id 10, NYSE in the stocks directory: the listing market re-stating its own auction.
The other CAG rows are a different animal — the 15.17 million-share print under codes 12, 2 (12 Form T / extended hours, 2 Average Price Trade) and two more under code 12 are post-auction prints reported through FINRA whose conditions carry updates_volume = true. The SIP counts them as real prints, and so does our matched figure.
Elsewhere, code 9 marks the Nasdaq closing crosses — NVDA's $3389.5 million cross is the table's biggest print in dollars — and the codes on the SNAP print (53, 41) include 53, a Qualified Contingent Trade.
الوقت: عشر دقائق تسيطر على اليوم
تتركز عمليات التداول عند حواف الجلسة تقريباً عند تحليلها بالدقيقة:
استعلام SQL الدقيق وراء كل رقم
SELECT
formatDateTime(toTimeZone(toStartOfMinute(sip_timestamp), 'America/New_York'), '%H:%i') AS et_minute,
round(count() / 1e6, 2) AS trades_m
FROM global_markets.stocks_trades
WHERE sip_timestamp >= '2026-06-29 00:00:00' AND sip_timestamp < '2026-06-30 00:00:00'
GROUP BY et_minute
ORDER BY trades_m DESC
LIMIT 10سجلت دقيقة 15:59 ET نحو 3.98 مليون صفقة — أي أكثر من ستين ألف صفقة في الثانية. أما ما إذا كانت بقية المراكز العشرة الأولى تتركز عند الافتتاح والإغلاق، فهذا قياس من صف واحد:
استعلام SQL الدقيق وراء كل رقم
SELECT
countIf(NOT (et_minute BETWEEN '09:30' AND '09:39' OR et_minute BETWEEN '15:50' AND '16:00')) AS entries_outside_open_close,
countIf(et_minute BETWEEN '09:30' AND '09:39' OR et_minute BETWEEN '15:50' AND '16:00') AS entries_in_open_close,
maxIf(et_minute, NOT (et_minute BETWEEN '09:30' AND '09:39' OR et_minute BETWEEN '15:50' AND '16:00')) AS outside_entry_minute,
maxIf(trades_m, NOT (et_minute BETWEEN '09:30' AND '09:39' OR et_minute BETWEEN '15:50' AND '16:00')) AS outside_entry_trades_m
FROM (
SELECT
formatDateTime(toTimeZone(toStartOfMinute(sip_timestamp), 'America/New_York'), '%H:%i') AS et_minute,
round(count() / 1e6, 2) AS trades_m
FROM global_markets.stocks_trades
WHERE sip_timestamp >= '2026-06-29 00:00:00' AND sip_timestamp < '2026-06-30 00:00:00'
GROUP BY et_minute
ORDER BY trades_m DESC
LIMIT 10
)تتواجد 9 من المراكز العشرة ضمن الدقائق العشر الأولى أو الدقائق العشر الأخيرة قبل الإغلاق. الاستثناء الوحيد — وهو 10:15 ET، حيث حدثت طفرة بلغت 0.88 مليون صفقة — يمثل حالة استثنائية حقيقية في منتصف الصباح؛ لا يمكن تحديد سببها من هذه البيانات، ولن نقوم بافتراض سبب لها. ستظهر نفس التوقيت أدناه.
تدفق عروض الأسعار: نصف مليار تحديث
تحدث نظام "أفضل سعر عرض وأفضل سعر طلب" (NBBO) — وهو أفضل سعر للبيع والشراء عبر جميع البورصات، ويُعاد نشره عند تغير أي منهما — بمعدل 505.38 مليون مرة في 29 يونيو، مقابل 156.1 مليون صفقة.
استعلام SQL الدقيق وراء كل رقم
WITH
(
SELECT (round(countIf(ticker = 'QQQ') / 1e6, 2), round(countIf(ticker = 'NVDA') / 1e6, 2),
round(countIf(ticker = 'AAPL') / 1e6, 2), round(countIf(ticker = 'TSLA') / 1e6, 2))
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('QQQ', 'NVDA', 'AAPL', 'TSLA')
AND sip_timestamp >= '2026-06-29 00:00:00' AND sip_timestamp < '2026-06-30 00:00:00'
) AS pinned
SELECT
round(count() / 1e6, 2) AS updates_m,
pinned.1 AS qqq_updates_m,
pinned.2 AS nvda_updates_m,
round(pinned.1 - pinned.2, 2) AS qqq_minus_nvda_updates_m,
round(pinned.2 - greatest(pinned.3, pinned.4), 2) AS nvda_minus_next_single_m
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= '2026-06-29 00:00:00' AND sip_timestamp < '2026-06-30 00:00:00'تهيمن منتجات المؤشرات على عروض الأسعار: سجل QQQ وحده 5.23 مليون تحديث مقابل 1.8 مليون لشركة NVDA، وهي أكثر الأسهم الفردية التي تم فحصها من حيث عدد التحديثات — بفارق 0.67 مليون تحديث عن الاسم الفردي التالي. لا يمكن إجراء إحصاء كامل لكل رمز من رموز الإدراج ضمن مهلة الـ 30 ثانية، لذا فإن قائمة المتصدرين أدناه هي مجموعة مفحوصة وليست تصنيفاً شاملاً:
استعلام SQL الدقيق وراء كل رقم
SELECT ticker, round(count() / 1e6, 2) AS updates_m
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('QQQ', 'SPY', 'TQQQ', 'IWM', 'SQQQ', 'NVDA', 'AAPL', 'TSLA')
AND sip_timestamp >= '2026-06-29 00:00:00' AND sip_timestamp < '2026-06-30 00:00:00'
GROUP BY ticker
ORDER BY updates_m DESCتصدر QQQ المجموعة المفحوصة بـ 5.23 مليون تحديث؛ وتتركز قائمة المتصدرين في صناديق المؤشرات ونظيراتها ذات الرافعة المالية، وليس في الأسهم المعروفة لدى الجمهور.
تحليل SPY: سرعة التنفيذ وفوارق السعر
استعلام SQL الدقيق وراء كل رقم
WITH
(
SELECT (formatDateTime(toTimeZone(toStartOfSecond(sip_timestamp), 'America/New_York'), '%H:%i:%S'), count())
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'SPY' AND sip_timestamp >= '2026-06-29 13:30:00' AND sip_timestamp < '2026-06-29 20:00:00'
GROUP BY toStartOfSecond(sip_timestamp)
ORDER BY count() DESC, toStartOfSecond(sip_timestamp) ASC
LIMIT 1
) AS busiest_sec,
ordered AS (
SELECT
toFloat64(ask_price - bid_price) AS spread,
bid_price,
ask_price,
toFloat64(sip_timestamp - lagInFrame(sip_timestamp) OVER (ORDER BY sip_timestamp, sequence_number)) AS gap_s,
greatest(toFloat64(least(leadInFrame(sip_timestamp, 1, toDateTime64('2026-06-29 20:00:00', 9)) OVER (ORDER BY sip_timestamp, sequence_number ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING), toDateTime64('2026-06-29 20:00:00', 9)) - sip_timestamp), 0) AS dwell_s,
rowNumberInAllBlocks() AS rn
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'SPY' AND sip_timestamp >= '2026-06-29 13:30:00' AND sip_timestamp < '2026-06-29 20:00:00'
)
SELECT
round(count() / 1e6, 2) AS spy_updates_m,
busiest_sec.1 AS busiest_second_et,
toUInt8(startsWith(busiest_sec.1, '10:15')) AS busiest_second_in_1015,
busiest_sec.2 AS busiest_second_updates,
round(minIf(gap_s, rn > 0 AND gap_s > 0) * 1e9) AS min_gap_between_updates_ns,
round(quantileExactIf(0.5)(gap_s, rn > 0) * 1e6, 1) AS median_gap_us,
countIf(rn > 0 AND gap_s = 0) AS identical_timestamp_pairs,
round(sumIf(spread * dwell_s, bid_price > 0 AND ask_price >= bid_price) / sumIf(dwell_s, bid_price > 0 AND ask_price >= bid_price) * 100, 2) AS time_weighted_avg_spread_cents,
round(avgIf(spread, bid_price > 0 AND ask_price >= bid_price) * 100, 2) AS per_update_avg_spread_cents,
round((avgIf(spread, bid_price > 0 AND ask_price >= bid_price) - sumIf(spread * dwell_s, bid_price > 0 AND ask_price >= bid_price) / sumIf(dwell_s, bid_price > 0 AND ask_price >= bid_price)) * 100, 2) AS per_update_premium_cents,
countIf(bid_price > 0 AND ask_price > 0 AND ask_price < bid_price) AS crossed_updates,
countIf(bid_price <= 0 OR ask_price <= 0) AS zero_bid_or_ask_updates
FROM orderedتغير سعر SPY بمقدار 3.98 مليون مرة خلال ساعات التداول العادية فقط. شهدت أكثر ثانية نشاطاً — في تمام الساعة 10:15:43 ET، ضمن الدقيقة 10:15 المذكورة أعلاه — تنفيذ 1461 تحديثاً. وبلغ أقل فارق زمني بين تحديثين متتاليين 1375 نانو ثانية، بينما بلغ الوسيط 245.6 ميكرو ثانية. كما تكررت 75138 من أزواج التحديثات المتتالية بنفس طابع النانو ثانية، مما يعني أن دقة النانو ثانية وحدها لا تكفي لترتيب سجل البيانات الحديث بالكامل.
تُستخدم هذه النانو ثانية في قياس فارق سعر العرض والطلب. وباحتساب كل تحديث بالتساوي، بلغ متوسط الفارق لـ SPY نحو 2.72 سنت؛ أما عند ترجيح كل سعر بناءً على مدة بقائه، فقد بلغ الفارق 2.34 سنت. وتظهر القيمة لكل تحديث أوسع بمقدار 0.38 سنت من الناحية الميكانيكية؛ وذلك لأن التحديثات تتجمع في اللحظات التي يكون فيها الفارق واسعاً ومتغيراً، بينما تُقاس الأوامر المستقرة بالوقت الفعلي. وعندما تطلع على إحصائيات الفارق، يجب أن تتساءل عن الساعة التي استخدمت في قياسها. وتظهر البيانات بوضوح: حيث تقاطعت 1544 من تحديثات ساعات التداول العادية (عندما يصبح سعر الطلب أقل من سعر العرض نتيجة تداخل الأسعار من منصات مختلفة) وحملت 0 تحديثات بسعر عرض أو طلب صفري؛ علماً بأن إحصائيات الفارق تستبعد الحالتين وتعتمد فقط على ما تم استبعاده.
الفارق السعري مرتبط بالوقت
يؤدي تقسيم الفارق السعري لـ SPY إلى فترات زمنية مدتها نصف ساعة إلى تحويل البنية الدقيقة للسوق إلى منحنى يمكن لأي متداول استخدامه:
استعلام SQL الدقيق وراء كل رقم
SELECT
formatDateTime(toTimeZone(toStartOfInterval(sip_timestamp, INTERVAL 30 MINUTE), 'America/New_York'), '%H:%i') AS et_time,
round(quantileExactIf(0.5)(toFloat64(ask_price - bid_price), bid_price > 0 AND ask_price >= bid_price) * 100, 1) AS median_spread_cents,
count() AS quote_updates
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'SPY' AND sip_timestamp >= '2026-06-29 08:00:00' AND sip_timestamp < '2026-06-30 00:00:00'
GROUP BY et_time
ORDER BY et_timeبلغ متوسط الفارق 8 سنت في فترة ما قبل الافتتاح (ET) ضمن النطاق 04:00، و3 سنت في نطاق الافتتاح 09:30، و2 سنت بحلول الساعة 14:00 — إن تداول السهم نفسه عند افتتاح ما قبل السوق يكلف تقريبًا أربعة أضعاف الفارق السعري لطلب في وقت مبكر من بعد الظهر. الفارق السعري ليس ثابتًا؛ بل هو جدول زمني.
الأدلة الجنائية: الملف الذي توقف عند حرف S
تخضع كل ملفات الموردين اليومية لاختبار اكتمال قبل نشر أي رقم مستمد منها؛ حيث يتم عد الرموز، والتحقق من النطاق الأبجدي، ومقارنة البيانات مع الأيام المجاورة. ويعد ملف حجم البيع على المكشوف (short-volume) الخاص بـ FINRA خارج البورصة بتاريخ 29 يونيو مثالاً على أهمية ذلك:
استعلام SQL الدقيق وراء كل رقم
SELECT
date,
uniqExact(ticker) AS tickers,
min(ticker) AS first_ticker,
max(ticker) AS last_ticker,
countIf(ticker = 'TSLA') AS tsla_rows,
round(100 * sum(short_volume) / sum(total_volume), 2) AS short_pct_of_reported
FROM global_markets.stocks_short_volume
WHERE date BETWEEN '2026-06-26' AND '2026-06-30'
GROUP BY date
ORDER BY dateيغطي ملف 26 يونيو 15052 رمزاً، من A إلى ZYME. أما ملف 29 يونيو فيغطي 5489، من A إلى SSUS — حيث يتوقف الملف ببساطة في منتصف الأسماء التي تبدأ بحرف S. إن كل رمز يأتي أبجدياً بعد تلك النقطة — بما في ذلك TSLA، الذي يبلغ عدد أسطره 0 في 29 يونيو مقابل 1 في 26 يونيو — مفقود؛ وبحلول 30 يونيو، يعود الملف إلى 15362 رمزاً. إن اختبار الاكتمال ليس أكثر تعقيداً من هذا السجل اليومي؛ وهو ما يمثل الفرق بين نشر إحصائية دقيقة ونشر بيانات غير مكتملة.
مع هذا التوضيح — وبناءً عليه فقط — إليك النسبة: بلغت نسبة حجم البيع على المكشوف المحدّد 45.85% من إجمالي حجم التداول المعلن خارج البورصة في 29 يونيو، مقابل 46.89% في 26 يونيو و48.82% في 30 يونيو. يغطي رقم 29 يونيو الجزء الممتد من حرف A إلى S فقط، لذا يجب اعتباره قراءة جزئية. إن نسبة الأسهم المباعة على المكشوف التي تقترب من النصف هي المستوى المعتاد الذي تظهره كل جلسة مجاورة — علماً بأن حجم البيع على المكشوف اليومي ليس هو الاهتمام البيعي على المكشوف.
ملاحظات البيانات
ملاحظات البيانات الكاملة
- فترة هدوء الأسعار بين الساعة 5 و6 مساءً. يتوقف تدفق أسعار SPY تقريبًا في النصف ساعة 17:00 بتوقيت ET (تحديثات 233) ثم يعود للعمل بحلول الساعة 18:00 (40608) — هذا نمط عام للجلسة ولجميع الرموز وليس نقصاً في البيانات.
- الأسهم الكسرية منتشرة في كل مكان. تحمل 4.73% من عمليات التنفيذ أحجاماً غير صحيحة؛ لذا يجب جمع حجم التداول كأرقام عشرية.
- قاموس الأكواد يعيد استخدام المعرفات عبر الأنواع المختلفة. المعرف 15 يمثل حالة بيع (إغلاق مركز السوق الرسمي) وحالة سعر (مغلق) في آن واحد؛ لذا تقوم كل عملية استعلام هنا بتصفية asset_class = 'stocks' وَ type = 'sale_condition'. البحث المجرد بواسطة المعرف يؤدي إلى تصنيف خاطئ للأكواد.
- يتم احتساب استثناءات جودة الأسعار ضمن البيانات. توجد أعداد الأسعار المتقاطعة (crossed) وأسعار العرض والطلب الصفرية في لوحة فحص SPY أعلاه؛ لا توجد إحصائية للفارق السعري (spread) تخفي هذه الانخفاضات.
- عمليات مسح الشريط الكامل (Whole-tape scans) هي لوحات دفعات فقط. تُقاس الكتل التي تشمل السوق بأكمله هنا لمدة تصل إلى 30 ثانية تقريبًا لكل منها باستخدام ذاكرة تخزين مؤقت باردة (يتم إعادة محاولة الكتلة التي انتهت مهلتها مرة واحدة؛ أما المسح السريع فيتجاوز الحد الأقصى)؛ وتعمل هذه العمليات مرة واحدة عند وقت التأليف عبر مسار القراءة فقط، ولا تتوفر للقراء بشكل مباشر، والنتائج المخزنة هي السجل النهائي.
المنهجية
- تُخزن الطوابع الزمنية بتوقيت UTC وتُفلتر باستخدام حدود UTC الخام (الساعات العادية في 29 يونيو هي من 13:30 إلى 20:00 UTC)؛ ولا تظهر دالة toTimeZone إلا في قوائم SELECT.
- يتم التحقق من نوع الجلسة بمطابقتها مع تقويم العطلات ونطاق الـ 390 شريطاً (bar) المعتمد؛ ولا يتم افتراض ذلك أبداً.
- "حجم التداول المحتسب عبر SIP (المطابق)" هو الحجم الذي تحتسبه قواعد شروط SIP ضمن الإجمالي الموحد؛ وتُشتق مجموعة الاستثناءات من القاموس وتُحدد عبر مجموع التحقق (checksum)، ولا تُثبت يدوياً.
- تعطي إحصائيات الفارق السعري (spread) لكل تحديث وزناً متساوياً لكل تحديث NBBO؛ بينما تعطي الإحصائيات الموزونة زمنياً وزناً لكل عرض بناءً على مدة بقائه. وتوضح كل منهما الاستثناءات الخاصة بها.
- تُجمع أعمدة السعر/الحجم العشرية برمجياً وتُحول إلى أرقام عشرية 64-بت قبل إجراء أي عمليات حسابية للنسب أو ضرب السعر في الحجم.
- تحتفظ جداول التكات (Tick tables) بالسجل الكامل دون انتهاء صلاحية دوري؛ وتُعد هذه النتائج المخزنة والمؤرشفة هي السجل الدائم بغض النظر عن أي شيء. حالة المستودع كما في 3 يوليو 2026.
كل لوحة أعلاه هي كائن مخزن واحد — تشمل الرسم البياني والجدول وSQL معاً. يمكنك فتح أي منها، ونسخ الاستعلام، ومتابعته عبر محطة Strasmore.