AI Trading Track Record کی تصدیق کیسے کریں؟
قابلِ تصدیق AI trading track record کے لیے چھ receipts: benchmark، timestamps، trading costs اور sample length، اور کیوں ایک live quarter کافی نہیں۔
AI trading کا track record اسی وقت قابلِ تصدیق ہوتا ہے جب کوئی غیر متعلقہ شخص ان ریکارڈز کی بنیاد پر اسے دوبارہ تیار کر سکے جو نتائج سامنے آنے سے پہلے موجود تھے۔ آن لائن شائع شدہ مواد میں بہت کم مثالیں اس معیار پر پوری اترتی ہیں۔ ذیل میں وہ checklist دی گئی ہے جسے قاری تقریباً two minutes میں استعمال کر سکتا ہے۔ اس کے چار نکات کے لیے market data فراہم کیا گیا ہے: benchmark، timestamps، trading costs اور sample length۔
AI trading کا track record قابلِ تصدیق کیسے بنتا ہے؟
چھ خصوصیات۔ ہر خصوصیت ایسی ہے جسے آپ کسی ذاتی رائے کے بجائے براہِ راست جانچ سکتے ہیں۔
- Entries نتیجہ معلوم ہونے سے پہلے شائع کیے گئے ہوں۔ Timestamp ایسی جگہ موجود ہونا چاہیے جسے مصنف بعد میں تبدیل نہ کر سکے، مثلاً اسی وقت push کیا گیا commit یا broker statement۔ ماضی کی trades کی فہرست، ان کا ریکارڈ ہونے کے بجائے ماضی کے بارے میں ایک دعویٰ ہوتی ہے۔
- ایک benchmark، آغاز ہی میں متعین ہو اور بعد میں تبدیل نہ کیا جائے۔ “Beat the market” کا کوئی واضح مطلب نہیں، جب تک موازنہ کسی مخصوص fund اور مخصوص مدت کے ساتھ طے نہ ہو۔
- Reported numbers میں costs شامل ہوں۔ Commissions، regulatory fees، short positions پر borrow cost، اور entry و exit دونوں پر ادا کیا گیا spread۔
- Runbook کو edit کرنے کے بجائے version کیا گیا ہو۔ جب کوئی public repository اس record کی بنیاد ہو تو مفید link کسی tagged release یا commit hash کی طرف ہونا چاہیے۔ Default branch کا link آج کی strategy دکھاتا ہے، جو ممکن ہے مارچ میں trade کرنے والی strategy نہ ہو۔
- ہر position اور ہر account شامل ہو، losers بھی۔ پانچ accounts میں سے صرف ایک کا record شائع کرنا selection ہے۔
- Starting capital اتنا ہو کہ fills قابلِ عمل دکھائی دیں۔ چند سو dollars کا notional ایسی positions کو “hold” کر سکتا ہے جنہیں کوئی حقیقی order شائع شدہ قیمت پر fill نہ کر پاتا۔
ان میں سے ایک خصوصیت غائب ہونے سے record لازماً بے ایمانی پر مبنی نہیں ہوتا۔ تاہم وہ قابلِ تصدیق نہیں رہتا۔ یہ صورت زیادہ عام ہے اور قاری کے لیے اتنی ہی بے فائدہ ہے۔
Benchmark کا نام پہلے سے کیوں متعین ہونا چاہیے
نتائج سامنے آنے کے بعد منتخب کیا گیا benchmark فنانس میں سب سے آسان فائدہ ہے۔ 2026 کے وہی چھ ماہ، چھ وسیع US index funds، اور صرف قیمت میں تبدیلی:
ہر عدد کے پیچھے موجود درست SQL
WITH rets AS (
SELECT ticker,
round(100 * (toFloat64(argMax(close, window_start))
/ toFloat64(argMin(close, window_start)) - 1), 2) AS return_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'IWM', 'DIA', 'RSP', 'MDY')
AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-01-02')
AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY ticker
)
SELECT ticker,
return_pct,
round(return_pct - min(return_pct) OVER (), 2) AS points_above_worst
FROM rets
ORDER BY return_pct DESCIWM نے 21.12% return دیا جبکہ DIA نے 8.42% return دیا۔ یکساں مدت میں 6 کے بلند ترین اور کم ترین نتائج کے درمیان 12.7 points کا فرق رہا۔ مدت ختم ہونے کے بعد یہ طے کرنا کہ کس benchmark کے مقابلے میں پیمائش کی جائے، اسی پورے فرق کے برابر فائدہ دے سکتا ہے، اور اسے حاصل کرنے کے لیے کسی strategy کو کچھ کرنے کی ضرورت نہیں۔ یہ dividends سے پہلے کے price returns ہیں۔ یہ دوسری measurement rule ہے جسے ابتدا ہی میں واضح کرنا ضروری ہے (ماہانہ returns کیسے ناپے جاتے ہیں) میں total-return arithmetic کی وضاحت موجود ہے۔
داخلے کا timestamp ہی پورا دعویٰ کیوں ہے
جو entry حرکت کے بعد دکھائی دے، وہ صرف chart کی وضاحت ہوتی ہے۔ ایک ہی session کے اندر market جتنا فاصلہ طے کرتی ہے، وہ اتنا زیادہ ہوتا ہے کہ "09:35 پر پوسٹ کیا گیا" اور "15:55 پر پوسٹ کیا گیا" کے درمیان فرق زیادہ تر دعویٰ کردہ برتریوں کو بے اثر کر دیتا ہے۔ 2026 کے پہلے نصف میں ہر session کے پہلے print سے ناپا گیا یہ فاصلہ درج ذیل ہے:
ہر عدد کے پیچھے موجود درست SQL
WITH minute_px AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
toTimeZone(window_start, 'America/New_York') AS et,
toFloat64(close) AS px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-01-02')
AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
),
opens AS (
SELECT session_date, argMin(px, et) AS open_px
FROM minute_px
GROUP BY session_date
),
buckets AS (
SELECT session_date,
toStartOfInterval(et, INTERVAL 30 MINUTE) AS bucket,
argMax(px, et) AS bucket_px
FROM minute_px
GROUP BY session_date, bucket
)
SELECT formatDateTime(b.bucket, '%H:%i') AS et_time,
count() AS session_count,
round(quantileDeterministic(0.5)(abs(100 * (b.bucket_px / o.open_px - 1)),
cityHash64(b.session_date)), 3) AS median_abs_move_pct
FROM buckets AS b
INNER JOIN opens AS o ON b.session_date = o.session_date
GROUP BY et_time
ORDER BY et_time09:30 ET bucket میں median session اپنے opening print سے 0.216% فاصلے پر ختم ہوا۔ 15:30 bucket میں median فاصلہ 0.415% تھا۔ کسی agent کو open پر معلوم معلومات میں اس سفر کا تقریباً پورا حصہ شامل نہیں ہوتا۔ commit history یا dated public feed ترتیبِ زمانی کا ثبوت فراہم کرتی ہے (AI کی روزانہ market research رپورٹس اسی خصوصیت پر کامیاب یا ناکام ہوتی ہیں)۔ equity curve کا screenshot اس کا کوئی ثبوت فراہم نہیں کرتا۔
نمبروں کے اندر کیا شامل ہونا چاہیے
Gross returns ایسے portfolio کی عکاسی کرتے ہیں جسے کوئی سرمایہ کار حقیقت میں hold نہیں کر سکتا۔ ہر entry اور exit پر bid-ask spread ادا کرنا پڑتا ہے۔ یہ spread خریدنے کے لیے دستیاب بہترین قیمت اور فروخت کے لیے دستیاب بہترین قیمت کے درمیان فرق ہوتا ہے۔ ہر security میں یہ فرق یکساں نہیں ہوتا:
ہر عدد کے پیچھے موجود درست SQL
SELECT ticker,
round(quantileDeterministic(0.5)(20000 * (toFloat64(ask_price) - toFloat64(bid_price))
/ (toFloat64(ask_price) + toFloat64(bid_price)),
cityHash64(sip_timestamp)), 2) AS median_spread_bps,
round(25000 * quantileDeterministic(0.5)(2 * (toFloat64(ask_price) - toFloat64(bid_price))
/ (toFloat64(ask_price) + toFloat64(bid_price)),
cityHash64(sip_timestamp)), 2) AS round_trip_cost_per_25k_usd
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'KO', 'MSTR')
AND sip_timestamp >= toDateTime('2026-07-15 15:00:00')
AND sip_timestamp < toDateTime('2026-07-15 16:00:00')
AND bid_price > 1
AND ask_price > bid_price
GROUP BY ticker
ORDER BY median_spread_bps DESCاس ایک midday hour کے دوران، quoted spread کا median 10.08 basis points تھا، جبکہ 0.27 کے مقابلے میں SPY پر یہ MSTR basis points رہا۔ ایک basis point، percentage point کا one hundredth ہوتا ہے۔ $25,000 کی position پر اس spread کو ایک بار خریدتے وقت اور ایک بار فروخت کرتے وقت cross کرنے کی لاگت اس فہرست کے وسیع ترین spread پر $25.2 اور سب سے کم spread پر $0.66 بنتی ہے، commissions سے پہلے۔ جو book ہفتے میں ایک بار مکمل طور پر turnover ہو، وہ یہ لاگت سال میں تقریباً fifty times ادا کرتی ہے۔ ایسا record جس میں یہ خرچ شامل نہ ہو، خاموشی سے وہ رقم اپنے returns میں شامل کر لیتا ہے (stock trade کرنے کی لاگت میں باقی bill کی تفصیل دی گئی ہے)۔
لائیو نتائج کب معنی خیز ہوتے ہیں؟
لائیو trading کی ایک سہ ماہی وسیع distribution سے لیا گیا صرف ایک sample ہے، اور اس پھیلاؤ کی پیمائش کی جا سکتی ہے۔ جنوری 2015 سے SPY کے لیے، جو S&P 500 کو track کرنے والا سب سے بڑا fund ہے، ایک مقررہ مدت کی ہر overlapping window کو percentiles میں ترتیب دیا گیا ہے:
ہر عدد کے پیچھے موجود درست SQL
WITH daily AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
toFloat64(argMax(close, window_start)) AS close_px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2015-01-02')
AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY session_date
),
series AS (
SELECT groupArray(close_px) AS px
FROM (SELECT close_px FROM daily ORDER BY session_date)
),
horizons AS (
SELECT arrayJoin([21, 63, 126, 252]) AS sessions, px
FROM series
),
windows AS (
SELECT sessions,
arrayJoin(arrayMap(i -> (i, 100 * (px[i + sessions] / px[i] - 1)),
range(1, length(px) - sessions + 1))) AS w
FROM horizons
),
measured AS (
SELECT sessions,
w.1 AS window_index,
w.2 AS window_return_pct
FROM windows
)
SELECT multiIf(sessions = 21, '1 month',
sessions = 63, '3 months',
sessions = 126, '6 months',
'12 months') AS holding_period,
count() AS window_count,
round(quantileDeterministic(0.05)(window_return_pct,
cityHash64(window_index * 1000 + sessions)), 1) AS p05_return_pct,
round(quantileDeterministic(0.50)(window_return_pct,
cityHash64(window_index * 1000 + sessions)), 1) AS median_return_pct,
round(quantileDeterministic(0.95)(window_return_pct,
cityHash64(window_index * 1000 + sessions)), 1) AS p95_return_pct,
round(quantileDeterministic(0.95)(window_return_pct,
cityHash64(window_index * 1000 + sessions))
- quantileDeterministic(0.05)(window_return_pct,
cityHash64(window_index * 1000 + sessions)), 1) AS spread_pct,
round(stddevSamp(window_return_pct), 1) AS stdev_pct
FROM measured
GROUP BY sessions
ORDER BY sessions2826 overlapping تین ماہ کی windows میں، حصص رکھ کر کچھ نہ کرنے کا median outcome 3.9% تھا۔ 5th percentile -8.8% اور 95th percentile 12.2% رہے، جس سے 21.1 points چوڑا band بنتا ہے۔ اس band کے اندر آنے والا کوئی بھی واحد سہ ماہی نتیجہ اس بات سے مطابقت رکھتا ہے کہ سرمایہ کار نے index خریدا اور چھٹی پر چلا گیا۔ بیس agents لانچ کریں، انہیں ایک سہ ماہی تک چلائیں، پھر بہترین agent شائع کریں؛ اسکرین پر دکھائی دینے والا number لازماً اسی طرح کے band کے اوپری حصے سے آتا ہے۔
Sample length کا حساب بے رحم ہے۔ اسی series میں بارہ ماہ کے outcomes کا standard deviation 13.6 points ہے۔ حقیقی edge کو noise سے الگ کرنے کے لیے لائیو نتائج کے تقریباً (2 × variation ÷ edge)² سال درکار ہوتے ہیں۔ اس variation کی سطح پر سالانہ 3 points کا فرضی edge ثابت کرنے میں کئی دہائیاں لگ سکتی ہیں، جبکہ 10 points کا edge بھی مہینوں کے بجائے سالوں کا تقاضا کرتا ہے۔ اوپر دی گئی windows ایک دوسرے سے overlap کرتی ہیں، اس لیے 2826 windows کی تعداد ہے، آزاد samples کی نہیں۔
کیا $25,000 کی حقیقی رقم اس سوال کو طے کر دیتی ہے؟
حقیقی رقم ایک مخصوص انداز میں شواہد کو مضبوط بناتی ہے۔ Paper trading میں ایسے نرخوں پر orders execute ہوتے ہیں جن پر کسی counterparty نے رضامندی نہیں دی ہوتی، اور کوئی order کبھی reject نہیں ہوتا۔ $25,000 سے funded account میں live quotes کے مقابلے میں fills ہوتے ہیں اور حقیقی commissions ادا کی جاتی ہیں۔ یہ سب ایسے statements میں درج ہوتا ہے جن کا audit کوئی third party کر سکتی ہے۔ پوزیشن sizes بھی اتنے بڑے ہوتے ہیں کہ fills حقیقی مارکیٹ لین دین معلوم ہوں، فرضی نہیں۔
اس سے sample کا مسئلہ برقرار رہتا ہے۔ چار ماہ تک $25,000 کی trading اب بھی اوپر بیان کردہ distribution سے صرف ایک sample ہے۔ مزید یہ کہ drawdown کے بعد live account بند کیا جا سکتا ہے اور record کو نئے سرے سے شروع کیا جا سکتا ہے۔ رقم کا حجم fills کو حقیقی بناتا ہے۔ نتائج کو معلوماتی بنانے کے لیے صرف وقت درکار ہوتا ہے۔
پہچاننے کے لیے ناکامی کی چار صورتیں
- Track record کا لباس پہنے ہوئے backtest۔ ماضی کے data پر simulated نتائج، ماضی کے بارے میں صرف مفروضے ہوتے ہیں۔ Look-ahead bias دکھاتا ہے کہ simulation ایسی معلومات کیسے شامل کر لیتی ہے جو اس وقت strategy کے پاس موجود نہیں ہو سکتی تھیں۔ اس کی سب سے واضح علامت ایسی equity curve ہے جو code کے بننے سے کئی سال پہلے شروع ہو جائے۔
- اسٹیج پر صرف کامیاب survivor۔ دس agents لانچ کیے گئے، مگر صرف ایک شائع کیا گیا۔ Multi-agent AI trading systems میں یہ غلطی غیر ارادی طور پر آسانی سے ہو سکتی ہے، کیونکہ جو framework دس variants چلاتا ہے، وہی لکھنے کے قابل ایک variant بھی منتخب کر لیتا ہے۔
- دوبارہ آغاز۔ Drawdown، وقفہ، نیا account، اور ایسی curve جو restart date سے شروع ہو۔ فیصلہ کن سوال یہ ہے: پہلے account کے پہلے dollar سے equity curve دکھائیں۔
- دوبارہ لکھی گئی runbook۔ Trade اور تحریر کے درمیان prompts اور position limits میں ترمیم کر دی گئی۔ LLM-generated alpha factors ہزاروں کی تعداد میں بنائے جا سکتے ہیں، اس لیے selection rule کو selection سے پہلے شائع کرنا ضروری ہے۔ ورنہ record ان factors کی کہانی بن جاتا ہے جو اتفاقاً کارآمد ثابت ہوئے۔
عمومی سوالات
کیا AI trading کے track record کی تصدیق کی جا سکتی ہے؟
ہاں، اگر entries کے نتائج معلوم ہونے سے پہلے شائع کی گئی ہوں، benchmark پہلے سے طے کیا گیا ہو، costs اعداد میں شامل ہوں، اور ہر account دکھایا گیا ہو۔ جانچ mechanical ہوتی ہے اور چند منٹ لیتی ہے۔ زیادہ تر شائع شدہ records پہلے ہی معیار پر ناکام ہو جاتے ہیں۔
Live AI trading record کتنے عرصے تک چلنا چاہیے؟
تقریباً ہر شائع شدہ record سے زیادہ عرصے تک۔ یہاں ناپی گئی مدتوں کے دوران index کے بارہ ماہ کے نتائج میں standard deviation 13.6 points رہی۔ اس لیے معمول کے confidence level پر معمولی برتری کو محض قسمت سے الگ کرنے کے لیے کم از کم کئی سال، اور چھوٹی برتری کی صورت میں کئی دہائیاں درکار ہوتی ہیں۔
کیا $25,000 کسی AI portfolio کے نتائج کو بامعنی بنانے کے لیے کافی ہیں؟
یہ fills کو حقیقی بنانے کے لیے کافی ہے: live quotes، حقیقی commissions اور قابلِ audit statements۔ لیکن چند ماہ کے نتائج کو statistically meaningful بنانے کے لیے کافی نہیں۔ یہ سوال account size کے بجائے گزرے ہوئے وقت سے متعلق ہے۔
Backtest اور track record میں کیا فرق ہے؟
Backtest پہلے سے موجود data پر rules لاگو کرتا ہے۔ Track record ان فیصلوں کا سلسلہ ہوتا ہے جو نتائج سامنے آنے سے پہلے شائع کیے گئے ہوں۔ صرف دوسرے معاملے کو بعد کے واقعات غلط ثابت کر سکتے ہیں، اور یہی چیز اسے evidence بناتی ہے۔
Benchmark کا انتخاب اتنا اہم کیوں ہے؟
2026 کی پہلی ششماہی کے دوران اوپر دیے گئے چھ index funds قیمت کی بنیاد پر 12.7 points کے فرق سے ختم ہوئے۔ Window بند ہونے کے بعد منتخب کیا گیا benchmark، strategy کے کسی کردار کے بغیر، یہ پورا فرق پیدا کر سکتا ہے۔
اس صفحے پر موجود ہر number market data پر مبنی stored query سے حاصل کیا گیا ہے، اور ہر panel کے نیچے SQL موجود ہے۔ Strasmore terminal پر یہی windows اپنی تاریخوں پر لاگو کریں۔