جهت نوشتن فرمول و فیلتر به
صفحه دیده بان رفته سپس بر روی
ساخت ستون یا ساخت فیلتر کلیک کنید.
نام ستون یا فیلتر را مشخص، کد را در قسمت
ادیتور نوشته و در نهایت جهت مشاهده نتیجه بر روی
ذخیره کلیک کنید .
سوال چطور میشود پایین ترین نوسان ضمنی زنجیره قرارداد مثلاً یکی از زنجیره های خساپا رو پیدا کرد و آن را در تابع بلک شولز گذاشت و خروجی پرمیوم گرفت.
توضیح
می خواهیم کمترین مقدار iv رو در یک زنجیره پیدا کنیم . پس نیاز هست روی زنجیره یک حلقه بزنیم و با مقایسه تمامی iv های قرارداد کمترین مقدار را پیدا کنیم .
برای حلقه از while و برای دسترسی به زنجیره از تابع OptionSE استفاده خواهیم کرد .
let minIV = 0;
let index = 0;
let str = '';
while (OptionSE()[index] != undefined) {
//قرارداد با اندیس index
current = OptionSE()[index] ;
var param = new Object();
param.Type = current.Type;
param.Strike = current.Strike;
param.Premium = ScalePrice(current.TI)
let bg = CalcBG(param);
//این رشته جهت تست و مشاهده iv هر قرارداد
str += "<p>{0}:{2} - {1}</p>".format(index, bg.iv, current.Strike);
//اولین قراردادی که iv داره رو به عنوان مرجع مقایسه انتخاب می کنیم و در minIV ذخیره میکنیم
if (minIV ==0 && bg.iv != 0)
minIV = bg.iv;
//مقایسه مقدارminIV با iv قرارداد و درصورت کوچکتر بودن iv ان را در minIV قرارمیدیم
else if ( bg.iv < minIV && bg.iv != 0)
minIV = bg.iv;
index++;
}
str += "<p>minIV: {0}</p>".format(minIV);
str;
تا اینجا مقدار iv هر کدام از قرادادها رو محاسبه کردیم و کمترین آن را در متغیر minIV ذخیره کردیم و برای درک بهتر ، در ستون نمایش میدهیم .
حالا که کمترین iv رو داریم ان را به عنوان iv پارامتر در تابع محاسبه بلک شولز قرارداد فعلی قرار میدهیم و بلک شولز بر اساس minIV را بدست می آوریم .
var param = new Object();
param.Volatility = minIV;
let bs = CalcBG(param).bs;
str += "BlackSholes by min IV: {0}".format(bs);
str;
کد کامل بدون توضیح
let minIV = 0;
let index = 0;
let str = '';
while (OptionSE()[index] != undefined) {
//قرارداد با اندیس index
current = OptionSE()[index] ;
var param = new Object();
param.Type = current.Type;
param.Strike = current.Strike;
param.Premium = ScalePrice(current.TI)
let bg = CalcBG(param);
if (minIV ==0 && bg.iv != 0)
minIV = bg.iv;
else if ( bg.iv < minIV && bg.iv != 0)
minIV = bg.iv;
index++;
}
var param = new Object();
param.Volatility = minIV;
CalcBG(param).bs;