بیک ٹیسٹ میں وقت سے متعلق سب سے خطرناک خرابی، ٹائم اسٹیمپس کی مکمل جانچ کے باوجود بھی چھپی رہ سکتی ہے۔ دو ایونٹس پر 10:00:00.000 درج ہو سکتا ہے، لیکن پھر بھی وہ ایسی ترتیب سے پیش آئے ہوں جس کا اندازہ آپ کے سمیولیٹر نے خود لگایا ہو۔
یہ اس وقت اہم ہوتا ہے جب حکمتِ عملی مکمل شدہ بارز سے آگے بھی ردعمل دیتی ہو: کوٹ کی تازہ کاری، ٹریڈ، فنڈنگ کا نوٹس، ایکسچینج کی حیثیت میں تبدیلی، یا آپ کے اپنے آرڈر کی توثیق۔ ٹائم اسٹیمپ بتاتا ہے کہ ایونٹ پر کون سا وقت درج ہے۔ اس سے شاید یہ معلوم نہ ہو کہ آپ کی حکمتِ عملی کب اس پر عمل کر سکتی تھی۔
ایونٹس کی ترتیب سے کیا فرق پڑتا ہے؟
فرض کریں ایک حکمتِ عملی بہترین آسک کے $100.00 سے نیچے آنے پر خریدتی ہے۔ ایک ہی ملی سیکنڈ میں، فیڈ $99.99 پر آسک کی تازہ کاری اور $99.99 پر ایک ٹریڈ ریکارڈ کرتی ہے۔ اگر آپ کا بیک ٹیسٹ پہلے ٹریڈ اور پھر کوٹ کو پروسیس کرے، تو حکمتِ عملی نیا آسک دیکھ کر آرڈر بھیجتی ہے۔ اگر پہلے کوٹ پروسیس ہو تو یہ بھی ٹھیک ہو سکتا ہے، بشرطیکہ وہ ایونٹ واقعی دستیاب ہو چکا ہو۔ لیکن اگر آرڈر پہنچنے سے پہلے ٹریڈ دکھائی گئی لیکویڈیٹی استعمال کر چکی تھی، تو $99.99 پر فل ہونا من گھڑت ہے۔
صرف ٹائم اسٹیمپ کے مطابق قطاریں ترتیب دینے سے برابر وقت والے ایونٹس کی ترتیب سمیولیٹر خود چنتا ہے۔ فائل کی ترتیب، سمبل کی ترتیب، یا ڈیٹا بیس کا کوئری پلان انجانے میں اجرا کا اصول بن سکتا ہے۔ بنیادی ڈیٹا بدلے بغیر بھی ایکویٹی کرو بدل سکتی ہے۔
اس من مانے پن کو دیکھنے کا ایک آسان طریقہ ہے: برابر وقت والے ایونٹس کو آمد کی ترتیب کے بجائے سمبل کے نام کے مطابق ترتیب دیں۔ پھر کئی اثاثوں پر مشتمل حکمتِ عملی صرف اس لیے مختلف برتاؤ کر سکتی ہے کہ ایک ٹکر حروفِ تہجی کی ترتیب میں دوسرے سے پہلے آتا ہے۔
بیک ٹیسٹ میں کون سی گھڑیاں محفوظ رکھنی چاہییں؟
مارکیٹ ڈیٹا اور آرڈر کی ہینڈلنگ میں اکثر کئی الگ اوقات شامل ہوتے ہیں۔ آپ کے ڈیٹا سورس میں جو فیلڈز موجود ہوں، انہیں محفوظ رکھیں اور ان کے معنی واضح طور پر متعین کریں۔ کئی فیڈز میں ایکسچینج کا ٹائم اسٹیمپ اور مقامی وصولی کا ٹائم اسٹیمپ، دونوں مفید ہیں؛ ان میں سے کوئی بھی اس بات کا آفاقی ثبوت نہیں کہ ہر شریک نے کیا دیکھا۔
| گھڑی | یہ کیا ریکارڈ کرتی ہے | یہ اکیلے کس بات کا ثبوت نہیں دے سکتی |
|---|---|---|
| ایکسچینج ایونٹ کا وقت | ایونٹ کب پیش آیا، جیسا کہ وینیو بتاتا ہے | کسی اور فیڈ یا آپ کے پراسیس نے اسے کس ترتیب سے دیکھا |
| وصولی کا وقت | آپ کے کلیکٹر کو پیغام کب موصول ہوا | آپ کی حکمتِ عملی نے اسے پروسیس کرنا کب مکمل کیا |
| فیصلے کا وقت | آپ کے کوڈ نے سگنل کا جائزہ کب لیا | کہ درج شدہ قیمت اب بھی دستیاب تھی |
| آرڈر کی آمد کا وقت | وینیو آرڈر پر کب عمل کر سکتا تھا | فل ہونے کا ثبوت، جب تک میچنگ کے قواعد اور لیکویڈیٹی اس کی تائید نہ کریں |
اگر تاریخی ڈیٹا میں وصولی کے اوقات نہیں ہیں، تو اپنے مفروضے واضح کریں۔ بیک ٹیسٹ ایکسچینج ایونٹس کو ترتیب وار پروسیس کر کے فیصلے سے آرڈر کی آمد تک مقررہ 5 ms کی تاخیر فرض کر سکتا ہے۔ یہ ایک ماڈل ہے، بازیافت شدہ تاریخ نہیں۔ اگر ایک جیسے ایکسچینج ٹائم اسٹیمپس کے لیے سیکوئنس نمبر موجود نہیں، تو انہیں ترتیب دینے کا اصول بھی ایک مفروضہ ہے۔
برابر وقت والے ایونٹس کی ماڈلنگ کیسے کروں؟
سب سے پہلے، جہاں موجود ہوں وہاں سورس کے سیکوئنس نمبر محفوظ رکھیں۔ فیڈ کے اندر ترتیب طے کرنے کے لیے سیکوئنس نمبر ٹائم اسٹیمپ سے زیادہ مضبوط بنیاد دیتا ہے، اگرچہ مختلف چینلز یا مصنوعات کے سیکوئنس نمبر الگ الگ ہو سکتے ہیں۔
پھر سمیولیٹر کا پروسیسنگ اصول واضح کریں۔ ہر ایونٹ کے لیے طے کریں کہ آیا وہ حکمتِ عملی کی معلومات کو تازہ کر سکتا ہے، دستیاب لیکویڈیٹی بدل سکتا ہے، آرڈر شروع کر سکتا ہے، یا آرڈر کی توثیق کر سکتا ہے۔ یہ الگ الگ کام ہیں؛ انہیں ایک ہی «قطار پروسیس کریں» میں سمیٹنے سے ناممکن فل چپکے سے شامل ہو جاتے ہیں۔
- صرف وہ مارکیٹ معلومات لاگو کریں جو حکمتِ عملی کے فیصلے کے وقت تک پہنچ چکی ہو۔
- آرڈر بنائیں، پھر اسے وینیو تک پہنچنے کے ماڈل کردہ وقت تک آگے بڑھائیں۔
- عمل درآمد کی اجازت صرف آمد کے بعد دستیاب موزوں لیکویڈیٹی کے مقابل دیں، اور اس آرڈر کی قسم کے لیے مقررہ فل مفروضوں کے تحت۔
- ہر سمیولیٹڈ فل کے لیے استعمال شدہ ان پٹس، ایونٹس کی ترتیب اور تاخیر ریکارڈ کریں۔
بار پر مبنی حکمتِ عملی کے لیے یہ تفصیل سوال کی ضرورت سے زیادہ ہو سکتی ہے۔ اگر سگنل مکمل شدہ 1-minute بارز استعمال کرتا ہے اور آرڈر اگلی بار کے آغاز پر محتاط لاگت کے ماڈل کے تحت فل ہوتے ہیں، تو ملی سیکنڈ سے کم درجے کی ترتیب سے تحقیق کا نتیجہ غالباً نہیں بدلے گا۔ مقصد یہ ہے کہ وقت کی تفصیل بیک ٹیسٹ کے دعوے کے مطابق ہو۔
کیا آمد کے وقت کا ڈیٹا نہ ہو تو بھی بیک ٹیسٹ پر بھروسا کر سکتا ہوں؟
آپ پھر بھی اسے استعمال کر سکتے ہیں، مگر اس کی حدود واضح رکھیں۔ اگر حکمتِ عملی آہستہ ٹریڈ کرتی ہے اور اس کی رسک حدود وسیع ہیں، تو چند ملی سیکنڈ غیر اہم ہو سکتے ہیں۔ اگر یہ لمحاتی کوٹس پر ردعمل دیتی ہے، قطار میں جگہ کے لیے مقابلہ کرتی ہے، یا مختلف وینیوز کے لیڈ-لیگ سگنل پر منحصر ہے، تو آمد کے اوقات کی عدم موجودگی نتیجے کے لیے بنیادی اہمیت رکھ سکتی ہے۔
ناقدین درست کہتے ہیں کہ ایونٹس کے وقت کی بہت زیادہ باریکی جھوٹی قطعیت میں بدل سکتی ہے۔ تاریخی فیڈز نامکمل ہیں، گھڑیاں وقت سے ہٹ سکتی ہیں، اور وینیو کے ٹائم اسٹیمپس نیٹ ورک کے ہر مرحلے کو ظاہر نہیں کرتے۔ نینو سیکنڈ فیلڈز والا سمیولیٹر بھی فل کے لیے ایک سادہ مفروضہ اپنا سکتا ہے۔
اس لیے قطعیت کا دعویٰ کرنے کے بجائے حساسیت جانچیں: ایونٹس کی ممکنہ متبادل ترتیب اور آرڈر کی تاخیر کے ساتھ دوبارہ چلا کر ٹریڈز کی تعداد، فل کی قیمت اور برقرار رہنے والے سگنلز کا موازنہ کریں۔ اگر نتیجہ ایسی ترتیب پر منحصر ہے جسے ڈیٹا ثابت نہیں کر سکتا، تو یہ انحصار تحقیقی رپورٹ میں درج ہونا چاہیے۔ نامکمل گھڑی کے باوجود بیک ٹیسٹ مفید ہو سکتا ہے۔ اسے بس یہ تسلیم کرنا ہوگا کہ وہ حقیقتاً کون سا وقت جانتا ہے۔
← تمام پوسٹس


