حال ہی میں AI بہت گرم ہے۔
پچھلے دو سالوں میں مارکیٹ کی سب سے مضبوط مرکزی لائن، گھومتے پھرتے، بنیادی طور پر AI سے گریز نہیں کر سکتی۔ NVIDIA、AMD、Broadcom、TSMC、Micron、Microsoft、Google、Meta、CoreWeave、Supermicro…… ہر تھوڑی دیر بعد، کوئی نہ کوئی کمپنی آمدنی، آرڈرز، سرمائے کے اخراجات,HBM,GPU,کلاؤڈ کمپیوٹنگ، ڈیٹا سینٹرز جیسے کلیدی الفاظ کی وجہ سے اچانک بڑھ جاتی ہے۔
دلچسپ بات یہ ہے کہ یہ اکثر الگ تھلگ نہیں بڑھتے۔
بعض اوقات NVIDIA پہلے حرکت کرتا ہے، اور پھر مارکیٹ ASIC,آپٹیکل ماڈیولز,سرورز,مائع کولنگ، بجلی کی تلاش شروع کرتی ہے؛ بعض اوقات Micron کی آمدنی توقعات سے زیادہ ہوتی ہے، اس کے بعد فنڈز HBM,اسٹوریج، سیمی کنڈکٹر آلات، ایڈوانسڈ پیکیجنگ پر جاتے ہیں؛ اور بعض اوقات کلاؤڈ فراہم کنندگان سرمائے کے اخراجات میں اضافہ کرتے ہیں، اور پورا AI انفراسٹرکچر چین دوبارہ قیمت لگا دیا جاتا ہے۔
یہ ایک AI تھیم کے اندر اثاثوں کی گردش کی طرح زیادہ ہے۔ مارکیٹ صرف ایک اسٹاک نہیں خرید رہی ہے، بلکہ ایک بڑی داستان کے تحت نئی شاخیں، نئی تشریحات اور نئی اضافی نمو کے اہداف تلاش کر رہی ہے۔
اور مسئلہ یہ ہے: اگر یہ تعلقات مکمل طور پر دستی طور پر منظم کیے جائیں تو یہ بہت تھکا دینے والا ہے۔
ایک شخص NVIDIA,AMD,Micron,Microsoft,Google کو جان سکتا ہے، لیکن درجنوں یا سینکڑوں TradFi اسٹاک معاہدوں کے کاروباری تبدیلیوں، خبروں کی تبدیلیوں، شعبے کی وابستگیوں اور قیمت کی نقل و حرکت پر مسلسل نظر رکھنا مشکل ہے۔ مزید پریشان کن بات یہ ہے کہ بہت سی کمپنیاں واحد خصوصیت نہیں رکھتیں۔ Google AI کلاؤڈ بھی ہے، Gemini بھی، اور اشتہاری پلیٹ فارم بھی؛ Microsoft کلاؤڈ بھی ہے، Copilot بھی، اور انٹرپرائز سافٹ ویئر بھی؛ Broadcom کے پاس ASIC بھی ہے، نیٹ ورک چپس بھی، اور اس کا AI ڈیٹا سینٹر سے تعلق بھی ہے۔
لہذا میں نے کوشش شروع کی: کیا بڑا ماڈل ہمارے لیے AI اسٹاک کا نقشہ بنا سکتا ہے؟
یہ نہیں کہ بڑا ماڈل ہمیں براہ راست بتائے کہ کیا خریدنا ہے، بلکہ اسے وہ کام کرنے دیں جس میں یہ زیادہ ماہر ہے: کمپنی کے کاروبار کو سمجھنا، AI ذیلی زمروں میں درجہ بندی کرنا، خبروں کو ترتیب دینا، واقعات کی تشریح کرنا، اور یہ فیصلہ کرنا کہ کسی کمپنی کی غیرمعمولی حرکت اسی تھیم کے کن اسٹاکس کو متاثر کر سکتی ہے۔ حقیقی تجارتی فیصلے قیمت، اعدادوشمار اور رسک مینجمنٹ پر چھوڑ دینے چاہئیں۔
پہلے اسٹاک کو صحیح ٹوکری میں ڈالیں
حکمت عملی کا پہلا قدم تجارت نہیں ہے، بلکہ نقشہ بنانا ہے۔
ایکسچینج میں اب بہت سے TradFi اسٹاک معاہدے ہیں، جن سے براہ راست NVDA، AMD، MU، MSFT، GOOGL، SMCI جیسے اسٹاک معاہدوں کا ایک سیٹ حاصل کیا جا سکتا ہے۔ سسٹم پہلے اسٹاک قسم کے معاہدوں کو فلٹر کرتا ہے، صرف حقیقی EQUITY اثاثوں کو برقرار رکھتا ہے۔
یہاں ایک بہت اہم تفصیل ہے: ETF,انڈیکس,لیوریجڈ ETF کو شامل نہیں کرنا چاہیے۔ مثال کے طور پر QQQ، SOXL، EWT جیسی چیزیں، اگرچہ معاہدے کی فہرست میں بھی ہو سکتی ہیں، لیکن یہ کمپنی کے اسٹاک نہیں ہیں۔ اگر انہیں AI اسٹاک کی ٹوکری میں ڈالا جائے تو بعد کے شماریاتی تعلقات آلودہ ہو جائیں گے۔
بنیادی فلٹرنگ منطق کچھ اس طرح ہے:
python
def refresh_equity_universe(store, force_reanalyze):
ms = exchange.GetMarkets()
symbols = []
for key, market in ms.items():
info = market.get("Info", {}) or {}
sub_type = info.get("underlyingSubType", []) or []
underlying_type = info.get("underlyingType", "")
if ".swap" not in key:
continue
if "TradFi" not in sub_type:
continue
if underlying_type != "EQUITY":
continue
symbol = normalize_symbol(key)
store["markets"][symbol] = {
"symbol": symbol,
"contract": key,
"underlyingType": underlying_type,
"amountPrecision": market.get("AmountPrecision", 0),
"pricePrecision": market.get("PricePrecision", 2),
"ctVal": market.get("CtVal", 1) or 1,
"minQty": market.get("MinQty", 0) or 0,
}
symbols.append(symbol)
اسٹاک پول حاصل کرنے کے بعد، سسٹم بڑے ماڈل کو ہر اسٹاک کا پروفائل بنانے کا حکم دیتا ہے۔
پروفائل صرف یہ نہیں لکھنا کہ "یہ ایک ٹیکنالوجی اسٹاک ہے"، بلکہ یہ فیصلہ کرنا ہے کہ یہ کن AI ذیلی زمروں سے تعلق رکھتا ہے۔ مثال کے طور پر ایک اسٹاک ایک ہی وقت میں متعدد ٹوکریوں سے تعلق رکھ سکتا ہے۔ Google کا تعلق AI کلاؤڈ، AI ماڈل ایپلیکیشن، AI پلیٹ فارم ایڈورٹائزنگ سے ہو سکتا ہے؛ Microsoft کا تعلق AI کلاؤڈ اور انٹرپرائز AI ایپلیکیشن سے ہو سکتا ہے؛ NVIDIA کا تعلق AI کمپیوٹ اور AI سرور سے ہو سکتا ہے؛ Micron کا تعلق AI اسٹوریج سے ہو سکتا ہے۔
اس مرحلے کا اہم نکتہ یہ ہے: AI دور میں اسٹاک ایک لیبل والے نہیں بلکہ کثیر لیبل والے ہوتے ہیں۔
ہر اسٹاک میں کئی خصوصیات ہوتی ہیں: کن ٹوکریوں سے تعلق رکھتا ہے، نمائش کی سطح کتنی ہے، اس ٹوکری میں لیڈر کی طرح ہے یا فالوور، کن کمپنیوں سے متاثر ہو سکتا ہے، اور کن کمپنیوں کو متاثر کر سکتا ہے۔
میں نے بڑے ماڈل کے آؤٹ پٹ ڈھانچے پر سخت پابندیاں لگائی ہیں:
python
schema = {
"symbol": symbol,
"asset_type": "stock|adr|etf|leveraged_etf|index|fund|other",
"company_name": "",
"sector": "",
"business_summary": "",
"tradable": False,
"model_confidence": 0,
"baskets": [
{
"id": "ai_cloud",
"exposure": 0.0,
"role": "leader|follower|both|observer",
"sub_theme": "",
"reason": ""
}
],
"search_names": [],
"event_keywords": [],
"negative_keywords": [],
"possible_leaders": [],
"possible_followers": [],
"brave_queries": [],
"reason": ""
}
یہاں سب سے اہم asset_type ہے۔ صرف stock اور adr ٹوکری میں داخل ہو سکتے ہیں، ETF,لیوریجڈ ETF,انڈیکس,فنڈ، اشیاء یا علاقائی ETF سب براہ راست فلٹر ہو جاتے ہیں۔
اس کے علاوہ، reason کو چینی میں ہونا چاہیے، فیلڈ کے نام ایک جیسے ہونے چاہئیں، اور اعتماد کی سطح کو 0 سے 100 تک یکساں کرنا چاہیے۔ ورنہ بعد میں لائیو ٹریڈنگ پیج بہت بے ترتیب نظر آئے گا۔
سیکٹر کی معلومات صرف اندازے پر مبنی نہیں ہو سکتی
صرف اسٹاک کی درجہ بندی کافی نہیں ہے۔
AI سیکٹر بہت تیزی سے تبدیل ہوتا ہے۔ آج مارکیٹ GPU پر چل رہی ہے، کل HBM پر جا سکتی ہے، پرسوں آپٹیکل ماڈیولز پر، اور کچھ دنوں بعد مائع کولنگ، بجلی، کلاؤڈ فراہم کنندگان کے سرمائے کے اخراجات پر۔
اگر صرف بڑے ماڈل کے اپنے علم پر انحصار کیا جائے تو یہ جلد پرانا ہو سکتا ہے۔ لہذا سسٹم کو ریئل ٹائم معلومات کے ذرائع کی بھی ضرورت ہے۔
میں نے یہاں BraveSearch کو شامل کیا ہے۔ سسٹم ہر AI ٹوکری کے سیکٹر کی معلومات کے ساتھ ساتھ ٹوکری میں اہم اسٹاک کی خبروں کو بھی وقتاً فوقتاً تلاش کرتا ہے۔
مثال کے طور پر AI اسٹوریج ٹوکری کے لیے، Micron,Western Digital,SanDisk,HBM,DRAM,NAND جیسے کلیدی الفاظ دیکھے جاتے ہیں؛ AI آپٹیکل کمیونیکیشن ٹوکری کے لیے، Ciena,Credo، Lumentum,AAOI,800G، 1.6T آپٹیکل ماڈیول جیسی معلومات دیکھی جاتی ہیں۔
سیکٹر انٹیلی جنس کا بنیادی بہاؤ یہ ہے:
python
def refresh_basket_intelligence(store):
if not BRAVE_KEY:
return
if not LLM_API_KEY:
return
intel = {}
for bid, basket in store["baskets"].items():
members = sorted(
basket["members"],
key=lambda x: x.get("exposure", 0),
reverse=True
)
top_symbols = [m["symbol"] for m in members[:8]]
basket_news = fetch_basket_news(basket, top_symbols)
stock_news = {}
for symbol in top_symbols[:6]:
profile = store["profiles"].get(symbol, {})
stock_news[symbol] = fetch_stock_news(profile, bid)
Sleep(800)
analysis = analyze_basket_intel_with_llm(
store, basket, top_symbols, basket_news, stock_news
)
if analysis:
analysis["basket"] = bid
analysis["basket_name"] = basket["name"]
analysis["symbols"] = top_symbols
analysis["updatedAt"] = int(time.time())
intel[bid] = analysis
store["basket_intel"] = intel
اس قدم کا مقصد ہر AI ذیلی شعبے کے لیے ایک متحرک پس منظر قائم کرنا ہے۔
بڑا ماڈل BraveSearch سے حاصل کردہ خبروں کی بنیاد پر شعبے کے رجحانات، بنیادی محرکات، بنیادی خطرات، امیدوار لیڈر، امیدوار فالوور، اور بعد میں تصدیق کی ضرورت والے تعلقات کو نکالے گا۔
یہ بڑے ماڈل سے براہ راست پوچھنے سے مختلف ہے کہ "AI اسٹوریج کے بارے میں آپ کا کیا خیال ہے؟" ہم پہلے اسے ریئل ٹائم خبریں دیتے ہیں، پھر اسے خلاصہ کرنے دیتے ہیں۔
خبروں سے متاثرہ تجارت نہیں، بلکہ قیمت میں پہلے بے ضابطگی
شروع میں میں نے بھی خبروں سے چلنے والی تجارت کے بارے میں سوچا۔
مثلاً کسی کمپنی کی کمائی توقعات سے زیادہ ہو، تو بڑے ماڈل کو کہا جائے کہ وہ فیصلہ کرے کہ کون سے اسٹاک فائدہ اٹھائیں گے، اور پھر براہ راست سگنل تیار کریں۔ لیکن حقیقت میں سوچنے پر یہ راستہ شور سے بھرا ہے۔ خبریں بہت زیادہ ہیں، بہت سی خبریں اہم لگتی ہیں لیکن مارکیٹ انہیں بالکُل قبول نہیں کرتی۔
اس لیے میں نے منطق کو الٹ کر رکھ دیا۔
پہلے قیمت دیکھیں، پھر خبریں۔
اگر کسی باسکٹ میں تمام اسٹاک نسبتاً مستحکم ہوں، تو نظام صرف مشاہدہ کرتا ہے۔ جب کوئی اسٹاک واضح طور پر شعبے کی اوسط کارکردگی سے ہٹ کر موجودہ لیڈر بن جاتا ہے، تب نظام پوچھتا ہے: یہ کیوں حرکت کر رہا ہے؟
اس قدم میں باسکٹ کے اندرونی ZScore کا استعمال کیا جاتا ہے۔
سیدھے الفاظ میں، یہ دیکھنا ہے کہ آیا کوئی اسٹاک ایک ہی شعبے کے دوسرے اسٹاک کے مقابلے میں غیر معمولی طور پر مضبوط یا کمزور ہے۔ اگر ایک اسٹاک اچانک نکل آئے جبکہ اسی باسکٹ کے دیگر اسٹاک ابھی تک ہم آہنگی سے ردعمل نہیں دکھا رہے ہوں، تو پھیلاؤ کا موقع ہو سکتا ہے۔
باسکٹ ZScore کا حساب لگانے کا بنیادی منطق درج ذیل ہے:
python
def calc_basket_zscores(store, symbols):
returns = {}
min_len = 999999
for symbol in symbols:
bars = get_records(
store["markets"][symbol]["contract"],
KLINE_PERIOD,
SYNC_WINDOW + 10
)
if len(bars) < SYNC_WINDOW + 2:
return None
r = calc_returns(bars)[-SYNC_WINDOW:]
returns[symbol] = r
min_len = min(min_len, len(r))
latest = {s: returns[s][-1] for s in symbols}
avg_latest = mean(list(latest.values()))
dev_series = {s: [] for s in symbols}
for i in range(min_len):
row = [returns[s][-min_len + i] for s in symbols]
row_avg = mean(row)
for s in symbols:
dev_series[s].append(returns[s][-min_len + i] - row_avg)
zscores = {}
max_abs = 0
for s in symbols:
sigma = std(dev_series[s])
z = (latest[s] - avg_latest) / sigma if sigma > 0 else 0
zscores[s] = round(z, 3)
max_abs = max(max_abs, abs(z))
return {"zscores": zscores, "maxAbs": max_abs}
اگر کسی باسکٹ کا زیادہ سے زیادہ انحراف بریک آؤٹ حد سے تجاوز کر جائے، تو نظام BREAKOUT_DETECTED حالت میں داخل ہوتا ہے۔
اس وقت نظام فوری طور پر تجارت نہیں کرتا، بلکہ وجہ ڈھونڈنا شروع کرتا ہے۔
خبریں صرف وضاحت کے لیے ہیں، شماریاتی تعلقات تصدیق کے لیے
جب لیڈر قیمت کے بریک آؤٹ کے بعد ظاہر ہوتا ہے، نظام اس کی تازہ ترین خبریں کھینچتا ہے، اور پھر بڑے ماڈل سے کہتا ہے کہ وہ فیصلہ کرے کہ آیا یہ خبر قیمت کی بے ضابطگی کی وضاحت کر سکتی ہے۔
لیکن یہاں سادہ سوال نہیں پوچھا جاتا کہ "کیا یہ خبر تیزی کی ہے؟"
نظام موجودہ باسکٹ، شعبے کی انٹیلی جنس، ریئل ٹائم قیمت کی حیثیت، لیڈر کا ZScore، امیدوار فالوورز، پہلے سے تصدیق شدہ شماریاتی تعلقات، اور BraveSearch سے حاصل کردہ خبریں، سب کچھ بڑے ماڈل کو دیتا ہے۔
بڑے ماڈل کو جواب دینا ہوتا ہے:
(1) کیا یہ خبر لیڈر کی قیمت کی بے ضابطگی کی وضاحت کر سکتی ہے۔
(2) کیا خبر کی سمت قیمت کی سمت سے مطابقت رکھتی ہے۔
(3) کیا تجارت کی اجازت ہے۔
(4) کون سے فالوور متاثر ہوتے ہیں۔
(5) ہر فالوور پر کتنا اثر ہے۔
(6) کیوں یہ فالوور متاثر ہو سکتے ہیں۔
وجہ ڈھونڈنے کا بنیادی منطق درج ذیل ہے:
python
def explain_breakout_with_news(store, bid, leader, direction, leader_z, followers, edges):
if not BRAVE_KEY:
return None
if not LLM_API_KEY:
return None
profile = store["profiles"].get(leader, {})
news = fetch_stock_news(profile, bid)
if not news:
return None
event = analyze_breakout_news_with_llm(
store, bid, leader, direction, leader_z,
followers, edges, news
)
if not event:
return None
if not event.get("explains_price_move"):
return None
expected_direction = "bullish" if direction == "long" else "bearish"
if event.get("direction") != expected_direction:
return None
event["confidence"] = normalize_confidence(event.get("confidence", 0))
if event["confidence"] < MIN_NEWS_CONFIDENCE:
return None
if not event.get("trade_allowed"):
return None
return event
لیکن اگر بڑا ماڈل یہ کہے کہ کوئی خاص پیروکار متاثر ہو سکتا ہے، تب بھی فوری طور پر ٹریڈ نہیں کر سکتے۔
K لائن کے اعدادوشمار کے تعلق کو بھی دیکھنا ہوتا ہے۔
سسٹم ہر باسکٹ میں اسٹاکس کے درمیان تاریخی تعلق کا حساب لگاتا ہے، مثلاً سورس کے بریک آؤٹ کے بعد ٹارگیٹ کتنی بار فالو کرتا ہے، باہمی تعلق کیا ہے، بہترین لیگ دورانیہ کیا ہے، اور فالو کرنے پر اوسط منافع کیا ہے۔
صرف وہی سورس → ٹارگیٹ جو اعدادوشمار کے تعلق کی جانچ پاس کرے، ایکٹو ایج بنے گا۔
python
def rebuild_basket_stats(store):
edges = []
for bid, basket in store["baskets"].items():
symbols = [
m["symbol"] for m in basket["members"]
if m["symbol"] in store["markets"]
]
for source in symbols:
for target in symbols:
if source == target:
continue
metric = validate_pair(store, source, target)
if not metric:
continue
source_exp = basket_member_info(basket, source).get("exposure", 0)
target_exp = basket_member_info(basket, target).get("exposure", 0)
score = clamp(
metric["corr"] * 0.3 +
metric["follow"] * 0.4 +
min(source_exp, target_exp) * 0.3,
0, 1
)
edge = {
"basket": bid,
"source": source,
"target": target,
"corr": round(metric["corr"], 3),
"follow": round(metric["follow"], 3),
"lag": metric["lag"],
"avgReturn": round(metric["avgReturn"], 6),
"sample": metric["sample"],
"score": round(score, 3),
"active": (
score >= MIN_EDGE_SCORE and
metric["corr"] >= MIN_CORR and
metric["follow"] >= MIN_FOLLOW_SUCCESS
),
"updatedAt": int(time.time()),
}
edges.append(edge)
store["edges"] = edges
یہ قدم بہت اہم ہے۔
بڑا ماڈل منطق کو سمجھنے میں ماہر ہے، لیکن مارکیٹ ضروری نہیں کہ منطق کے مطابق چلے۔ اعدادوشمار کا تعلق اس بات کی تصدیق کے لیے ہے: کیا یہ منطق ماضی میں مارکیٹ میں ٹریڈ ہو چکی ہے؟
ٹریڈ ڈفیوژن پر کی جاتی ہے، نہ کہ اوپر پیچھے بھاگنے پر
یہ حکمت عملی لیڈر کا پیچھا کرنے کے لیے نہیں ہے۔
لیڈر پہلے ہی بریک آؤٹ کر چکا ہے، براہ راست اس میں داخل ہونا اوپر پیچھے بھاگنے جیسا ہو سکتا ہے۔ حکمت عملی اصل میں ایک ہی AI باسکٹ کے اندر ڈفیوژن کے مواقع تلاش کرتی ہے۔
یعنی: لیڈر پہلے حرکت کر چکا ہے، خبریں بھی منطق سے مطابقت رکھتی ہیں، لیکن کچھ پیروکاروں نے ابھی تک مکمل ردعمل نہیں دیا۔ اگر ان پیروکاروں اور لیڈر کے درمیان تاریخی طور پر تعلق موجود ہے، تو قلیل مدتی فالو کرنے کا موقع ہو سکتا ہے۔
بریک آؤٹ اسکین میں پہلے ایکٹو ایج تلاش کیا جاتا ہے، پھر پیچھے رہ جانے والے پیروکار:
python
def scan_price_breakouts(store):
for bid, rt in store["realtime"].items():
if rt["state"] != "BREAKOUT_DETECTED":
continue
leader = rt["leader"]
z = 0
for m in rt["members"]:
if m["symbol"] == leader:
z = m["z"]
direction = "long" if z > 0 else "short"
edges = [
e for e in store["edges"]
if e["active"] and e["basket"] == bid and e["source"] == leader
]
followers = []
for e in edges:
target_rt = find_realtime_member(rt, e["target"])
if target_rt and abs(target_rt["z"]) < BREAKOUT_THRESHOLD * 0.75:
followers.append(e["target"])
if not followers:
continue
صرف اس وقت جب خبروں کی وجہ بھی تصدیق ہو جائے، کنفرمڈ سگنل تیار ہو گا۔
ٹریڈ کا اصل ہدف پیروکار ہوتے ہیں۔
اگر اس وقت کوئی پوزیشن نہیں ہے، تو سگنل کی سمت میں نئی پوزیشن کھولی جاتی ہے۔ اگر اسی کنٹریکٹ پر پہلے سے اسی سمت میں پوزیشن ہے، تو اس میں اضافہ کیا جاتا ہے۔ اگر پہلے سے مخالف سمت میں پوزیشن ہے، تو پہلے اسے بند کیا جاتا ہے، پھر نئی سمت میں پوزیشن کھولی جاتی ہے۔
python
def execute_symbol_trade(store, signal, symbol, detail):
direction = signal["direction"]
if TRADE_MODE != "trade":
return open_or_add_position(store, signal, symbol, detail, add_mode=False)
pos = get_position_by_symbol(symbol)
if pos:
pos_dir = position_direction(pos)
if pos_dir == direction:
return open_or_add_position(store, signal, symbol, detail, add_mode=True)
close_existing_position(store, symbol, pos, "reverse_signal")
Sleep(1000)
return open_or_add_position(store, signal, symbol, detail, add_mode=False)
اس کی ایک وجہ یہ بھی ہے کہ بہت سے اسٹاک ایک ساتھ متعدد باسکٹس میں موجود ہوتے ہیں۔ ایک اسٹاک AI کلاؤڈ میں پیروکار ہو سکتا ہے، جبکہ AI ایپلیکیشن میں کسی اور منطق کا رکن ہو۔ مختلف باسکٹس کے سگنل بیک وقت اسے متاثر کر سکتے ہیں، اس لیے ایک ہی کنٹریکٹ کی سمت کو یکساں طور پر ہینڈل کرنا ضروری ہے۔
رسک مینجمنٹ پہلے آسان رکھیں، لیکن ہونا ضروری ہے
رسک مینجمنٹ کے حوالے سے، فی الحال ہارڈ سٹاپ لاس اور ٹریلنگ سٹاپ لاس استعمال ہوتے ہیں۔
نقصان حد تک پہنچنے پر باہر نکل جائیں؛ منافع ایک خاص حد تک پہنچنے کے بعد ٹریلنگ سٹاپ لاس چالو کریں، اور اگر زیادہ سے زیادہ غیر حقیقی منافع سے بہت زیادہ پیچھے ہٹ جائے، تو منافع کو لاک کر کے باہر آ جائیں۔
python
def monitor_positions(store):
for pos in exchange.GetPosition() or []:
symbol = position_symbol(pos)
if symbol not in store["markets"]:
continue
state = _G(position_state_key(symbol)) or {}
market = store["markets"][symbol]
ticker = exchange.GetTicker(market["contract"])
direction = position_direction(pos)
pnl_pct = (
(ticker["Last"] - pos["Price"]) /
pos["Price"] * 100 *
(1 if direction == "long" else -1)
)
if pnl_pct > state.get("peakPnlPct", 0):
state["peakPnlPct"] = pnl_pct
if not state.get("trailActive") and state.get("peakPnlPct", 0) >= TRAIL_ACTIVATE_PCT:
state["trailActive"] = True
hard_stop = False
if state.get("stop"):
hard_stop = (
ticker["Last"] <= state["stop"]
if direction == "long"
else ticker["Last"] >= state["stop"]
)
trail_hit = False
if state.get("trailActive"):
giveback = state.get("peakPnlPct", 0) - pnl_pct
allowed = max(
1.5,
state.get("peakPnlPct", 0) * TRAIL_GIVEBACK_PCT / 100.0
)
trail_hit = giveback >= allowed
if hard_stop or trail_hit:
close_existing_position(
store, symbol, pos,
"hard_stop" if hard_stop else "trailing_stop"
)
یہ رسک کنٹرول کا آخری ورژن نہیں ہے، لیکن پہلے ورژن کے طور پر لائیو مشاہدے کے لیے کافی ہے۔
بعد میں اکاؤنٹ لیول پر کل پوزیشن، سنگل سیکٹر ایکسپوژر، روزانہ نقصان کی حد، ٹریڈ کنفرمیشن اور پوزیشن بڑھانے کی تعداد کی پابندیاں بھی شامل کرنی ہوں گی۔
اب یہ سسٹم کس حد تک پہنچ چکا ہے
اب یہ سسٹم ایک مکمل تحقیقی سائیکل مکمل کر سکتا ہے۔
یہ خود بخود TradFi اسٹاک کنٹریکٹس کو اسکین کر سکتا ہے، خود بخود بڑے ماڈل سے اسٹاک کے لمبی پوزیشن والے باسکٹس کی تصویر کشی کروا سکتا ہے، خود بخود AI ذیلی سیکٹر بن سکتا ہے، خود بخود BraveSearch کے ذریعے سیکٹر اور انفرادی اسٹاک کی معلومات لے سکتا ہے، خود بخود سیکٹر انٹیلیجنس کا خلاصہ پیش کر سکتا ہے، ہر باسکٹ کی ریئل ٹائم طاقت خود بخود جانچ سکتا ہے، باسکٹ کے اندر اسٹاک کے تعلق کے اعدادوشمار خود بخود نکال سکتا ہے، اور لیڈر کی قیمت بریک آؤٹ ہونے پر نیوز ٹریسنگ کر سکتا ہے۔
اگر نیوز کی وضاحت درست ہو، سمت ایک جیسی ہو، اور شماریاتی تعلق بھی معاون ہو، تو سسٹم confirmed signal پیدا کرے گا۔ ڈیفالٹ موڈ میں صرف اطلاع دی جائے گی، لائیو ٹریڈ نہیں کرے گا؛ trade موڈ میں جانے پر ہی ٹریڈنگ ہوگی۔
لائیو پیج اب صرف لاگز نہیں ہے، بلکہ سسٹم کا جائزہ، باسکٹ کی ریئل ٹائم اسٹیٹس، سیکٹر انٹیلیجنس، حالیہ سگنلز، حالیہ ٹریڈز اور حالیہ اقدامات کو ٹیبل کی شکل میں دکھاتا ہے۔ اس سے واضح طور پر دیکھا جا سکتا ہے کہ سسٹم کس مرحلے پر پھنس گیا ہے: صرف قیمت کا غیر معمولی ہونا، یا نیوز کی وضاحت نہ ہونا، یا فالوور شرائط پوری نہ کرنا، یا رسک کنٹرول کا انٹرسیپشن۔
ابھی تک پختہ نہ ہونے والی جگہیں
سچ کہوں تو یہ سسٹم ابھی ایک پختہ خودکار ٹریڈنگ اسٹریٹیجی نہیں کہلا سکتا۔
یہ ایک AI تھیم رولیشن ریسرچ فریم ورک کی طرح ہے، جو پہلے ہی "اسٹاک پروفائلنگ، سیکٹر انٹیلیجنس، قیمت کے غیر معمولی ہونے، نیوز ٹریسنگ، شماریاتی تصدیق، اور ٹریڈنگ سگنل" کو ایک ساتھ جوڑ چکا ہے، لیکن اسے مزید تصدیق کی ضرورت ہے۔
سب سے زیادہ بہتری کی ضرورت والے پہلو یہ ہیں:
(1) اسٹاک پروفائلنگ کا معیار۔ بڑا ماڈل بعض اوقات کنارے والے اسٹاک کو باسکٹ میں شامل کر لیتا ہے، اس لیے asset_type کو لازمی طور پر نافذ کرنا ہوگا تاکہ ETFs، انڈیکسز اور علاقائی فنڈز شامل نہ ہوں۔
(2) نیوز کا معیار۔ BraveSearch سے ملنے والی خبریں ہمیشہ بنیادی خبریں نہیں ہوتیں، ماڈل کو فیصلہ کرنا ہوگا کہ کون سی خبریں واقعی قیمت کی وضاحت کر سکتی ہیں۔
(3) شماریاتی تعلق۔ تاریخی تعلق کا مطلب مستقبل میں بھی درست ہونا نہیں ہے، اسے مسلسل ریویو کرنے کی ضرورت ہے۔
(4) ٹریڈنگ رسک کنٹرول۔ خودکار ٹریڈنگ سے پہلے اکاؤنٹ لیول پوزیشن، سیکٹر ایکسپوژر، روزانہ نقصان اور ٹریڈ کنفرمیشن کو شامل کرنا ضروری ہے۔
اس لیے ابھی پہلے notify موڈ میں چلانا زیادہ مناسب ہے، اور confirmed signal کے معیار کو دیکھنا ہے۔
اگر کچھ عرصے بعد پتہ چلے کہ سگنلز واقعی مارکیٹ کی غیر معمولی حرکتوں کی وضاحت کر سکتے ہیں، اور فالوور بعد میں اکثر ردعمل ظاہر کرتے ہیں، تو تب چھوٹی پوزیشن کے ساتھ لائیو ٹریڈ پر غور کریں۔
آخر میں
یہ اسٹریٹیجی AI کو براہ راست آرڈر دینے کے لیے نہیں ہے۔
میں ہمیشہ یہ سمجھتا ہوں کہ ٹریڈنگ سسٹم میں بڑے ماڈل کے لیے سب سے موزوں جگہ "مجھے بتائیں کیا خریدوں" نہیں ہے، بلکہ ہمیں ان معلوماتی ڈھانچوں کو سنبھالنے میں مدد کرنا ہے جنہیں انسان دستی طور پر برقرار رکھنا مشکل سمجھتا ہے: کمپنی کا کاروبار، سیکٹر سے تعلق، ریئل ٹائم خبریں، واقعات کی وضاحت، سرمایہ کے بہاؤ کا راستہ، ممکنہ طور پر متاثر ہونے والی اشیاء۔
اصلی ٹریڈنگ اب بھی قیمت، اعدادوشمار اور رسک کنٹرول کے سپرد ہونی چاہیے۔
AI دور میں کوانٹیٹیٹو اسٹریٹیجی کو صرف ایک اور بڑے ماڈل انٹرفیس جوڑنا نہیں ہونا چاہیے، بلکہ ریئل ٹائم ڈیٹا، تھیم گراف، نیوز ایونٹس، قیمت کا ڈھانچہ، ٹریڈ ایگزیکیوشن اور ریویو کی وضاحت کو ایک ساتھ جوڑنا چاہیے۔
یہ AI اسٹاک گراف اسٹریٹیجی اسی سمت میں ایک کوشش ہے۔
اسٹریٹیجی کا سورس کوڈ: AI چین TradFi کنٹریکٹ گراف ٹریڈنگ سسٹم
- 1





