یکی از راههای بسیار متداول در معاملات اختیار معامله (بهویژه برای فروشندگان پرمیوم یا خریداران موقعیتهای ارزان)، پیدا کردن قراردادهایی است که قیمت اردر خرید سرخط آنها نسبت به قیمت تئوری محاسبه شده در فرمول بلکشولز تاریخی انحراف فاحشی داشته باشد، در حالی که قیمت اعمال قرارداد نیز حاشیه امنیت مناسبی نسبت به سهم پایه داشته باشد. این راهنما به شما آموزش میدهد چطور این اسکنر تعاملی را با سیستم پیشرفتهٔ تنظیمات ویژوال (⚙️) آپشنباز پیادهسازی و ران کنید.
چگونه در دیدهبان آپشنباز اجرا میشود؟
برای پیادهسازی این فرمول دوپاره (شامل ستون نمایش مقادیر و فیلتر غربالگری ردیفها)، گامهای زیر را بردارید:
دو شرط جدول را از دو جهت متفاوت میبرند و فقط اشتراکشان جالب است — هرکدام تنها، ردیفهای زیادی برمیگرداند که به درد نمیخورند.آستانه را بدون دیدن توزیع نمیشود انتخاب کرد — اول ستون را بسازید و چند روز نگاهش کنید، بعد فیلتر بگذارید.
یک ستون برای مشاهده اختلافها ایجاد کنید و کدهای بخش «1. ستون محاسباتی» را در آن قرار دهید؛
سپس یک فیلتر هوشمند بسازید و کدهای بخش «2. فیلتر دیدهبان» را در آن قرار دهید.
بخش اول: فرمول ستون محاسباتی
ابتدا برای اینکه بتوانید میزان انحراف را در جدول مشاهده کنید، ستونی به نام «اختلاف بلکشولز/سهم» بسازید و فرمول زیر را در ادیتور آن بنویسید. در این فرمول از تابع style برای رنگآمیزی و تولتیپ دار کردن اعداد استفاده شده است:
مقایسه با سرخط تقاضاست نه آخرین معامله — سؤال از «چند معامله شد» به «الان چقدر میدهند» عوض میشود، و دومی قابل اجراست.یک سلول دو درصد را کنار هم میگذارد و رنگها از هم جدایشان میکنند — دو درصدِ بیرنگ، بهسرعت با هم اشتباه گرفته میشوند.
// محاسبه درصد اختلاف قیمت بهترین خریدار از قیمت بلکشولز HV تاریخی
let disBlacksholsBid = calcRateChange(option.blackSholesHV, option.ti.buy1Price);
// محاسبه درصد تفاوت قیمت اعمال با آخرین قیمت سهم پایه
let disStrikeUa = calcRateChange(ua.ti.lastPrice, option.strike);
let result = '';
// نمایش نتایج فقط در صورت معتبر بودن اردر خرید و بلکشولز
if (option.ti.buy1Price > 0 && option.blackSholesHV > 1) {
result = '[ ' +
style(disBlacksholsBid, 'DarkCyan', ' ', 'اختلاف بلکشولز از تقاضا') +
' : ' +
style(disStrikeUa, 'DarkOrchid', ' ', 'اختلاف سهم از اعمال') +
' ]';
}
result;
بخش دوم: فرمول فیلتر هوشمند با تنظیمات ویژوال
حالا میخواهیم به جای هاردکد کردن شروط (مثلاً اختلاف 50 درصدی بلکشولز و 5 درصدی قیمت اعمال)، متغیرها را به صورت کاملاً ویژوال تعریف کنیم تا هر زمان خواستیم، بدون باز کردن ادیتور کد و از طریق آیکون ⚙️ سرستون، آنها را تغییر دهیم.
بدون دو شرط اعتبار، تقسیم بر عددی نزدیک صفر درصدی عظیم و بیمعنا میسازد که بالای مرتبسازی مینشیند و شبیه بهترین فرصت است.ثابتِ ویژوال در سرستون یک عددگیر میسازد — فیلتری که هر روز تنظیم میشود، هر روز هم استفاده میشود.
یک فیلتر جدید ایجاد کرده و این کد را در آن ذخیره کنید:
// --- تنظیمات ویژوال قابل تغییر در پنل ⚙️ ---
const FILTER_MIN_BS_DIFF = 50; // حداقل درصد اختلاف تقاضا از بلکشولز
const FILTER_MIN_STRIKE_DIFF = 5; // حداقل درصد اختلاف قیمت اعمال از سهم پایه
// 1. محاسبه اختلافها بر اساس متغیرهای سیستم
let disBlacksholsBid = calcRateChange(option.blackSholesHV, option.ti.buy1Price);
let disStrikeUa = calcRateChange(ua.ti.lastPrice, option.strike);
// 2. شروط منطقی فیلتر
let hasValidBid = option.ti.buy1Price > 0;
let hasValidBS = option.blackSholesHV > 1;
let matchesBsCondition = disBlacksholsBid > FILTER_MIN_BS_DIFF;
let matchesStrikeCondition = disStrikeUa > FILTER_MIN_STRIKE_DIFF;
// نتیجه خروجی فیلتر
hasValidBid && hasValidBS && matchesBsCondition && matchesStrikeCondition;
توضیح کارکرد فیلتر و مفاهیم ریاضی آن
قیمت تئوریِ این فیلتر از نوسان تاریخی ساخته میشود، پس اختلاف بزرگ یعنی بازار با گذشته همنظر نیست — نه اینکه قیمت غلط است.اختلاف با قیمت تئوری میتواند دلیل واقعی داشته باشد — خبر یا رویدادی که گذشته ندیده. این فهرست نقطهٔ شروع بررسی است، نه نتیجهٔ آن.
پارامتر option.blackSholesHV: قیمت تئوری قرارداد اختیار معامله است که توسط فرمول ریاضی بلکشولز و بر اساس نوسانپذیری تاریخی دارایی پایه (Historical Volatility) محاسبه میشود.
تابع calcRateChange(val1, val2): این تابع به صورت توکار درصد تغییر بین دو مقدار را برمیگرداند. در اینجا انحراف قیمت اردر خرید بازار از قیمت تئوری را میسنجیم.
پنل تعاملی (⚙️): با ذخیره فیلتر بالا، کافیست روی نمایه ⚙️ در سرستون فیلتر کلیک کنید. یک عددگیر تعاملی ظاهر میشود که میتوانید درصدها را به راحتی تغییر دهید تا دیدهبان در کسری از ثانیه خروجی را برای شما غربال کند.
اگر سوال یا ابهامی در رابطه با این مطلب دارید، همینجا بپرسید؛ کارشناسان ما پاسخ میدهند.
تجربه یا نکتهای دارید؟ نوشتنش به بقیهٔ کاربران هم کمک میکند.
پرسشها و نظرات کاربران
4 پیام
مینو
21 تیر 1405 - 17:33
اگر قراردادی خیلی زیر قیمت تئوری باشد، یعنی فرصت است؟
پشتیبانیپاسخ
26 تیر 1405 - 12:08
گاهی بله، ولی در بیشتر موارد بازار چیزی میداند که مدل نمیداند — و سه علت رایجتر از فرصت هستند.
نقدشوندگی. قراردادی که معامله نمیشود، «قیمت» ندارد؛ آخرین قیمتش میتواند مال چند روز پیش باشد. درصد اختلافی که روی آن حساب شده، اختلاف با یک عدد کهنه است: سنجش نقدشوندگیورودیهای مدل. قیمت تئوری به نوسانی که به مدل دادهاید حساس است. اگر آن ورودی با انتظار واقعی بازار نخواند، خروجی هم منحرف میشود — و «ارزانی» که میبینید مال مدل شماست نه بازار.
خبر. پیش از رویداد، بازار چیزی را قیمتگذاری میکند که در مدل نیست.
روش عملی: این فیلتر را برای کوتاه کردن فهرست به کار ببرید نه برای تصمیم. از چند ده کاندیدایی که میدهد، هر کدام را جدا بررسی کنید: حجم و موقعیت باز، فاصلهٔ خرید و فروش، و اینکه خبری در راه هست یا نه.
و سطح نوسان را نسبت به تاریخچهٔ خود نماد بسنجید، نه با عدد مطلق: رتبه نوسان ضمنی یا IV RANK
بهرام
02 خرداد 1405 - 18:56
فیلتر را گذاشتم ولی نتایج بالای جدول عددهای عجیب و غریب نشان میدهند. مشکل از فرمول است؟
پشتیبانیپاسخ
07 خرداد 1405 - 14:21
احتمالاً نه — و مقاله خودش علت اصلی را میگوید: تقسیم بر عددِ نزدیک صفر.
وقتی قیمت تئوری خیلی کوچک باشد، درصد اختلاف به عددی نجومی تبدیل میشود و دقیقاً بالای مرتبسازی مینشیند — یعنی شبیه «بهترین فرصت جدول» به نظر میرسد در حالی که فقط یک خطای تقسیم است.
به همین دلیل شرطهای اعتبارسنجی که در همین مقاله آمده اختیاری نیستند؛ بخشی از خود فیلترند. بدون آنها، هر بار مرتبسازی نزولی بزنید همان ردیفهای بیمعنا بالا میآیند.
دو تلهٔ دیگر که همین علامت را میسازند:
آستانهٔ صفر فیلتر را خاموش میکند. اگر فکر میکنید فیلتری گذاشتهاید ولی اثری ندارد، ممکن است اصلاً اجرا نشده باشد. عدد کوچکی مثل 0.1 بگذارید.
مقدار خالی با صفر یکی نیست. قراردادی که هنوز معامله نشده قیمتش خالی است، نه صفر — و باید جدا هندل شود.
و یک قید محتوایی: درصد اختلاف با قیمت تئوری فقط یک غربال است. قراردادی که «ارزان» به نظر میرسد اغلب همان است که کسی معاملهاش نمیکند: سنجش نقدشوندگی