1 نومبر، 2026 · تحقیق

بیک ٹیسٹ کو وارم اپ کیسے کریں بغیر لک بیک کو کارکردگی میں شامل کیے؟

بیک ٹیسٹ کو وارم اپ کیسے کریں بغیر لک بیک کو کارکردگی میں شامل کیے؟

اسپیک میں 20 دن کا Donchian بے ضرر لگتا ہے۔ ایجنٹ 20 بار کا rolling max لکھ دیتا ہے، بیک ٹیسٹ parquet فائل کی پہلی قطار سے شروع ہوتا ہے، اور پہلے دو ہفتوں تک "20 دن کی اونچائی" بس موجود بارز کا running max ہوتی ہے۔ چوتھے دن یہ چار دن کی اونچائی ہوتی ہے۔ وہ حکمت عملی جو آپ سمجھتے تھے کہ آپ ٹیسٹ کر رہے ہیں، وہ نہیں جس نے پہلے درجن فلز پیدا کیے۔

میرے پاس ETHUSDT کی روزانہ بارز پر ایک نوٹ بک ہے جہاں مکمل نمونہ Sharpe 1.4 ہے۔ پہلی 20 سیشنز کاٹ دیں تو یہ 0.6 پر گر جاتا ہے۔ وہی 20 رکھیں اور پہلے سال کا باقی حصہ ہٹا دیں، تو یہ 3.1 پرنٹ کرتا ہے۔ کسی نے کل نہیں لیک کیا۔ حکمت عملی نے ماضی استعمال کیا، بس اتنا نہیں جتنا چاہیے تھا، اور رپورٹ نے ان ادھورے ٹریڈز کو ثبوت مان لیا۔

1.4مکمل نمونہ Sharpe، ادھوری ونڈو شامل
0.6وہی کوڈ 20 مکمل سیشنز کے بعد
3.1Sharpe اگر صرف برن اِن ٹریڈز رکھیں

ونڈو کو بھرنے کے دوران ہی ٹریڈ کرنے دیں

معمول کی تباہی min_periods=1 ہے۔ Pandas اگر آپ اجازت دیں تو ایک ہی بار پر rolling mean نکال دے گا۔ ایجنٹس یہ مسلسل کرتے ہیں، کیونکہ فریم کے اوپر NaN بگ لگتا ہے، اور اسے بھرنے سے یونٹ ٹیسٹ سبز ہو جاتا ہے۔

دو ریٹرن مشاہدات کے ساتھ 20 دن کا realized-vol ہدف سائز کا دھماکہ ہے۔ دو اعداد کا ویرینس سکے کی اچھال ہے، آپ اسے الٹتے ہیں، اور پہلی پوزیشن مطلوبہ رسک سے کئی گنا ہو جاتی ہے۔ قریبِ صفر سٹینڈرڈ ڈیوی ایشن کے خلاف z-score وہی کرتب سائن کے ساتھ دکھاتا ہے: حکمت عملی میں ایسی تیز انٹری نظر آتی ہے جو ونڈو کے ایماندار ہونے کے بعد کبھی دوبارہ نہیں دکھتی۔

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

Zero-fill اور forward-fill ایک الگ جھوٹ گھڑتے ہیں۔ 0 پر RSI اوور سولڈ پڑھتا ہے۔ گمشدہ ATR کا 0 یونٹ سائز کو پھاڑ دیتا ہے، اور بیک ٹیسٹ فرمانبرداری سے ایک گودام خرید لیتا ہے۔ میں یہ ترجیح دوں گا کہ NaN آرڈر کو مار دے بجائے اس کے کہ 0 ایک آرڈر ایجاد کرے۔

میں اب بھی خود کو قطار 0 سے پلاٹ کرتے پکڑتا ہوں کیونکہ چارٹ کے بائیں جانب خالی مہینہ ادھورا لگتا ہے۔ خالی مہینہ ہی ایماندار حصہ ہے۔

ایکویٹی منحنی کاٹیں، پوزیشن رکھیں

یہ کوڈ ریویو سے بچ جاتی ہے۔ آپ 20 دن کی فیچرز درست طریقے سے نکالتے ہیں، پلاٹ شدہ منحنی سے پہلی 20 قطاریں ہٹا دیتے ہیں، اور 21 جنوری سے شائع کرتے ہیں۔ 21 جنوری کی پوزیشن 14 جنوری کو کھلی تھی۔ trailing stop کا high-water، pyramid شمار، ان برنز کے بعد کیش: یہ سب "صاف" نمونے میں چلا آیا۔

تباہی ایک ایسی پیپر حکمت عملی ہے جسے تحریر کی تاریخ پر شروع نہیں کیا جا سکتا۔ رپورٹ شدہ آغاز پر فلیٹ سے ری سٹارٹ کریں تو پہلے ہفتے کے آرڈرز میل نہیں کھاتے۔ کبھی بیک ٹیسٹ پہلے سے اس ٹریڈ میں ہوتا ہے جس میں داخل ہونے کی پیپر سسٹم کے پاس کوئی وجہ نہیں۔ کبھی پیپر سسٹم داخل ہوتا ہے کیونکہ اس کا لک بیک ٹھنڈا ہے، اور بیک ٹیسٹ باہر بیٹھا رہتا ہے کیونکہ اس کے پوشیدہ مہینے نے پہلے ہی بریک آؤٹ لے لیا۔ دو اوپننگ بکس، ایک شائع شدہ آغاز کی تاریخ۔

Walk-forward فولڈز یہ خاموشی سے کرتے ہیں۔ ہر ٹیسٹ ونڈو کا ایک لک بیک ٹیل ہوتا ہے جسے آپ پلاٹ نہیں کرتے۔ اس ٹیل کی سمیولیشن چھوڑ دیں تو پہلے ٹیسٹ ٹریڈز پھر ادھوری ونڈو کے ٹریڈز بن جاتے ہیں۔ اسے سمیولیٹ کریں اور صرف ٹیسٹ دن رپورٹ کریں، تو ٹیسٹ دن کی پوزیشن ان فلز پر مشروط ہے جو آپ دکھا نہیں رہے۔ دوسری شکل ایک جائز تحقیقی انتخاب ہو سکتی ہے۔ فولڈ کی پہلی صبح کو cold start کہنا، جبکہ trailing stop ٹیل سے پہلے ہی live ہے، وہ طریقہ ہے جس سے دو محققین ایک ہی config سے دو Sharpe نکال لیتے ہیں۔

اگر شائع شدہ آغاز کی تاریخ پر فلیٹ سے ری سٹارٹ کرنے سے P&L بدل جائے، تو وارم اپ ٹریک ریکارڈ میں ہے۔ لک بیک ڈیٹا موجود ہو سکتا ہے۔ لک بیک ٹریڈز نہیں ہو سکتے۔

فیچر جب دن نہ ہو تو کیلنڈر دنوں میں وارم اپ

"اسے 30 دن دیں" فیچر کو نامکمل بیان چھوڑ دیتا ہے۔ 5 منٹ کے Donchian پر تیس کیلنڈر دن 20 پیریڈ لک بیک سے ہزاروں بار آگے ہیں۔ روزانہ فیچر پر تیس دن جسے 20 سیشنز درکار ہوں، ہفتہ وار چھٹیوں اور خلا کے حساب سے یا تو موٹا ہے یا پتلا۔

ہمارے perp venues میں سے ایک پر funding-rate z-score کو 30 دن کا وارم اپ ملا کیونکہ اسپیک میں 30 پیریڈز تھے اور کسی نے پیریڈز کو کیلنڈر میں ترجمہ کر دیا۔ وہاں funding ہر آٹھ گھنٹے پر پرنٹ ہوتی ہے۔ تیس دن تقریباً 90 سیٹلمنٹس ہیں۔ تیس پیریڈز دس دن ہیں۔ برن اِن کے اضافی دو مہینوں میں اتفاق سے ایک depeg ہفتہ شامل تھا۔ اسے ہٹانے سے live ونڈو حکمت عملی کی اصل تاریخ سے زیادہ پرسکون دکھائی دی۔ لوگوں نے آغاز کی تاریخ کی حساسیت کو الزام دیا۔ وارم اپ نے رژیم کھا لیا تھا۔

اور کرپٹو بمقابلہ ایکویٹی بغیر کسی کے پیرامیٹر تبدیل کیے اسی عدد کا مطلب بدل دیتی ہے۔ ETH کے بیس "دن" میں ہفتے شامل ہیں۔ ایکویٹی کے بیس سیشنز تقریباً ایک کیلنڈر مہینہ ہیں۔ اسٹاکس کی نوٹ بک سے 20 دن کا لک بیک گھنٹہ وار perpetual کینڈلز پر کاپی کریں تو 20 گھنٹے کا چینل ملتا ہے جس کا نام 20 دن کا ہے۔ پہلی درست بار پھر یا تو 20 گھنٹے بعد ہوتی ہے، یا 20 دن بعد اگر کوئی بعد کا فنکشن resample کرے، اور میں نے ایک ہی ایجنٹ diff میں دونوں دیکھے ہیں۔

پہلی قابلِ تجارت timestamp کو پِن کریں

وارم اپ ڈیٹا کی ضرورت ہے، بونس نمونہ نہیں۔ ہر فیچر اپنے درکار مکمل مشاہدات کی تعداد بتاتی ہے، انہی اکائیوں میں جن میں وہ حساب کی جاتی ہے۔ پہلی قابلِ تجارت timestamp پہلی وہ بار ہے جہاں یہ سب درست ہوں اور فلیٹ اکاؤنٹ کو آرڈر بھیجنے کی اجازت ہوتی۔

فیچراسپیک عام طور پر کیا کہتا ہےحقیقت میں کیا موجود ہونا چاہیےخاموش متبادل
20 دن کا Donchian20 روزانہ اونچائیاں20 مکمل سیشنزmin_periods=1 کے ساتھ running max
30 دن کا realized vol30 دن کی ونڈو30 close-to-close ریٹرنزدو دن کا ویرینس، سائز میں الٹا
20-print funding z-score20 دن20 funding سیٹلمنٹس20 کیلنڈر دن (~90 prints)، یا غلط ٹائم فریم کی 20 بارز
5m پر 14-period RSI14 پیریڈز14 بند پانچ منٹ کی بارز14 دن، یا خلا کے ساتھ forward-filled 14 بارز

اس timestamp سے پہلے کا P&L ٹریک ریکارڈ سے باہر رہتا ہے۔ اس timestamp سے پہلے کی حالت اب بھی سمیولیٹ کرنی پڑ سکتی ہے، تاکہ clock جب پہلی قابلِ تجارت بار پر لگے تو trailing stop یا cooldown حقیقی ہو، لیکن وہ فلز Sharpe، ٹریڈ شمار، یا capacity کے حساب میں نہیں جاتے۔ پھر وہ بدنما چیک چلائیں: اسی timestamp پر فلیٹ سے ری سٹارٹ کریں، لک بیک صرف ڈیٹا کے طور پر دستیاب ہو۔ اگر آرڈرز بدل جائیں، تو آپ پوشیدہ ٹریڈز شپ کر رہے تھے۔

پیپر ٹریڈنگ اسی قاعدے پر شروع ہوتی ہے۔ ہر walk-forward ٹیسٹ ونڈو بھی۔ اگر چارٹ ایسا لگے کہ ایک مہینہ غائب ہے، تو اسے غائب رہنے دیں۔

بیک ٹیسٹنگڈیٹا انجینئرنگwalk-forwardAI ایجنٹسپیپر ٹریڈنگ
شیئر کریںXLinkedInFacebookRedditHacker NewsWhatsAppTelegramEmail
← تمام پوسٹس