فرمول‌نویسی بلک‌شولز، یونانی‌ها و نوسان در دیده‌بان آپشن

آموزش calcBS در فرمول‌نویسی دیده‌بان: قیمت تئوری، IV، دلتا، وگا، تتا — با مثال ستون، فیلتر، optionSE و سناریوسازی نوسان.

نویسنده: آپشن بازتاریخ انتشار: 1405/02/01آخرین به‌روزرسانی: 1405/05/2518 دقیقه مطالعه
اشتراک‌گذاری:

فرمول‌نویسی بلک‌شولز، یونانی‌ها و نوسان

در دیده‌بان آپشن می‌توانید برای هر قرارداد ستون یا فیلتر بسازید که قیمت تئوری، IV و یونانی‌ها را محاسبه کند — بدون خروج از جدول. همه این محاسبات از تابع calcBS() می‌آید.

تابع calcBS چه برمی‌گرداند؟

تابع calcBS() بر اساس مدل بلک‌شولز برای قرارداد جاری (یا قرارداد مشخص) محاسبه می‌کند. سه حالت دارد:

یک فراخوانی، هفت عدد calcBS() bs iv delta gamma vega theta rho قیمت تئوری IV محاسباتی یونانی‌ها همه‌شان از یک محاسبه می‌آیند، پس با هم سازگارند اگر ورودی عوض شود، هر هفت عدد با هم عوض می‌شوند
یک فراخوانی هفت عدد برمی‌گرداند — قیمت تئوری، IV محاسباتی و پنج یونانی — و چون همه از یک محاسبه‌اند، همیشه با هم سازگارند.
سه شکل صدا زدن، سه کار متفاوت calcBS() قرارداد همین سطر داده از بازار رایج‌ترین حالت calcBS('…') با نام نماد — یک قرارداد دیگر باز هم داده از بازار برای مقایسه calcBS({ … }) مقادیر دلخواه شما داده‌ای عوض نمی‌شود یک سناریو شکل سوم راهی دیگر برای انتخاب قرارداد نیست همان محاسبه است روی عددهایی که شما می‌دهید — یک ماشین «اگر چه می‌شد» نام قدیمی این تابع CalcBG بود فرمول‌های ذخیره‌شده هنگام باز شدن خودکار تبدیل می‌شوند
سه شکل: سطر جاری، یک نماد مشخص، و یک سناریو. شکل سوم راهی دیگر برای انتخاب قرارداد نیست — همان محاسبه است روی عددهای شما.
  • calcBS() — قرارداد همان سطر جدول
  • calcBS('نماد') — قرارداد با نام مشخص
  • calcBS({ ... }) — با مقادیر دلخواه (سناریو)
فیلدمعنیکاربرد در جدول
bsقیمت تئوری (بلک‌شولز)مقایسه با قیمت بازار
ivIV ضمنی محاسباتیارزان/گران بودن پرمیوم
deltaدلتاحساسیت به قیمت پایه — آموزش دلتا
gammaگاماتغییر دلتا — آموزش گاما
vegaوگاحساسیت به IV
thetaتتاافت زمانی روزانه
rhoروحساسیت به نرخ بدون ریسک
نام قدیمی این تابع CalcBG بود. فرمول‌های ذخیره‌شده هنگام باز کردن به calcBS تبدیل می‌شوند — نیازی به ویرایش دستی نیست.

شروع در دیده‌بان

برای ساخت فرمول، به دیده‌بان آپشن بروید (راهنمای دیده‌بان)، یا از طریق میزکار باکس دیده‌بان اضافه کنید؛ سپس فرمول نویسی را بزنید. جزئیات فیلدها و توابع در راهنمای فرمول‌نویسی آمده است.

مثال‌های ستون

خروجی ستون، همان رشته‌ای است که برمی‌گردانید سلول Δ 0.62 | IV 38.4% گرد کردن یادتان نرود خروجی خام، اعشار بلند دارد و ستون را ناخوانا می‌کند IV کسری است، نه درصد 0.384 → × 100 وگرنه عدد بی‌معنا نشان می‌دهد برای ردیفی که محاسبه نمی‌شود، رشتهٔ خالی برگردانید نه صفر — صفر یک عدد است و در مرتب‌سازی جای واقعی می‌گیرد رنگ و تولتیپ هم از همان خروجی تعیین می‌شوند
ستون هرچه برگردانید همان را نشان می‌دهد — پس گرد کنید، IV را در صد ضرب کنید (کسری است)، و برای ردیف بی‌جواب رشتهٔ خالی بدهید نه صفر.

دلتا و IV

let bg = calcBS(); return 'Δ ' + roundNumber(bg.delta, 2) + ' | IV ' + roundNumber(bg.iv * 100, 1) + '%';

وگا و تتا

let bg = calcBS(); return style('Vega ' + roundNumber(bg.vega, 2), '#14b8a6', '', 'وگا') + ' | ' + style('Theta ' + roundNumber(bg.theta, 2), '#db2777', '', 'تتا');

اختلاف قیمت بازار و تئوری

let bs = calcBS().bs; let mkt = option.ti.lastPrice; if (!bs || !mkt) return ''; let pct = calcRateChange(bs, mkt, 1); return style(pct + '%', Math.abs(pct) <= 10 ? '#16a34a' : '#dc2626', '', 'بازار vs BS');

IV در کنار HV پایه

let iv = calcBS().iv; let hv = ua.hv; if (!iv || !hv) return ''; return style('IV ' + roundNumber(iv * 100, 1) + '%', '#2563eb', '', 'ضمنی') + ' | HV ' + roundNumber(hv * 100, 1) + '%';

مثال‌های فیلتر

فیلتر یک تصمیم برمی‌گرداند، نه یک عدد درست return bg.delta >= 0.4 یک مقایسه که true یا false می‌دهد ردیف می‌ماند یا می‌رود نادرست return bg.delta یک عدد که به بولین تبدیل می‌شود و صفر یعنی حذف، بی‌آنکه بخواهید ردیف‌هایی که محاسبه ندارند را صریح رد کنید وگرنه یک مقدار خالی، خودش تصمیم می‌گیرد و شما نمی‌فهمید چرا و شرط روز تا سررسید را جدا اضافه کنید چون سررسیدهای خیلی نزدیک، اعداد عجیب می‌سازند
فیلتر باید یک مقایسه برگرداند نه یک عدد؛ و ردیف بی‌محاسبه را صریح رد کنید، وگرنه مقدار خالی خودش تصمیم می‌گیرد.

IV بالا و دلتا میانی (مناسب فروش اختیار)

let bg = calcBS({ premium: option.ti.buy1Price }); return bg.delta >= 0.4 && bg.delta <= 0.6 && bg.iv >= 0.5;

قیمت نزدیک تئوری بلک‌شولز

let bs = calcBS().bs; if (!bs || !option.ti.sell1Price) return false; return Math.abs(calcRateChange(bs, option.ti.sell1Price)) <= 10;

IV ضمنی بالاتر از HV تاریخی

return calcBS().iv && ua.hv && calcBS().iv > ua.hv && option.daysUntilMaturity > 5;

IV، HV و مقایسه نوسان

برای تحلیل نوسان چند منبع دارید:

چهار عدد نوسان — و هر کدام مال چیز دیگری option.iv IV بازارِ همین قرارداد مال قرارداد calcBS().iv IV محاسباتی از پرمیوم مال قرارداد ua.hv نوسان تاریخی مال نماد پایه ua.ivRank رتبه در بازهٔ یک‌ساله مال نماد پایه دو تای اول مال قرارداد است و دو تای آخر مال نماد پایه یعنی فیلتری که این دو را با هم مقایسه کند، دو چیز متفاوت را می‌سنجد
چهار عدد نوسان در دسترس است و مرزشان مهم است: option.iv و calcBS().iv مال قراردادند، ua.hv و ua.ivRank مال نماد پایه.
  • option.iv — IV ضمنی همین قرارداد (از بازار)
  • ua.hv — نوسان تاریخی نماد پایه
  • calcBS().iv — IV محاسباتی از پرمیوم و پارامترهای BS
  • ua.ivRank / ua.ivPercentile — رتبه و صدک IV پایه (IVR · IVP)

جزئیات تفاوت IV و HV: راهنمای IV و HV. برای یونانی‌ها به‌صورت مفهومی: ضرایب پوشش ریسک یونانی.

پیمایش زنجیره با optionSE

تابع optionSE() قراردادهای هم‌سررسید را برمی‌گرداند — برای مقایسه اعمال‌های مجاور یا محاسبه روی قرارداد دیگر:

رسیدن به قراردادهای دیگرِ همان سررسید اعمال بالاتر سطر جاری اعمال پایین‌تر طرف مقابل — پوت همان اعمال optionSE(1) اولین اعمال بالاتر optionSE(0, 'os') کال ↔ پوت با همان اعمال optionSE() کل آرایه — برای حلقه زدن روی همهٔ قراردادهای سررسید
optionSE شما را به قراردادهای دیگر همان سررسید می‌رساند: اعمال بالاتر، طرف مقابل (کال ↔ پوت)، یا کل آرایه برای حلقه زدن.
  • optionSE() — آرایه همه قراردادهای هم‌سررسید
  • optionSE(1) — اولین اعمال بالاتر از جاری
  • optionSE(0, 'os') — قرارداد طرف مقابل (call ↔ put) با همان اعمال

ستون: دلتا اعمال بالاتر

let next = optionSE(1); if (!next) return ''; return roundNumber(calcBS(next.namad).delta, 2);

مثال پیشرفته: کمترین IV زنجیره

گاهی می‌خواهید کمترین IV بین قراردادهای یک سررسید را پیدا کنید و همان را برای محاسبه قیمت تئوری قرارداد جاری به کار ببرید — مثلاً وقتی فکر می‌کنید IV فعلی outlier است.

مثال پیشرفته: دو بار صدا زدن، دو کار متفاوت گام یک — روی هر قرارداد calcBS({ premium: … }).iv IV هر قرارداد از پرمیوم خودش گام دو — روی قرارداد جاری calcBS({ volatility: minIV }).bs قیمت تئوری با کمترین IV زنجیره همان آبجکت، دو بار، برای دو منظور کاملاً متفاوت بار اول برای استخراج IV، بار دوم برای تحمیل آن کاربردش: وقتی فکر می‌کنید IV فعلی یک نقطهٔ پرت است قیمت تئوری را با نوسان «عادی‌ترِ» زنجیره دوباره حساب می‌کنید و ستون، هر دو عدد را کنار هم نشان می‌دهد
در مثال پیشرفته همان آبجکت دو بار به کار می‌رود: یک‌بار برای استخراج IV هر قرارداد از پرمیومش، و یک‌بار برای تحمیل کمترین IV به قرارداد جاری.
let list = optionSE(); let minIV = null; for (let i = 0; i < list.length; i++) { let o = list[i]; let iv = calcBS({ premium: o.ti.lastPrice, strike: o.strike, type: o.type }).iv; if (!iv) continue; if (minIV === null || iv < minIV) minIV = iv; } if (minIV === null) return ''; let bsWithMinIV = calcBS({ volatility: minIV }).bs; return style(roundNumber(minIV * 100, 1) + '%', '#2563eb', '', 'min IV') + ' → BS ' + roundNumber(bsWithMinIV, 0);

در این کد روی آرایه optionSE() حلقه می‌زنیم، IV هر قرارداد را با پرمیوم همان قرارداد می‌گیریم، کمترین را نگه می‌داریم و در نهایت قیمت BS قرارداد جاری را با volatility: minIV محاسبه می‌کنیم.

سناریوسازی با overrides

با آبجکت overrides می‌توانید پارامترهای BS را عوض کنید — بدون تغییر داده واقعی بازار:

سناریو، داده‌ای را عوض نمی‌کند دادهٔ واقعی بازار دست‌نخورده می‌ماند محاسبه با مقادیر شما فقط برای همین یک ستون چه چیزهایی را می‌شود عوض کرد volatility · premium · strike · type به چه درد می‌خورد حساسیت را می‌سنجید، نه پیش‌بینی هر چیزی که ندهید، از بازار خوانده می‌شود پس فقط همان پارامتری که می‌خواهید بسنجید را بنویسید
آبجکت سناریو فقط محاسبهٔ همان ستون را عوض می‌کند و دادهٔ بازار دست‌نخورده می‌ماند — هر پارامتری که ندهید، از بازار خوانده می‌شود.
کلیدکاربرد
volatilityIV فرضی (0 تا 1 یا درصد)
premiumپرمیوم فرضی — برای IV معکوس
uaPriceقیمت پایه فرضی
daysروز تا سررسید فرضی
strikeاعمال فرضی
riskFreeنرخ بدون ریسک

ستون: قیمت BS با HV پایه (به‌جای IV بازار)

if (!ua.hv) return ''; return roundNumber(calcBS({ volatility: ua.hv }).bs, 0);

مشاهده یونانی‌ها و سایر یونانی‌ها در نمودار استراتژی

علاوه بر ستون و فیلتر دیده‌بان، در نمودار استراتژی می‌توانید یونانی‌ها را روی منحنی سود/زیان ببینید: موقعیت‌های call/put را اضافه کنید، از بخش «یونانی‌ها» روی نمودار استفاده کنید و حساسیت کل استراتژی به قیمت پایه و زمان را لحظه‌ای بررسی کنید. جمع دلتای موقعیت‌ها در پایین جدول نیز نمایش داده می‌شود.

برای دیدن حساسیت کل یک استراتژی چندپایه، موقعیت‌ها را در نمودار استراتژی بسازید و از بخش یونانی‌ها روی منحنی سود/زیان استفاده کنید.

فرمول‌ها در کتابخانه شخصی ذخیره می‌شوند و می‌توانید هر کدام را به‌عنوان فیلتر یا ستون سفارشی به دیده‌بان اضافه کنید.

calcBS قلب فرمول‌نویسی تحلیلی در دیده‌بان است: یک تابع برای قیمت تئوری، IV و همه یونانی‌ها. با ستون و فیلتر ساده شروع کنید؛ برای مقایسه اعمال‌ها از optionSE و برای سناریو از overrides استفاده کنید.

مقالات مرتبط

مدل بلک شولز و قیمت تئوری قرارداد اختیار معامله

مدل بلک‌شولز در آپشن — قیمت تئوری، IV ضمنی، یونانی‌ها و استفاده در دیده‌بان و جزئیات قرارداد.

دلتا (Delta) در اختیار معامله چیست؟ فرمول، مثال و کاربرد معاملاتی

دلتا در آپشن یعنی چه؟ محدوده 0 تا 1، تفسیر دلتای کال و پوت، کاربرد در پوشش ریسک و فیلترنویسی، و مشاهده دلتای لحظه‌ای در دیده‌بان آپشن‌باز.

نوسان ضمنی چیست؟ IV و HV در اختیار معامله

راهنمای IV و HV در آپشن — تفاوت نوسان ضمنی و تاریخی، تفسیر گران/ارزان بودن پرمیوم و فیلتر قراردادها در دیده‌بان آپشن‌باز.

ضرایب پوشش ریسک یونانی

نقشهٔ یونانی‌های آپشن: دلتا، گاما، تتا، وگا و رو — جدول یک‌نگاه، لینک مقالهٔ تخصصی هر کدام، مشاهده روی نمودار استراتژی و calcBS در دیده‌بان آپشن‌باز.

رتبه نوسان ضمنی یا IV RANK

آموزش IV Rank (IVR): رتبه نوسان ضمنی نماد پایه در آپشن‌باز — فرمول محاسبه، تفاوت با IV Percentile و مثال فیلتر و ستون در دیده‌بان برای پیدا کردن نوسان گران یا ارزان.

IV Percentile

آموزش IV Percentile (IVP): صدک نوسان ضمنی نماد پایه — فرمول، تفاوت با IV Rank و کاربرد در فیلتر و ستون دیده‌بان برای ارزیابی وضعیت نوسان بازار.

راهنمای دیده‌بان آپشن‌باز | فیلتر و فرمول‌نویسی

راهنمای جامع دیده‌بان آپشن‌باز: جدول زنده قراردادها، فیلتر سریع روی سرستون (سربه‌سر، IV و …)، پنل فیلتر، فرمول‌نویسی، آلارم و اتصال به نمودار استراتژی.

راهنمای فرمول‌نویسی و استراتژی‌های آماده در دیده‌بان آپشن

آموزش سیستم فرمول‌نویسی دیده‌بان: کارگاه شخصی و کتابخانه استراتژی‌های آماده اختیار معامله — هر دو با همان موتور فرمول؛ افزودن به جدول، فیلتر و میزکار.

راهنمای نمودار استراتژی اختیار معامله | ساخت و تحلیل سود و زیان

آموزش کامل نمودار استراتژی آپشن‌باز: ساخت چندپایه، قیمت روز، مقایسه با نمودار دوم، ورود اکسل کارگزاری، what-if، یونانی‌ها، جدول ماتریس، کارمزد، ذخیره و اتصال به فرمول‌نویسی — برای مبتدی تا حرفه‌ای.

فیلتر قراردادها بر اساس درصد تفاوت بین قیمت و قیمت تئوری

آموزش کاربردی پیاده‌سازی اسکنر انحراف قیمت بازار از قیمت بلک‌شولز به همراه فیلتر حاشیه امنیت اعمال سهم با پنل تعاملی ویژوال (⚙️).

فیلتر هوشمند قراردادهای اختیار معامله با شرایط بهینه معاملاتی

آموزش گام‌به‌گام ساخت و اجرای اسکنر هوشمند برای شناسایی بهترین قراردادهای اختیار معامله بر اساس ارزش معاملات، بلک‌شولز، اهرم و وضعیت در سود.

فیلتر پرمیوم‌های نزدیک در هم‌سررسید | فرمول‌نویسی

پیدا کردن قراردادهایی که پرمیومشان با هم‌گروه هم‌سررسید کمتر از آستانهٔ درصدی فاصله دارد — با optionSE، basePrice و calcRateChange.

دیدگاه‌ها و پرسش‌ها

اگر سوال یا ابهامی در رابطه با این مطلب دارید، همین‌جا بپرسید؛ کارشناسان ما پاسخ می‌دهند.

تجربه یا نکته‌ای دارید؟ نوشتنش به بقیهٔ کاربران هم کمک می‌کند.

پرسش‌ها و نظرات کاربران

۱ پیام
ابوالفضل احسانی
27 مرداد 1402 - 22:51
باسلام و درود فراوان لطف می کنید در خصوص کاربرد این کد در بازار معامله توضیح بدید ، من کد رو اجرا کردم ولی کاربردی برای اون نتونسم پیداکنم. قرار داد های otm بشدت بالاتر از خروجی این ستون معامله میشن و قرار داد های itm تقریبا نزدیک خروجی این فرمول معامله میشن ، من نتونستم نتیجه معنی داری بگیرم.