هذا صف واحد من ملف يومي للأسهم. NVDA، الجمعة 7 يونيو 2024، آخر جلسة قبل سريان التجزئة بنسبة 10 مقابل 1.
| العمود | القيمة |
|---|---|
| التاريخ | 2024-06-07 |
| الإغلاق | 1208.88 |
| الحجم | 42,800,000 (تقريبي) |
| split_factor | 1.0 |
| التوزيع النقدي | 0.00 |
| adj_close | 120.8781 |
تعمدت استبعاد أعمدة OHLC من هذا العرض. ستعود قرب النهاية، وهي الأعمدة التي تتسبب بهدوء في الأعطال.
كل ما يثير الاهتمام في هذا الصف يكمن في الفجوة بين العمود الثاني والسادس. سجّل شريط التداول في 7 يونيو سعر 1208.88. لن يتداول أحد بهذا السعر مجددًا، لأن السهم الذي كان يمثله لم يعد موجودًا كوحدة. الرقم 120.8781 إعادة بناء، وليس ببساطة 1208.88 مقسومًا على عشرة. لنراجع الأعمدة واحدًا واحدًا.
التاريخ: 2024-06-07، وتاريخان آخران أهم منه
أُعلنت التجزئة في 22 مايو 2024 بالتزامن مع الأرباح. كان تاريخ التسجيل 6 يونيو.
وبدأ التداول على أساس معدل بالتجزئة يوم الاثنين 10 يونيو. ثلاثة تواريخ، وعمود
split_factor لدى مزوّد البيانات لديك يقع في واحد منها تحديدًا،
وغالبًا في أول جلسة بعد تعديل التجزئة. خطأ اليوم الواحد هنا هو أكثر أخطاء
إجراءات الشركات شيوعًا مما أراه، ولا يظهر في المجاميع: يهبط منحنى الأسهم 90%
أو يقفز 900% في يوم واحد، وهذا بالكاد يظهر في Sharpe محسوب على 2,000 يوم، لكن
الحد الأقصى للتراجع أو قاعدة وقف الخسارة يتأثران به بالتأكيد.
للتوزيع النقدي مشكلة تواريخ خاصة به، وقد تغيرت القاعدة دون أن ينتبه الجميع في 2024. كان تاريخ التسجيل للتوزيع الفصلي البالغ $0.01 من NVDA بعد التجزئة هو 11 يونيو. انتقل تسوية الأسهم الأمريكية إلى T+1 في 28 مايو 2024، ما يعني أن تاريخ التداول دون التوزيع وتاريخ التسجيل أصبحا اليوم نفسه. أي أداة تحميل تستنتج تاريخ التداول دون التوزيع بطرح «يوم عمل واحد من تاريخ التسجيل» — وهي قاعدة ظلت صحيحة لعقود — بدأت تنتج بصمت تعديلات التوزيعات قبل موعدها بجلسة واحدة في يونيو 2024. لا يظهر أي خطأ. العامل يُسجَّل ببساطة في الصف الخطأ.
لا يتخذ فشل شيفرة إجراءات الشركات شكل استثناء مطلقًا. إنه رقم مزاح يومًا واحدًا ويبدو معقولًا تمامًا.
الإغلاق: 1208.88 — السعر غير الموجود في الملف
هذه هي المطبوعة الخام، وفي معظم خطوط البحث لا توجد إلا كعمود لا يقرأه أحد.
تُحسب الإشارات على adj_close. وأي قاعدة تشير إلى مستوى سعر للسهم
بالدولار باتت تشير إلى رقم لم يره أي مشارك في السوق.
كان صعود NVDA المتواصل نحو $1,000 في ربيع 2024 حدثًا حقيقيًا وراءه تدفق أوامر حقيقي: أرقام دائرية جاذبة، وعقود خيارات تركزت أسعار تنفيذها عند 950 و1000، ومخاطر عناوين الأخبار مع كل اقتراب. في البيانات المعدّلة، تقع تلك الفترة كلها عند $100. إذا كنت تختبر سلوك مستويات الأسعار النفسية، أو منطق سد الفجوات قرب الأرقام الدائرية، أو ميزة القرب من سعر التنفيذ، فأنت تختبرها على سلسلة أسعار أُعيد تحجيمها بفعل حدث لم يكن قد وقع بعد.
وينطبق الأمر نفسه على مرشحات نطاق الأسهم. «استبعاد الأسهم التي يقل سعرها عن $5» مؤشر بديل مشروع على مجموعة حقيقية من مشكلات بنية السوق: فروق أسعار نسبية واسعة، وقواعد قابلية الاقتراض بالهامش، وأنظمة الحد الأدنى لتغير السعر. إذا شغّلت هذا المرشح على تاريخ معدّل، فستستبعد شركات خلال فترات كان تداولها فيها عند $30 ثم خضعت لاحقًا لتجزئة عكسية. وإذا شغّلت «السعر فوق $500»، فستستبعد NVDA بصمت من كل سنة قبل يونيو 2024. مرشحات الأسعار مكانها الأسعار غير المعدّلة. انتهى.
split_factor: 1.0 — والرقم 0.1 في الصف التالي
العامل حاصل ضرب تراكمي يُحتسب عكسيًا انطلاقًا من اليوم. يحمل كل صف سابق لـ 10 يونيو 2024 عامل 0.1 من هذه التجزئة، مضروبًا في 0.25 الناتج عن التجزئة بنسبة 4 مقابل 1 في 2021، ومضروبًا في ما سبقه. تاريخ NVDA السابق لـ 2021 مضروب في 0.025، لذا يظهر شريط سجّل $200 في 2019 بسعر $5.00.
هناك نتيجتان يجدر تذكرهما. أولًا، يتغير التاريخ المعدّل يتغير كلما طرأ إجراء جديد على الشركة. ينتج الاختبار التاريخي الذي أجريته في مايو 2024 والاختبار الذي تجريه اليوم أرقامًا مختلفة رغم استخدام الشيفرة نفسها والتواريخ نفسها، وإذا خزّنت الميزات مؤقتًا باستخدام الرمز والتاريخ مفتاحًا من دون ختم إصدار البيانات، فسيكون لديك الآن مخبأ يخلط بين مقياسين. نضيف إصدار حقبة التعديل إلى مفتاح الميزة لهذا السبب تحديدًا؛ وقد كلفنا درس ذلك بعد ظهر مرتبكًا جدًا.
ثانيًا، عند تحجيم السعر إلى 0.025، يتحرك سهم كان يتداول بخطوات $0.01 بمقادير 0.00025. منطق تقريبك إلى الحد الأدنى لتغير السعر، ومقارنات «هل هذا أعلى سعر جديد»، وفحوصات مساواة الأعداد العائمة: كلها تعمل الآن بدقة أدنى بكثير من دقة السوق الفعلية.
التوزيع النقدي: 0.01 — الرقم الذي يزيل انتظام شبكة الأسعار السابقة كلها
سنت واحد. يبدو كأنه ضجيج، لكنه سبب ظهور adj_close بالقيمة
120.8781 بدلًا من 120.888 بالضبط.
كان إغلاق 10 يونيو 121.79. عامل التداول دون التوزيع هو (121.79 − 0.01) / 121.79 = 0.99991789. يُضرب كل سعر سابق لـ 11 يونيو بهذا العامل، لذا يصبح السعر المعدّل للتجزئة 120.888 مساويًا لـ 120.878074. فرق صغير ودائم، ويُطبّق مجددًا في كل تاريخ من تواريخ التداول دون التوزيع الستين تقريبًا عبر تاريخ NVDA. المهم هو التراكم: بحلول وصولك إلى 2015، تكون تنظر إلى سعر ضُرب في عشرات العوامل غير المنتظمة تقريبًا. لا يوجد سعر تاريخي معدّل يقع تمامًا على شبكة السنتات.
وهذا يعني أن كل مقارنة == بمستوى دائري خاطئة، وكل فحص من نوع «هل
لامسنا سعر الحد؟» يحتاج إلى هامش سماح، كما أن OHLC المعاد بناؤه لا يحقق بعد
الآن الثابت low ≤ open ≤ high إذا قرّبته مباشرة إلى 4 منازل عشرية. ويعني أيضًا
أن adj_close سلسلة عائد كلي، بينما close سلسلة عائد
سعري؛ وإذا حسبت العوائد من واحدة والتراجعات من الأخرى، تكون قد خلطت تعريفين
مختلفين لما حدث.
الحجم: 42,800,000 — المقسوم الذي لا يطبّقه الجميع بالطريقة نفسها
يجب ضرب حجم الأسهم في 10 ليصبح قابلًا للمقارنة بجلسات ما بعد التجزئة. بعض مزوّدي البيانات يفعلون ذلك، وبعضهم لا يفعل. وبعضهم يعدّل OHLC ويترك الحجم خامًا، وهذا أسوأ الخيارات الثلاثة لأن الملف يبدو متسقًا داخليًا إلى أن تضرب السعر في الحجم.
الحل العملي هو التوقف عن استخدام حجم الأسهم كميزة، واستخدام حجم التداول بالدولار، الذي لا يتأثر بالتجزئة بحكم تعريفه. لا يحتاج مرشح السيولة القائم على متوسط حجم التداول بالدولار لـ 20 يومًا إلى أي منطق تعديل، ولا يمكن أن يفسده إجراء على الشركة. ثبات الميزة أفضل من صحة شيفرة التعديل، لأن عليك أن تواصل إصابة الصواب في شيفرة التعديل.
3 أشكال لملفات مزوّدي البيانات، و3 أنماط للفشل.
| ما يُقدَّم | ما يتعطل |
|---|---|
| سعر إغلاق معدّل فقط، وOHLC خام | تحسب منطق الفجوات والحركة داخل الجلسة عبر مقياسي أسعار مختلفين |
| OHLC معدّل، وحجم خام | حجم التداول بالدولار خاطئ بنسبة التجزئة؛ ومرشحات ADV تعطي نتائج خاطئة |
| OHLCV خام مع أعمدة العوامل | لا شيء إذا طبّقتها. كل شيء إذا طبّقتها على الصف الخطأ |
الأعمدة الغائبة: adj_open وadj_high وadj_low
أعد الآن أعمدة OHLC إلى الصورة. إذا كان مصدر البيانات يعدّل الإغلاق فقط، وكانت
استراتيجيتك تحسب فجوة الليلة عبر open / prev_adj_close − 1،
فستحسب في 10 يونيو 2024 القيمة 120.37 / 120.8781 − 1، وهي قيمة معقولة، نحو
−0.4%. طبّق الشيفرة نفسها على 7 يونيو 2024، وستحسب سعر الافتتاح من الملف الخام
(نحو 1207) مقابل سعر إغلاق معدّل بعامل 0.025 من التجزئات الأقدم، وستنتج فجوة
تبلغ عدة آلاف بالمئة.
أي عملية تمزج عمودًا خامًا بآخر معدّل هي حسابات عبر نظامي إحداثيات مختلفين. أتعامل الآن مع قراءات البيانات ذات التعديلات المختلطة باعتبارها شرط تحقق على مستوى أداة التحميل، بدلًا من شيء يُفترض بالباحث أن يتذكره، لأن الباحثين لن يتذكروه، وأنا منهم.
ما لا يخبرك به أي عمود: كم سهمًا كنت ستشتري فعليًا
هذا هو ما يكلفك مالًا في نموذج تكاليف الاختبار التاريخي، وهو سبب كتابتي عن تجزئة الأسهم أصلًا.
غالبًا ما تكون عمولات الأسهم الأمريكية محسوبة لكل سهم. لنفترض $0.005 مع حد أدنى $1.00 للطلب، وهي شريحة ثابتة شائعة لدى وسطاء التجزئة. والآن اختبر تاريخيًا مركزًا في NVDA بقيمة $400,000 قبل التجزئة بعام، حين كان السعر الخام قريبًا من $400 ويظهر السعر المعدّل عند $40.
| الأسهم | العمولة | |
|---|---|---|
| ما حدث فعليًا (السعر الخام $400) | 1,000 | $5.00 |
| ما يراه الاختبار التاريخي (السعر المعدّل $40) | 10,000 | $50.00 |
التعرّض نفسه، والصفقة نفسها، لكن التكلفة المحسوبة تزيد 10 أضعاف. هذا يعني $45 من التكاليف المتخيلة لكل جانب، و$90 للصفقة ذهابًا وإيابًا، واستراتيجية تتداول يوميًا تستهلك نحو $22,000 سنويًا تكاليف لم توجد قط. على محفظة بقيمة $400k، هذا يعادل 5.6 نقطة مئوية من العائد السنوي، اختلقها المقسوم بالكامل. هنا يجعلك تبدو أسوأ من الواقع، وهذا يمكن تحمله.
التجزئات العكسية تسير في الاتجاه الآخر، وهذا هو الاتجاه الخطير. تعني التجزئة العكسية بنسبة 1 مقابل 10 أن التاريخ المعدّل يعرض أسعارًا أعلى 10 أضعاف وأعداد أسهم أقل 10 أضعاف مما كنت ستتداوله. يقسم نموذج التكلفة بهدوء العمولة لكل سهم على عشرة. والنطاق الذي تكثر فيه التجزئات العكسية هو نطاق الأسهم الصغيرة التي يقل سعرها عن $5 وتتميز بفروق أسعار واسعة، حيث تمثل الرسوم لكل سهم أكبر بند منفرد في بنية التكلفة. بذلك يضفي الاختبار التاريخي أفضلية على الأسماء التي يجدر به معاقبتها أكثر من غيرها.
إذًا، الحل بسيط وبنيوي: حدّد حجم المراكز بالدولار، وحوّلها إلى أسهم باستخدام السعر غير المعدّل لذلك التاريخ، واحسب الرسوم لكل سهم على هذا العدد. أبقِ عمود السعر الخام في أداة التحميل إلى الأبد، لا كسجل تدقيق بل كمدخل مباشر لمحرك تنفيذ الصفقات.
- الإشارات والعوائد: السلسلة المعدّلة.
- أعداد الأسهم والرسوم لكل سهم وتقريب السعر إلى الحد الأدنى لتغيره ومرشحات مستويات الأسعار: السلسلة غير المعدّلة.
- السيولة والقدرة الاستيعابية: حجم التداول بالدولار، ولا يحتاج أي تعديل.
6 أعمدة، وصف واحد، وإجراء شركات عادي إلى حد بعيد أُعلن قبل 3 أسابيع ولم يفاجئ أحدًا. تعامل السوق معه في صباح واحد. أما إعادة بنائه بأمانة في خط بحث أصعب بكثير، والمؤشر على أن خط البحث لم يفعل ذلك نادرًا ما يكون رسالة خطأ.
→ جميع المقالات


