22 اکتوبر، 2026 · ڈیٹا

ڈیٹا فراہم کنندہ کی تاریخ بدلنے کے بعد ہم نے بیک ٹیسٹ دوبارہ بنایا

ڈیٹا فراہم کنندہ کی تاریخ بدلنے کے بعد ہم نے بیک ٹیسٹ دوبارہ بنایا

بیک ٹیسٹ چلانے کے چھ ہفتے بعد ہم نے اسے اسی کوڈ، کنفیگریشن اور تاریخوں کی حد کے ساتھ دوبارہ چلایا۔ اختتامی ایکویٹی مختلف تھی۔ فرق بہت بڑا نہیں تھا، لیکن Sharpe تناسب 1.31 سے 1.08 تک آ گیا اور بہترین دکھائی دینے والے پیرامیٹر سیٹ کو بھی بدل دیا۔

حکمتِ عملی نہیں بدلی تھی۔ تاریخی ڈیٹا بدل گیا تھا۔ ایک فراہم کنندہ نے کئی دنوں کے ٹریڈز اور بارز پر نظرثانی کی تھی، اور ہماری پہلی رَن میں عین وہی ان پٹ اسنیپ شاٹ محفوظ نہیں کیا گیا تھا۔ اگلے چند دن ہم یہ سمجھنے میں لگے رہے کہ نیا نتیجہ ڈیٹا کی اصلاح تھی، پائپ لائن کا بگ تھا، یا ایسا تحقیقی عمل تھا جسے ہم دہرا نہیں سکتے تھے۔

پیر: دوبارہ چلانے پر نتیجہ مختلف نکلا

پہلا اشارہ ایک زیادہ لیکویڈ اسپاٹ پیئر میں معمولی فرق تھا۔ ہمارے اصل بار میں بلند ترین قیمت 62,418 تھی۔ دوبارہ چلانے پر یہ 62,431 نکلی۔ یہ فرق بے ضرر لگتا تھا، یہاں تک کہ ہم نے حکمتِ عملی کے انٹری کی جانچ کی: اس کی حد ان دونوں قیمتوں کے بیچ تھی۔ چند بدلے ہوئے بارز کا مطلب مختلف سگنلز تھا، اور اس کے نتیجے میں کئی دن بعد پوزیشنز بھی مختلف ہوئیں۔

ہم نے روزانہ ٹریڈز کی تعداد کا موازنہ کیا اور پتا چلا کہ فرق ایک ہی تاریخ سے شروع ہوا تھا۔ پھر ہم نے اس تاریخ کے لیے استعمال ہونے والی خام قطاروں کا موازنہ کیا۔ فراہم کنندہ کے موجودہ جواب میں چند درست کیے گئے ٹریڈز اور ایک نظرثانی شدہ مجموعی بار تھا۔ اس جواب کے ساتھ کوئی تبدیلیوں کا ریکارڈ نہیں تھا جو ہم نے استعمال کیا تھا۔

ڈیٹا میں ایسا ہونا معمول کی بات ہے۔ ایکسچینجز ریکارڈ درست کرتے ہیں؛ فراہم کنندگان خالی جگہیں پُر کرتے، غلط پرنٹس کی اصلاح کرتے اور مجموعہ بنانے کے طریقے بدلتے ہیں۔ “جنوری کا ڈیٹا” مانگنے پر مارچ میں مختلف جواب مل سکتا ہے۔

منگل: ہمیں گم شدہ رسید مل گئی

ہم نے رَن کے ریکارڈ میں فراہم کنندہ کا نام، سمبل اور تاریخوں کی حد محفوظ کی تھی۔ جواب خود یا ہر ان پٹ پارٹیشن کا مواد ہیش محفوظ نہیں کیا تھا۔ اس کا مطلب تھا کہ ہم ثابت کر سکتے تھے کہ ہم نے کیا مانگا، لیکن یہ نہیں کہ فراہم کنندہ نے کون سے بائٹس واپس کیے۔

ہم نے جتنی پرانی کیش فائلیں مل سکیں حاصل کیں اور موجودہ جواب سے ان کا موازنہ کیا۔ فرق نہ اسپلٹ ایڈجسٹمنٹ تھا، نہ ٹائم زون کی تبدیلی۔ یہ درست کیے گئے ٹریڈ ریکارڈز کا ایک چھوٹا سا مجموعہ تھا جو ہمارے بار بلڈر سے گزرا تھا۔ اس سے ایک مفروضہ رد ہو گیا، لیکن کیش نامکمل تھی، اس لیے ہم اب بھی ہر متاثرہ بار کو عین اسی طرح دوبارہ نہیں بنا سکتے تھے۔

ہم نے کیا ریکارڈ کیااس سے ہم کیا جان سکےکیا چیز موجود نہیں تھی
فراہم کنندہ، سمبل، تاریخوں کی حدرَن نے کون سی درخواست بھیجیجواب کا مواد
پائپ لائن کا ورژنبارز کس کوڈ نے بنائےعین ان پٹ قطاریں
رَن کا ٹائم اسٹیمپہم نے جاب کب چلائیاس وقت فراہم کنندہ کی کون سی نظرثانی دستیاب تھی

ہم نے “وہی درخواست” کو “وہی ڈیٹا” سمجھ لیا تھا۔ اس مفروضے نے تجربے کو حقیقت سے زیادہ قابلِ تکرار دکھایا۔

بدھ: اصلاح نے کہانی بدل دی

ہم نے دستیاب ڈیٹا کے دونوں ورژنز استعمال کرتے ہوئے متاثرہ تاریخوں کو دوبارہ چلایا۔ نظرثانی شدہ بارز نے دو انٹریز ہٹا دیں اور ایک ایگزٹ کو ایک بار آگے کر دیا۔ Sharpe میں تبدیلی کی زیادہ تر وجہ یہی تین ٹریڈز تھے۔ حکمتِ عملی اپنے ٹرگر کے قریب چند مشاہدات سے متاثر ہو رہی تھی، حالانکہ چارٹ پر مجموعی قیمتوں کا سلسلہ تقریباً یکساں دکھائی دیتا تھا۔

اس کا یہ مطلب نہیں تھا کہ اصل نتیجہ جعلی تھا یا نظرثانی شدہ نتیجہ خود بخود بہتر تھا۔ اس کا مطلب تھا کہ دعوے کا دائرہ واضح ہونا چاہیے: پرانی رَن اس وقت موجود ڈیٹا اسنیپ شاٹ کو بیان کرتی تھی، جبکہ دوبارہ چلائی گئی رَن فراہم کنندہ کی موجودہ تاریخ کو۔ ہم دیانت داری سے ان میں سے ایک کو دوسری کی نقل نہیں کہہ سکتے تھے۔

جمعرات: ہم نے تحقیقی ریکارڈ بدل دیا

ہم نے نئی تحقیقی رنز میں ناقابلِ ترمیم ان پٹ اسنیپ شاٹس شامل کیے۔ ہر پارٹیشن کو مواد کی ہیش ملتی ہے، اور رَن کا مینی فیسٹ ماخذ، بازیافت کا وقت، اسکیما ورژن، ایڈجسٹمنٹ پالیسی اور تبدیلی کے کوڈ کا ورژن درج کرتا ہے۔ بڑے ڈیٹا سیٹس کے لیے ہم اصل فائلیں مواد کے پتے والی اسٹوریج میں رکھتے ہیں، تاکہ یکساں پارٹیشنز پہلے کے ورژنز کو اوور رائٹ کیے بغیر مشترک طور پر استعمال ہو سکیں۔

جب اسٹوریج یا لائسنس کے قواعد ہمیں خام ڈیٹا محفوظ رکھنے سے روکتے ہیں تو ہم شرائط کے تحت ممکنہ مضبوط ترین رسید محفوظ کرتے ہیں: ہیشز، درخواست کے پیرامیٹرز، ماخذ کے نظرثانی شناختی نمبر، اور تشخیص کے لیے پارس شدہ قطاروں کا ایک چھوٹا نمونہ۔ ہیش ڈیٹا واپس نہیں لا سکتی، لیکن یہ بتا سکتی ہے کہ دو رنز نے یکساں بائٹس استعمال نہیں کیے تھے۔

قابلِ تکرار بیک ٹیسٹ کے لیے صرف ڈیٹا URL نہیں، ان پٹ کی شناخت بھی درکار ہے۔ ریکارڈ کریں کہ کیا موصول ہوا، کب موصول ہوا، اور وہ ان قطاروں میں کیسے بدلا جنہیں آپ کی حکمتِ عملی نے استعمال کیا۔

جمعہ: اگلی بار ہم کیا چھوڑ دیں گے

ہم صرف مجموعی میٹرکس کا موازنہ کرنا چھوڑ دیں گے۔ Sharpe میں تبدیلی بتاتی ہے کہ کچھ بدلا ہے؛ یہ وجہ نہیں بتاتی۔ قطاروں کی تعداد اور پارٹیشن ہیشز سے آغاز کریں، پھر ان پٹ کی پہلی مختلف تاریخ تلاش کریں۔ وہاں سے تبدیل شدہ قطاروں، سگنلز، آرڈرز اور فلز کا اسی ترتیب سے موازنہ کریں۔

ہم پرانے ڈیٹا کو خاموشی سے درست شدہ تاریخ سے بدلنا بھی چھوڑ دیں گے۔ اصلاحات مفید ہیں، لیکن پرانی رنز کو ان کے اصل ان پٹس سے منسلک رہنا چاہیے۔ نئے ڈیٹا سیٹ سے نئی رَن بننی چاہیے، اور اس کا پرانی رَن سے تعلق واضح ہونا چاہیے۔

اب ہمارا عملی اصول سادہ ہے: اگر دوبارہ رَن کا مقصد تجربے کو دہرانا ہے تو ڈیٹا اسنیپ شاٹ مقرر کریں۔ اگر مقصد درست شدہ تاریخ سے فائدہ اٹھانا ہے تو اسے نیا تجربہ کہیں۔ یہ فرق سمجھنے میں ہمیں چند دن لگے، اور رَن مینی فیسٹ میں یہ ایک سطر کا کام ہے۔

مارکیٹ ڈیٹا، بیک ٹیسٹنگ، ڈیٹا انجینئرنگ، قابلِ تکرار عمل
شیئر کریںXLinkedInFacebookRedditHacker NewsWhatsAppTelegramEmail
← تمام پوسٹس