On Becoming A Quant
رفتن به کانال در Telegram
اینجا از هر مطلبی که مربوط به دنیای مالی کمّی و موضوعات مرتبط باشه، می نویسم. مسعود قهرمانی p.masoud.ghahremani@gmail.com
نمایش بیشترإيران286 274دسته بندی مشخص نشده است
638
مشترکین
اطلاعاتی وجود ندارد24 ساعت
اطلاعاتی وجود ندارد7 روز
اطلاعاتی وجود ندارد30 روز
آرشیو پست ها
چند وقت پیش بود که یک کتابخونه خوب پایتون به اسم finpy_tse منتشر شد.
این کتابخونه دریافت داده ها از سایت Tsetmc رو راحت و بهینه می کنه.
در راستای کار خوب توسعه دهندگان این کتابخونه، تصمیم گرفتم یکی از کاربرد های زیادی که این کتابخونه می تونه داشته باشه رو تو یه پروژه کوچیک جنگو به اسم
"پیگیری ورود خروج پول حقیقی در بورس تهران."
پیاده سازی کنم و کدش رو به صورت متن باز در گیت هاب قرار بدم.
دمو و نحوه کارکرد این پروژه رو می تونید تو ویدیو بالایی ببینید. چیز چندان پیچیده ای وجود نداره و صرفا هدفم نشون دادن توانایی های همچین کتابخونه هایی در حیطه عمل بود.
لینک پروژه 👇👇
https://github.com/masoudghah/history_of_retail_trades_in_tse
@quant_fin
پیگیری ورود/خروج پول حقیقی در بورس تهران و تاثیر آن بر قیمت سهام🧐
@quant_fin
👇👇👇
🅾 ارزیابی عملکرد الگوریتم های اجرای سفارشات
✅ معمولا برای اندازه گیری میزان خوب یا بد بودن عملکرد یک الگوریتم، از معیارهای کمی مانند
implementation shortfall (IS),
volume weighted average price (VWAP),
time weighted average price (TWAP),
relative performance measure (RPM),
و ... استفاده می شه.
✅ برای معیار "وی وپ"، انواع مختلفی رو میشه در نظر گرفت که مهمترین آنها "وی وپ روز معاملاتی" و "وی وپ بازه فعالیت الگوریتم (بازه ای)" است. معیار "وی وپ بازه ای" رو میشه یه معیار خوب تلقی کرد. هرچند که تو بعضی حالت های خاص ممکنه معیار خوبی نباشه. مثلا وقتی که نسبت حجم سفارش الگوریتم به حجم بازار نزدیک به یک باشه؛ نتایج الگوریتم به صورت خودکار به "وی وپ بازه ای" نزدیک خواهد بود. مثال دیگه مربوط به زمانیه که معاملات بزرگی که با قیمتهای شدید (بالا یا پایین) در بازه الگوریتم اتفاق بیفته، قیمت "وی وپ بازه ای" رو تحت تاثیر شدید قرار می ده و استنباط و مقایسه رو دشوار می کنه.
✅ جدای از این موضوعات، چند عکس داخل فایل بالا شامل ارزیابی خلاصه ای از عملکرد یکی از الگوریتم های (سمت خرید) اجرای سفارش در بورس اوراق بهادار تهران است.
هدف از ارائه چنین مصورسازی هایی داشتن شهود از نحوه عملکرد الگوریتم برای ارزیابی و بهبود استراتژی و منطق الگوریتم هاست.
یازده اسفند هزاروچهارصد.
مسعود قهرمانی
#algorithmicTrading
#OptimalOrderExecution
#TCA
@Quant_Fin
⭕️ یکی از رایجترین کارهایی که باعث پیدا کردن شهود بهتر نسبت به مجموعه دادههایی که دارای کمیت گسسته هستند میشه؛ شمردن تعداد مقادیر گسسته موجود تو دادههاست!
(مثلا وقتی هدفمون پیشبینی یه مقدار گسسته است خیلی مهمه که بدونیم دادهها نامتوازن (imbalanced data) هستند یا نه؟!)
⭕️ تو پایتون با استفاده از یکی از متدهای کتابخانه پانداز (value_counts) میشه این کار رو به راحتی انجام داد.
من در یک مثال ساده از این متد استفاده کردم که هم تعداد رو میشماره و هم به نوعی میتونه تعدد یک مقدار رو به درصد بیان کنه.
اجرای تعاملی کد 👇👇
https://www.online-python.com/T3LGx2FMD0
#python_tricks
@quant_fin
👆👆👆
مسابقات هوش مصنوعی امیرکبیر
چالش پیشبینی بازار سهام:
<مسابقه پیشبینی شاخص کل>
و
<مسابقه مدیریت سبد سهام>
📗عنوان کتاب:
Machine Learning in
Business (An Introduction to the World of Data Science)
📝 نویسنده:
جان هال
@Quant_Fin
دومین نشست علمی پژوهشی:
روش های پیشرفته تحلیل داده های مالی با تاکید بر یادگیری ماشین.
@Quant_Fin
✅ در پست قبلی راجع به بحث اجرای بهینه سفارشات الگوریتمی مطلب مختصری نوشتم. بحث سر ایجاد توازن بین هزینه و ریسک عدم اجرا، برای انتخاب قیمت مناسب هر سفارش است.
✅ قیمت بهینه یک سفارش باید هم هزینه اش کم باشه (برای یک خریدار ارزون خریدن مطلوبیته و برای یک فروشنده تا جای امکان گرون فروختن!) و هم ریسک عدم اجراش، پائین باشه (الگوریتمی که طبق یک برنامه پیش میره دوست نداره که از برنامه اش عقب بیوفته و از سر اجبار سفارشات اجرا نشده رو با بدترین قیمت (مارکت اردر) اجرا کنه!).
در واقع باید این دو فاکتور ابتدا کمّی شده و سپس مانند یک مسئله بهینه سازی با این موضوع کار کنیم.
✅ در اینجا سه سفارش جالب و واقعی از یک مدلی که وظیفه اش انتخاب قیمت بهینه برای سفارشات خُرد شده هستش رو مشاهده می کنید. این سه نوع ارسال سفارش از این جهت جالب هستند که اولا با قیمت های معمول مثه
"سرخط مقابل"،
"سرخط سمت خودش" و
"رقابت با سرخط سمت خودش"
نیستند (صد البته که خود همین مدل هم اکثرا سفارش رقابتی رو توصیه می کنه) و از طرفی هم با اجرا شدن (بعد از گذشتن مدت زمان معقول) همراه بودند.
✅ از مهمترین فاکتور هایی که قبل از استفاده از این مدل باید توسط معامله گر انتخاب بشه، سطح ریسک گریزی معامله گر هستش (انتخاب یک عدد در یک بازه محدود که همچنین میتونه به صورت پیشفرض خنثی باشه) . این پارامتر مشخص میکنه که الگوریتم برای اجرای سفارشات چقدر تهاجمی یا منفعل باشه.
هر چند که این مدل دارای فاکتور های مهم دیگه ای هم هست که قبل از استفاده ازش تو سطح کلان، باید تنظیم بشه اما در کل خلق یک ماشین که می تونه تبدیل به یک معامله گر باتجربه و هوشمند و سریع بشه ارزشمند و خوبه :)
مسعود قهرمانی
دهم شهریور هزاروچهارصد
@Quant_Fin
🟣 ربات معاملهگر در مخمصه
✅ یکی از تکنیکهایی که در اکثر الگوریتمهای اجرای سفارشات مورد استفاده قرار میگیره، تکنیک خُرد کردن سفارشات به منظور کاهش اثر بازار است.
چند مولفه اصلی هر سفارش ارسالی عبارتند از زمان، حجم، قیمت و نوع (fill&kill , GTC , ...) سفارش.
الگوریتمهای برنامهمحور (schedule driven) مثه twap و vwap یا pov به طور صریح و از پیش برنامهریزی شده، دو مولفه اول یعنی زمان و حجم رو بنا با معیار خاص خودشون مشخص میکنند. (حالا تا حدودی الگوریتم pov نه چندان صریح بلکه منعطفتر این کارو انجام میده.)
✅ اما مولفه مهمی که شاید اصلی ترین اثر رو در هزینه معاملات (transaction cost) میذاره مولفه "قیمت" هر سفارش است.
اردر بوک هر سهم در طول روز و حتی در واحدهای زمانی بسیار کوتاه تغییرات زیادی داره؛ برای انتخاب قیمت هر سفارش چه رویکردی رو میشه اتخاذ کرد؟
اگر در یک لحظه مشخص، ربات قصد خرید سهمی با حجمی مشخص رو داشته باشه و مثلا بهترین مظنه فروش ۱۰۵ و بهترین مظنه خرید ۱۰۰ تومان باشه؛ این الگوریتم با دیدن این اردر بوک باید قیمت سفارش رو چی در نظر بگیره؟
اینجاست که ربات معاملهگر تو یک دوراهی یا مخمصه (dilemma) گیر می کنه!
✅ اگر قیمت رو به قیمت بهترین مظنه فروش وارد کنه، خیالش راحته و تضمین میشه که سفارش سریع انجام میشه و میتونه بقیه برنامه رو پیش ببره.
اما این تضمین اجرا، برای هر سفارش به ما ممکنه هزینه زیادی رو متحمل کنه. (مثلا تو این مثال شکاف قیمتی ۵ تومان بود.)
از طرفی هم ربات معاملهگر میتونه با بهترین مظنه خرید رقابت کنه و قیمت ۱۰۱ تومان رو وارد کنه؛ اما آیا تضمین اجرا شدن وجود داره؟ اگر بازار سمت دیگه حرکت کنه و این سفارش هیچوقت اجرا نشه چی؟! پس اون زمانبندی الگوریتم چی میشه؟
✅ این بحث تو حوزه آکادمیک با کلید واژه optimal execution دنبال میشه که شاید مقاله
Robert Almgren و Neil Chriss
در سال ۲۰۰۰ میلادی شروع جدی این داستان بوده باشه.
برای حل این مسئله از ابزارهای مختلفی میشه استفاده کرد و کلا ادبیات خاصی براش وجود داره. جدا از بحثهای دانشگاهی، میشه مولفههایی رو در نظر گرفت که تو لحظه بتونیم تصمیم گیری برای رباتی که سر دوراهی (هزینه و تضمین اجرا) قرار گرفته رو تسهیل کنیم و الگوریتمی رو طراحی کنیم که به طور پویاتری سفارشات رو ارسال و اصلاح و مدیریت کنه. قطعا هرچی الگوریتم از حالت استاتیک به سمت داینامیک شدن پیش بره چالش ها از هر لحاظ بیشتر میشه؛ از هندل کردن دادههای آنی (real time) گرفته تا انتخاب درست مولفههایی که برای کمک به تصمیمگیریهای لحظهای الگوریتم در نظر گرفته میشه. ممکنه سرو کله زدن با این موضوعات از لحاظ زمانی طول بکشه اما قطعا سرانجام ارزشی خلق میشه که به چالشهاش میارزه!
📝 مسعود قهرمانی
بیستوهشت تیر هزاروچهارصد
@quant_fin
✅ ساخت دشبوردهای تحلیلی و بصریسازی شاید یکی از بخشهای مهم کار هر دانشمند دادهای باشه. پایتون یک کتابخانه جالب (streamlit) برای این کار داره تا دیتاساینتیستها بتونن مدلهاشون رو با ظاهر خوشگلتر از صفر و یکی به کاربرانشون نمایش بدن!
✅ در اینجا من یک دستورزی کوچیک با این کتابخونه انجام دادم. پروژهای که آمار ریز معاملات سهام بورس اوراق بهادار تهران رو برای هر سهم دلخواه نمایش میده. باهم میریم تا یک اتفاق جالب که چند روز پیش تو سهم فملی افتاد رو نگاه کنیم.(13 درصد حجم کل معاملات یک روز، تو یک دقیقه انجام شد! میشه حدس زد که تو اون یک دقیقه قیمت چه وضعیتی داشته :) )
✅ تمام این پروژه با پایتون نوشته شده و از هیچ دسترسی ویژهای (وب سرویس و ...) استفاده نکردم و صرفا اطلاعات از خود سایت tsetmc، به صورت آنلاین استخراج میشه.(کمی کند بودنشم به همین علته)
مسعود قهرمانی
بیستوهشتم خرداد هزاروچهارصد
@quant_fin
🖥 دشبورد تحلیلی مشاهده آمار ریزمعاملات سهام بورس اوراق بهادار تهران در تاریخهای دلخواه
(فیلم بی صدا میباشد)
توضیحات👇👇👇
@quant_fin
✅ یکی از حوزههای مورد علاقه من که معتقدم وقت گذاشتن براش کاربردهای عملی زیادی میتونه داشته باشه، بحث مدلسازی در دفتر ثبت سفارشات محدود (limit order book) است.
حین انجام پژوهش برای پایاننامهام و سروکله زدن با دیتاهای بورس ایران، متوجه الگوی جالبی در دادههای دفتر ثبت سفارشات محدود بعضی از سهام بورس تهران شدم.
یکی از چیزهایی که در دفتر سفارشات محدود میتونه اهمیت داشته باشه اینه که مدلی بسازیم که بتونه به ما بگه تو لحظه بعدی بهترین مظنه خرید و بهترین مظنه فروش چه قیمتهایی دارند؟ (چون تو این دو قیمت بلافاصله میشه سهم رو (به ترتیب) فروخت یا خرید.)
فهمیدن همچین چیزی برای بحثهای اجرای سفارشات و بازارگردانی الگوریتمی میتونه کاربردی باشه.
✅ نمودار میلهای که عکسش رو قرار دادم، تغییرات بهترین مظنه فروش سهم فخوز رو در بازه زمانی یک سال و سه ماهه (فروردین 96 تا خرداد 97) نشون میده. بدیهیه که بیشترین تعداد تغییر قیمت برای مقدار 1 و 1- باشه. یعنی مثلا اگر تو این لحظه قیمت بهترین مظنه فروش 5580 هستش در بیشتر مواقع، تو لحظه بعدی یک واحد تغییر قیمت داریم ( 5581 یا 5579 ).
(چون میله مربوط به 1 و 1- خیلی بزرگ بود از بخش پايینی نمودار عکس قرار دادم که سایر میلهها واضح باشند.)
✅ چیز جالبی که تو این نمودار میشه دید اینه که به طور چشمگیری مضارب ده تعدادشون از همسایههای قبلی و بعدیشون بیشتره. مثلا تعداد دفعاتی که قیمت بهترین مظنه فروش 10 واحد مثبت تغییر کرده از تعداد دفعاتی که 3 واحد تغییر کرده بیشتره!
یا مثلا تعداد دفعاتی که 20 واحد تغییر کرده از 11 تا 19 واحد بیشتره!
فهمیدن اینکه چرا همچین الگویی رو من برای بعضی از سهام مشاهده کردم کار سختی نیست.
قیمتها بار روانی دارند. معاملهگری که قصد فرستادن سفارش داره، رُند بودن اعداد به طور ناخودآگاه براش مهمه.
نمیدونم همچین چیزی اهمیت داشته باشه یا نه ولی چیزی که بیشتر برای من جذاب بود، این بود که یه نمودار میلهای ساده چقدر میتونه روشنگری کنه برای داده هایی که آدم داره باهاشون کار میکنه.
📝 مسعود قهرمانی
بیست و دوم خرداد هزاروچهارصد
@quant_fin
الگوی جالب در نمودار تغییرات بهترین مظنه فروش (best ask price) سهم فخوز در دورهی یک سال و سه ماهه.
توضیحات 👇👇👇
@quant_fin
💻 طراحی الگوریتمهای معاملاتی!
✅ واسه انجامش تو سادهترین حالت، باید دارای درک خوبی از #ریاضیات، #مالی و #برنامه_نویسی باشی.
نداشتن هر کدوم از این سه وجه، شوخی بردار نیست!
به بیان طنزی از استادی شنیدم که میگفت برای فعالیت در این حوزه باید مثه دانشمندهای کلاسیک که نجوم، پزشکی، ریاضیات و ... رو توامان بلد بودند؛ باشی :)
✅ با یک مثال کلی توضیح بدم،
از تجربه و درکی که از مالی داری، میفهمی که خودکارسازی یک فرآیند میتونه خوب باشه.(یا اینکه از تعامل با افراد مالیدان به این نتیجه میرسی.)
به این معنی که شاید انجام اون فرآیند توسط رایانهها نسبت به انسان بتونه بهتر نتیجه بده.
پس اون ایده تجربی رو قراره به یک رایانه بفهمونی، رایانه هم جز منطق نمیفهمه؛ هر گزاره سادهای که بهش فکر میکنی رو باید خیلی ساختارمند کنی تا قابل ترجمه برای ماشین باشه.
✅ ریاضیات (شامل آمار و احتمال و ...) میتونه این ساختارمندی و مبانی نظری رو ایجاد کنه.
هدف چیه؟ مفروضات چی هستند؟ ورودی ها؟ خروجی ها؟ حالت های خاصی که ممکنه پیش بیاد چی؟ و ...
هر مفهوم کیفی که در ایده اولیه وجود داره در این مرحله باید تبدیل به کمیت بشه.
مثلا گفته شده "سفارشات رو خُرد کن و هر ۵ دقیقه ارسال کن! اما حواست باشه یکمی تصادفی بودن هم قاطیش کنی که قابل ردیابی نباشه!"
اینجا باید واژه تصادفی معنی بشه.(تصادفی با چه توزیعی و ...)
یا مثلا گفته میشه "وقتی سفارش رو خرد کردی، سعی کن حجم و قیمت هر سفارش رو متناسب با شرایط بازار، بهینه انتخاب کنی!"
عبارات کیفی "شرایط بازار" و "حجم و قیمت بهینه" رو چطور باید کمّی کرد؟! اینجاست که طراح الگوریتم وارد هزارتوی اما و اگرها میشه.
نوع پاسخ هایی که طراح به این پرسشها میده وابسته به درکیه که از مالی، ریاضیات و مبانی نظری معاملات الگوریتمی داره.
این پاسخ ها تاثیر زیادی تو کارایی و نتیجه الگوریتم دارند.
✅ تو آخرین و مهمترین مرحله لازمه که با استفاده از دانش برنامه نویسی، کل ماجرا رو پیاده سازی کنیم و از انتزاع به عمل برسیم.
زبانهای برنامه نویسی شوخی ندارند؛ یک وظیفه رو خوب و با تمام جوانب بهشون تفهیم نکنی خوب انجامش نمیدن.
تو این مرحله قرار نیست چرخ رو از اول ابداع کنی، طراحی که ابزار هارو بهتر بشناسه، میتونه خیلی بهینهتر بحث پیادهسازی رو انجام بده.
بعد از اینکه یک پیادهسازی اولیه صورت میگیره، قطعا نتیجه ایدهآل همون موقع بدست نمیاد و لازمه به تعداد دفعات زیادی، نتیجه بررسی و بهتر بشه.
اگر میبینه چیزی غلطه باید برای تفسیرش از هر سه وجه (مالی، ریاضی، برنامه نویسی) کمک بگیری.
مسئله مالی رو بد فهمیدم؟
تئوریش رو بد چیدم؟
کدش رو بد نوشتم؟ و ...
(بحث ایجاد زیرساخت نرام افزاری برای ارسال سفارشات و دریافت دادههای هسته معاملات رو تو این متن ازش صرف نظر کردم ولی خوب اون هم موضوع مهمیه.)
✅ سرو کله زدن تو هر یک از این سه حوزه به قدر کافی سخت و حوصله سَر بَر هست؛ همچنین به دست آوردن دانش حداقلی تو این حوزه ها هم زحمت و وقت زیادی رو میخواد.(کمبود نیروی کار با کیفیت تو این حوزه هم شاید به همین دلیله!)
ولی هیچکدوم از این موارد باعث نمیشه که این حوزه جذاب نباشه و هیچکس نتونه توش موفق بشه.
قطعا افرادی که با #ریاضیات میانه خوبی دارند اما روی برج عاج نموندن! بلکه اومدن پائین و تو دنیای #مالی قدم زدند و همچنین بلدند که چطور با #کد_زدن یک ایده رو تبدیل به یک ارزش کنند، شانس خوبی برای درخشیدن دارند.
الان در زمان و مکانی قرار داریم که این افراد، یعنی طراحهای الگوریتمهای معاملاتی تونستن یک گذار جدید در بازار مالی ایران ایجاد کنند و کم کم در هر نهاد مالی، نیاز به همچنین متخصص هایی احساس میشه.
📝 نویسنده : مسعود قهرمانی
بیستم اردیبهشت هزارو چهارصد
@quant_fin
✅ کانال دکتر عرفان صلواتی؛ هیئت علمی دانشگاه امیرکبیر شامل آموزش های خوبی در زمینه پایتون، یادگیری ماشین، ریاضیات مالی و ... است.
اگر به دنبال منبع آموزشی رایگان خوب و با زبان فارسی هستید میتوانید پیگیری کنید.
@quant_fin
👇👇👇👇
https://youtube.com/channel/UCqj-DxbpCp9N5XyfUxRbXKg
