BIAP دادههای بنیادی، دادههای بازار و تحلیل عاملهای هوش مصنوعی را برای سهام ایرانی پذیرفتهشده در بورس تهران (TSE) با هم ترکیب میکند. این پروژه به دو بخش همکار تقسیم شده که هرکدام توسط یک طرف ساخته و نگهداری میشود — همان الگوی «دو مخزن» که خباط در دیگر سیستمهای مبتنی بر هوش مصنوعی خود استفاده میکند.
همکاری
خباط ستایی
لایهی تصمیمگیری را میسازد: تیمی از عاملهای هوش مصنوعی که یک سهم را از چند زاویه بررسی میکنند و ارزیابیها را در یک توصیهی واحد همراه با توضیح ترکیب میکنند.
- عامل بنیادی، عامل ریسک، عامل پیشبینی و عامل مقایسه
- استفادهی دوباره از یک مدل وزندهی «اعتماد/بلوغ» گرفتهشده از یکی دیگر از سیستمهای عاملمحور خباط، تطبیقدادهشده برای تصمیم خرید/نگهداری/فروش بهجای تخصیص سرمایه
- سرویس FastAPI که بهازای هر نماد سهم توصیه ارائه میدهد
دکتر نسرین داداشی
رابط کاربری و ورودی داده را میسازد و نگه میدارد: اپلیکیشنی که کاربران واقعاً از آن استفاده میکنند، و سروری که آن را با دادههای لحظهای بورس تغذیه میکند.
- اپلیکیشن موبایل (Expo/React Native): ورود، واچلیست، جزئیات سهم، خروجی CSV
- سرور بکاند که قیمتهای زنده بورس تهران را دریافت و ارائه میکند
- زیرساخت و نگهداری مستقل، جدا از لایهی تحلیل
تحلیل چگونه کار میکند
هدف این است که یک توصیه از یک مدل واحد نیاید، بلکه از چند عامل بیاید که تا پایان ارزیابی با هم اختلافنظر دارند — و کل مسیر از داده تا توصیه قابل ردیابی باشد.
تیم عاملها
ارزیابیها با مدلی ترکیب میشوند که در آن هر عامل یک امتیاز «اعتماد» دارد که با گذر زمان و بر اساس دقت گذشتهاش تغییر میکند — و یک وضعیت «بلوغ» (از آزمایشی تا آمادهی تولید) که میزان تأثیرگذاری آن عامل بر نتیجهی نهایی را تعیین میکند. هر عامل با احتیاط شروع میکند و هرچه بیشتر خودش را ثابت کند، تأثیر بیشتری میگیرد.
"symbol": "فولاد",
"action": "BUY",
"confidence": 0.87,
"reason": [
"Revenue growth",
"Improved operating margin",
"Positive cash-flow trend",
"Price momentum confirmation"
]
}
نمونهی سادهشدهی فرمتی که یک توصیه امروز در آن ارائه میشود — بدون فیلدهای سفارش. بخش «مسیر پیش رو» زیر، معماری است، نه چیزی که به کارگزار ارسال میشود.
از توصیه تا اجرا
یک لایهی مستقل ریسک و اجرا میان تحلیل و یک سفارش واقعی قرار دارد، تا خطایی در تحلیل هرگز مستقیماً به یک معامله منجر نشود. دو تا از سه حالت عملکردی اکنون بهصورت کد در analysis/execution.py ساخته شدهاند، با endpoint های اختصاصی (POST /orders/preview، POST /orders/submit):
Paper
یک سفارش را شبیهسازی میکند و رسید PAPER_FILLED برمیگرداند. در این حالت هیچوقت هیچ تماسی با کارگزار ارسال نمیشود.
Approval
سفارشی با وضعیت PENDING_APPROVAL ایجاد میکند — منتظر یک انسان. همچنان هیچ تماسی با کارگزار ارسال نمیشود.
Auto
در خود کد صراحتاً مسدود شده (API هر تلاشی برای این حالت را رد میکند) تا زمانی که لایهی ریسک، اتصال واقعی به کارگزار و تأیید نهایی آماده شود.
یک اصل کلی در طراحی: عامل تحلیل هرگز نباید دسترسی مستقیم به API کارگزار داشته باشد. میان یک توصیه و یک سفارش، همیشه باید یک بررسی ریسک مستقل و یک لایهی اجرای مستقل قرار داشته باشد.
وضعیت فعلی
- اپلیکیشن موبایل فعال: biap.dadashi.no قیمتهای لحظهای بورس تهران (TSETMC) را دریافت و نمایش میدهد، همراه با ورود، واچلیست، جزئیات سهم و خروجی CSV.
- عاملهای تحلیل ساخته شدند: لایهی تصمیم با چهار عامل و وزندهی اعتماد/بلوغ ساخته و بهصورت داخلی آزمایش شده، و بهعنوان افزودهای به قرارداد دادهی موجود میان اپلیکیشن و بکاند پیشنهاد شده است.
- لایهی اجرا ساخته شد.
POST /orders/previewوPOST /orders/submitپیادهسازی شدهاند — paper شبیهسازی میکند، approval یک سفارش در انتظار ایجاد میکند، AUTO صرفنظر از تنظیمات ریسک صراحتاً مسدود است. - لاگ حسابرسی دائمی و risk policy ساخته شدند. تلاشهای سفارش اکنون در SQLite ذخیره میشوند (نه فقط در حافظه)، با رویدادهای حسابرسی هم برای تلاشهای پذیرفتهشده و هم ردشده. یک لایهی ریسک مستقل (
analysis/risk.py) اکنون kill switch، حداکثر تعداد سهم، حداکثر ارزش سفارش، سقف notional روزانه، انحراف قیمت سقف از قیمت مرجع و حداقل قدرت سیگنال خرید/فروش را اعمال میکند — مستقل از خود سد AUTO. endpoint های جدید:GET /risk/status،GET /orders/{intent_id}،GET /audit/orders،GET /audit/events. - اتصال به بکاند موجود TSETMC انجام شد. لایهی FIN اکنون قیمتهای واقعی را مستقیماً از
biap.dadashi.no/api/stock/watchlistمیگیرد — همان منبعی که اپلیکیشن موبایل استفاده میکند — بهجای ساخت یک ingestion تازه برای TSETMC. بهصورت زنده روی یک سهم واقعی (فولاد) تأیید شد. - توصیه روی دادهی واقعی اجرا میشود، اما منتظر CODAL است.
/stock/recommendation/{code}اکنون کدهای واقعی TSETMC را میشناسد و قیمت زنده را در پاسخ نشان میدهد. چون دادههای بنیادی (CODAL) و دادهی گستردهی بازار (بازهی ۵۲ هفته، P/E، حجم) هنوز موجود نیستند، عاملها صادقانه با HOLD خنثی و اطمینان صفر پاسخ میدهند بهجای حدس زدن — بهصورت سرتاسری تست شد، از جمله اینکه لایهی ریسک بهدرستی یک تلاش خرید روی چنین توصیهای را رد میکند. - آداپتور CODAL: هنوز هیچ مسیر ingestion تأییدشدهای وجود ندارد — بهعنوان یک datasource فقط-خواندنی مستقل ساخته میشود، وقتی بدانیم بکاند موجود چگونه خودش دادهی TSETMC را میگیرد.
- اتصال به کارگزار: هیچ API کارگزار ایرانی هنوز تأیید نشده است. چند گزینه با معاملات الگوریتمی شناسایی شدهاند (از جمله یکی با مسیر مستندشدهی API)، اما هیچ توافق یا اتصالی برقرار نیست.
- رابط موبایل پیشنهاد شد: یک pull request روی اپلیکیشن موبایل باز شد که توصیه و دکمهی «شبیهسازی در حالت Paper» را در صفحهی جزئیات سهم نشان میدهد. به هیچ قابلیت موجودی دست نمیزند — منتظر بازبینی نسرین است.
- امروز هیچ معاملهی خودکاری انجام نمیشود. BIAP تا اطلاع بعدی یک ابزار توصیهگر است — نه سیستمی که خودش سفارش ارسال کند.
XS227/BIAP پوش شده — خود استقرار روی سرور را نسرین انجام میدهد. سپس: آداپتور CODAL ← دادهی گستردهی بازار ← احراز هویت/مالکیت/idempotency ← آداپتور PaperBroker. تا زمانی که همهی اینها آماده نشوند، نه اتصال واقعی به کارگزار و نه AUTO فعال نمیشود.