Type/to search
2
Follow
484
Followers
اوسطہ لکیریں چھانٹنے کی مقداری حکمت عملی: ایک Harness Engineer کے خیالات کا مقداری عمل
Discussions
Created 2026-04-17 11:55:34  Updated 2026-04-21 09:00:18
 0
 374

img

تعارف: Harness Engineer کا تصور

حالیہ دنوں میں AI/ML انجینئرنگ کمیونٹی میں ایک سوچ کو بڑے پیمانے پر زیر بحث لایا جا رہا ہے — Harness Engineer۔

اس کا بنیادی تصور بہت سادہ ہے:

خود ذہن سے جواب دینے کے بجائے، ایک فریم ورک بنائیں جو ڈیٹا اور تجربات کو خود جواب ڈھونڈنے دے۔

روایتی انجینئر کا طریقہ یہ ہے: میرے خیال میں پیرامیٹر A اچھا ہے، میں کوڈ لکھ کر A کو نافذ کروں گا۔ Harness Engineer کا طریقہ یہ ہے: مجھے نہیں معلوم کہ A، B، C میں سے کون سا بہتر ہے، میں ایک فریم ورک بناؤں گا جس میں A، B، C بیک وقت چلیں گے، اور ڈیٹا مجھے جواب بتائے گا۔

انجینئر کا کام تلاش کی جگہ (search space) اور تشخیص کے معیار (evaluation criteria) کی وضاحت کرنا ہے، اور سسٹم کا کام اس جگہ میں خود بخود بہترین حل تلاش کرنا ہے۔ ایم ایل میں یہ سوچ walk-forward optimization اور AutoML سے مطابقت رکھتی ہے؛ کوانٹیٹیٹو فنانس میں بھی اس کے قدرتی استعمال کے مواقع موجود ہیں۔

img

شیطانی سکے (Demon Coins): سب سے واضح رجحان کا میدان

کرپٹو کرنسی کنٹریکٹ مارکیٹ میں، سکوں کی ایک خاص قسم پر توجہ دینے کی ضرورت ہے — بہت زیادہ تجارتی حجم والے "شیطانی سکے"۔

ان سکوں کی کچھ مشترکہ خصوصیات ہیں:

  • سرمایہ انتہائی مرکوز ہوتا ہے، بڑے کھلاڑیوں کا عمل نمایاں ہوتا ہے
  • رجحان کا تسلسل نسبتاً مضبوط ہوتا ہے، ایک بار شروع ہونے کے بعد اکثر طویل عرصہ جاری رہتا ہے
  • اتار چڑھاؤ (volatility) زیادہ ہوتا ہے، کچھ زیادہ حجم والے سکے مخصوص ادوار میں مضبوط رجحان دکھاتے ہیں، اور ان پر موونگ ایوریج (MA) حکمت عملی کا تاریخی بیک ٹیسٹ نسبتاً بہتر کارکردگی دکھاتا ہے

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

صرف ایک مسئلہ ہے: کون سے سکے شیطانی ہیں؟ اور موونگ ایوریج کے کون سے پیرامیٹرز استعمال کریں؟

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

یہ وہ مقام ہے جہاں Harness Engineer کا تصور سامنے آتا ہے۔

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

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

img

حکمت عملی کا ڈھانچہ: دوہری ریس کا طریقہ کار (Two-layer Racing Mechanism)

پہلی سطح: اثاثہ جات کا پول بنانا

پوری مارکیٹ کے کنٹریکٹ سکوں میں سے، ڈالر کے تجارتی حجم کے اعتبار سے اترتے ترتیب میں پہلے 150 سکوں کو امیدوار پول کے طور پر لیا جاتا ہے۔

حجم کیوں؟ کیونکہ جہاں حجم زیادہ ہوتا ہے، وہاں سرمایہ سب سے زیادہ مرکوز ہوتا ہے، رجحان بننے کا امکان سب سے زیادہ ہوتا ہے، اور شیطانی سکے بھی سب سے زیادہ ہوتے ہیں۔ اس مرحلے میں کوئی ساپیکش فیصلہ نہیں کیا جاتا، خالصتاً مارکیٹ کے سرمائے کو ووٹ دینے دیا جاتا ہے، جس کا تجارتی حجم زیادہ ہوگا وہ پول میں آئے گا۔

javascript
const filtered = tickers .filter(t => t.Symbol.endsWith('USDT.swap')) .map(t => ({ symbol: t.Symbol, quoteVolume: t.Last * t.Volume })) .sort((a, b) => b.quoteVolume - a.quoteVolume) .slice(0, topN) .map(t => t.symbol);

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

دوسری سطح: دوہری ریس کے ذریعے بہترین کا انتخاب

یہ پوری حکمت عملی کا سب سے اہم حصہ ہے، اور یہاں Harness تصور سب سے واضح طور پر نظر آتا ہے۔

درست عملدرآمد ترتیب یہ ہے:

img

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

بیک ٹیسٹ کا عمل

امیدوار پول کے ہر ایک سکے کے لیے، MA پیرامیٹرز کے متعدد سیٹ بیک وقت چلائے جاتے ہیں، ہر سیٹ تاریخی K لائنوں پر آزادانہ طور پر چلتا ہے، اور حقیقی کراس اوور کھلنے اور بند ہونے کی منطق کی نقل کرتا ہے:

javascript
// ہر سکے × ہر پیرامیٹر سیٹ پر گھومیں for (const params of maParamsList) { const bt = backtest_MA(records, params.fast, params.slow); // ہر بیک ٹیسٹ سے آزادانہ طور پر ملتا ہے: جیت کی شرح، منافع/خسارہ تناسب، زیادہ سے زیادہ ڈرا ڈاؤن، سگنلز کی تعداد }

ہر بیک ٹیسٹ کی بنیادی منطق معیاری ڈبل موونگ ایوریج کراس اوور ہے:

javascript
const crossUp = fastMA[i-1] <= slowMA[i-1] && fastMA[i] > slowMA[i]; const crossDown = fastMA[i-1] >= slowMA[i-1] && fastMA[i] < slowMA[i]; if (crossUp) position = { side: 'long', entryPrice: records[i].Close }; if (crossDown) position = { side: 'short', entryPrice: records[i].Close };

مجموعی اسکورنگ

بیک ٹیسٹ مکمل ہونے کے بعد، پیرامیٹرز کے ہر سیٹ کے بیک ٹیسٹ کے نتائج کا مجموعی اسکور نکالا جاتا ہے۔ اسکور دو حصوں پر مشتمل ہے:

معیاری وزنی اسکور (کل گتانک 0.80):

javascript
const score = Math.min(bt.winRate * 100, 100) * 0.30 // جیت کی شرح، اوپری حد 100 + Math.min(bt.profitFactor * 20, 60) * 0.30 // منافع/خسارہ تناسب، اوپری حد 60 + Math.max(0, 1 - bt.maxDrawdown / maxMDD) * 100 * 0.20 // زیادہ سے زیادہ ڈرا ڈاؤن کا کنٹرول + volPct * volPctBonus // اتار چڑھاؤ کی صد فیصد پوزیشن کا انعامی اضافی حصہ

اتار چڑھاؤ کی صد فیصد پوزیشن کا انعامی اضافی حصہ: آخری حصہ volPct × volPctBonus (پہلے سے طے شدہ گتانک 10) وزن کے نظام سے الگ ایک انعامی حصہ ہے، جس کا مقصد ایک جیسے اسکور کی صورت میں ان سکوں کو ترجیح دینا ہے جن کا موجودہ اتار چڑھاؤ تاریخی طور پر زیادہ صد فیصد پوزیشن پر ہو — کیونکہ اس قسم کے سکے اکثر زیادہ فعال رجحان رکھتے ہیں۔

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

پہلی سطح کا مقابلہ: پیرامیٹرز کا مقابلہ

ایک ہی سکے کے پیرامیٹرز کے متعدد سیٹ اپنے الگ الگ اسکور حاصل کرتے ہیں، اور سب سے زیادہ اسکور والے سیٹ کو اس سکے کے نمائندہ اسکور اور بہترین پیرامیٹر کے طور پر لیا جاتا ہے:

javascript
if (score > bestScore) { bestScore = score; bestResult = bt; bestParams = params; // موجودہ تاریخی کارکردگی کے لحاظ سے بہترین پیرامیٹر سیٹ ریکارڈ کریں }

دوسری سطح کا مقابلہ: سکوں کا مقابلہ

تمام سکے اپنے بہترین اسکور پیش کرتے ہیں، انہیں ترتیب دے کر Top N کو وائٹ لسٹ میں ڈالا جاتا ہے:

javascript
results.sort((a, b) => b.score - a.score); const whitelist = results.slice(0, topCoins).map(r => r.coin);

آخر میں جو ملتا ہے وہ ہر وائٹ لسٹ سکے کے لیے اس کا مخصوص بہترین موونگ ایوریج پیرامیٹر ہے، نہ کہ ایک ہی پیرامیٹر سیٹ جو سب پر لاگو ہو۔

تیسری سطح: حقیقی تجارت اور رسک مینجمنٹ

فلٹر شدہ کنفیگریشن کے ساتھ حقیقی تجارت کی جاتی ہے، اور اس کے ساتھ رسک مینجمنٹ کی متعدد پرتیں شامل کی جاتی ہیں:

سگنل کا محرک: ریئل ٹائم میں وائٹ لسٹ سکوں کے موونگ ایوریج کراس اوور کی حالت چیک کی جاتی ہے، گولڈن کراس پر لمبی پوزیشن اور ڈیتھ کراس پر چھوٹی پوزیشن:

javascript
const crossUp = fastPrev <= slowPrev && fastCur > slowCur; const crossDown = fastPrev >= slowPrev && fastCur < slowCur; if (crossUp) longList.push(sym); if (crossDown && allowShort) shortList.push(sym);

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

javascript
function getDynamicTrailDrawdown(maxPnl) { if (maxPnl >= 7) return 3; // زیادہ منافع، ڈرا ڈاؤن کی رواداری سخت if (maxPnl >= 4) return 2; return 1.5; // کم منافع، مارکیٹ کو زیادہ جگہ دیں }

مارکیٹ کی حالت کا ادراک: BTC کے اتار چڑھاؤ کی صد فیصد پوزیشن کا پتہ لگایا جاتا ہے، زیادہ اتار چڑھاؤ والے ماحول میں پوزیشن کا سائز خود بخود کم کر دیا جاتا ہے، اور انتہائی حالات میں براہ راست چھوٹی پوزیشن لینے پر پابندی لگا دی جاتی ہے:

javascript
if (marketState === 'volatile') positionScaleDown = 0.5; else if (marketState === 'high_vol') positionScaleDown = 0.8; else if (marketState === 'low_vol') positionScaleDown = 0.7;

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


بنیادی مفروضہ: رجحان کا تسلسل

یہ فریم ورک اس وقت تک کامیاب ہو سکتا ہے جب تک ایک بنیادی مفروضہ درست ہو:

حالیہ تاریخ میں اچھی کارکردگی دکھانے والے سکے اور پیرامیٹرز کا اگلے قلیل مدتی عرصے میں بھی کچھ حد تک تسلسل برقرار رہتا ہے۔

یہ کوئی علمِ غیب نہیں، اس کے پیچھے کچھ مارکیٹ منطقی بنیادیں موجود ہیں—مالیاتی بہاؤ کا تسلسل، مارکیٹ جذبات کا جاری رہنا، اور بڑے کھلاڑیوں کے رویے کی ہم آہنگی، یہ سب مل کر ایک خاص وقت کی کھڑکی میں رجحان کو برقرار رکھتے ہیں۔

لیکن ایمانداری سے کہنا ضروری ہے کہ یہ مفروضہسخت شماریاتی تصدیق سے نہیں گزرا، یہ زیادہ تر ایک تجرباتی فیصلہ ہے۔ یہ فریم ورک حقیقی تجارت میں مسلسل کارگر رہے گا یا نہیں، اس کا حتمی امتحان اصلی تجارتی ڈیٹا ہی کرے گا۔


اصلی Harness Engineer سے کیا فرق ہے

یہ واضح کرنا ضروری ہے۔

یہ حکمت عملی Harness کی شکل رکھتی ہے، لیکن اصلی Harness Engineer نظام کے مقابلے میں اب بھی واضح فرق موجود ہیں:

پہلواصلی Harnessیہ حکمت عملی
نمونوں کی تقسیمتربیتی سیٹ + توثیقی سیٹ + ہولڈ آؤٹ ٹیسٹ سیٹمکمل تاریخی ڈیٹا پر بیک ٹیسٹ، نمونے سے باہر توثیق نہیں
اوور فٹنگ سے تحفظواضح عمومیت کا امتحانپیرامیٹر تنوع پر جزوی انحصار، نامکمل
تجرباتی علیحدگیہر تغیر الگ الگ چلتا ہے، ایک دوسرے پر اثر نہیں ڈالتاایک ہی کینڈل اسٹک ڈیٹا شیئر کرتا ہے، پوشیدہ مربوط ہے
تعیناتی کی شرطتعیناتی سے پہلے validation پاس کرنا ضروریسب سے زیادہ اسکور والا براہ راست تعینات، ثانوی تصدیق کی تہہ نہیں
غلطی کا جمع ہوناہر پرت کی تشخیص علیحدہدونوں سطحوں کی دوڑ تاریخی بہترین پر مبنی، غلطیاں جمع

بنیادی فرق یہ ہے: اصلی Harness پوچھتا ہے "کیا یہ نتیجہ نمونے سے باہر بھی درست رہتا ہے؟"، جبکہ اس حکمت عملی کے دو درجے کی دوڑ سے منتخب کردہ "بہترین" بنیادی طور پر تاریخی بہترین ہیں—پیرامیٹر کی سطح پر اوور فٹنگ، کرنسی کی سطح پر اوور فٹنگ کے ساتھ مل کر، یہ مستقبل میں بھی برقرار رہے گا یا نہیں، یہ ایک ہمیشہ کھلا سوال ہے۔


نتیجہ: کشتی پر نشان لگانا، یا پھر بھی آزمانے کے قابل؟

مقداری دنیا میں، پیش گوئی کرنا ہمیشہ ایک بہت مشکل کام رہا ہے۔

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

یہ تنقید بے وجہ نہیں۔

لیکن بات یہ ہے کہ جو کوشش کرنی چاہیے، وہ کرنی چاہیے۔

مقداری تجارت کا جوہر کبھی بھی ایک ہمیشہ درست جواب تلاش کرنا نہیں، بلکہ غیر یقینی صورتحال میں منظم طریقے سے جیتنے کے امکانات بڑھانا ہے۔ چاہے کشتی پر نشان لگانا ہی کیوں نہ ہو، آپ کو پہلے ایک کشتی چاہیے اور اس پر نشان لگانا ہوگا—حکمت عملی کو ایک جگہ مقرر کرنا (کشتی) خود مقداری تجارت کا آغاز ہے۔

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

راستہ چل کر بنتا ہے، سوچ کر نہیں۔

حکمت عملی کا سورس کوڈ: Harness Engineer均线筛选量化策略

Comment
All comments (0)
No data
No data
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)