Den
|
Дата: 05.03.2013
pehas Могу получить премию по IV (через класс BlackScholes) А как посчитать премию по волатильности базового актива с тем чтобы из этой премии затем получить свою IV? Самому написать подсчет волатильности базового актива за интересующий период, а потом получить премию для этой волатильности подставив вместо IV (через класс BlackScholes). Я давно хотел этим заняться, да все руки не доходят.
|
|
Спасибо:
|
|
|
|
|
pehas
|
Дата: 05.03.2013
Den Самому написать подсчет волатильности базового актива за интересующий период, а потом получить премию для этой волатильности подставив вместо IV (через класс BlackScholes). Я давно хотел этим заняться, да все руки не доходят.
Так не выйдет. bs.Premium(Volatility) расчитывает премию по IV опциона, не по исторической. Я пока сделал так. Нашел в интернетах класс блека шоулза на сях, он считает премию по исторической волатильности, а потом эту премию подставляю в bs.IV(premium) стокшарпа. Вот думал, может как то сразу на S# это можно сделать, чтобы сторонние либы не пользовать
|
|
Спасибо:
|
|
|
|
|
Дюшес
|
Дата: 05.03.2013
pehas Я пока сделал так. Нашел в интернетах класс блека шоулза на сях, он считает премию по исторической волатильности
А исходники есть?
|
|
Спасибо:
|
|
|
|
|
Дюшес
|
Дата: 05.03.2013
Кстати, ну и как эти iv сильно расходятся? Не сравнивал?
|
|
Спасибо:
|
|
|
|
|
pehas
|
Дата: 05.03.2013
Брал отсюда http://yesakov.com/2010/...tion-pricing-model-opm/
Дюшес Кстати, ну и как эти iv сильно расходятся? Не сравнивал?
Расхождение сильно зависит от периода за который ты считаешь историческую волатильность. Если брать за день, то сильно, а за месяц почти одинаково
|
|
Спасибо:
|
|
|
|
|
Mikhail Sukhov
|
Дата: 05.03.2013
Насколько я помню, через S# это делалось через переключение одного поля на другое.
|
|
Спасибо:
|
|
|
|
|
pehas
|
Дата: 05.03.2013
Mikhail Sukhov Насколько я помню, через S# это делалось через переключение одного поля на другое. Интуитивно, я как бы догадываюсь, что если вызывать расчет премии без параметров - bs.Premium() то расчет должен вестись по полю Volatility базового актива (?). Но как говорится, хотелось бы уточнить.. Ну и вопрос, конечно, если это так (как описано выше) и используется это поле Volatility, будет ли это по феншую выставлять каждый раз в это поле свою расчетную историческую волатильность
|
|
Спасибо:
|
|
|
|
|
Дюшес
|
Дата: 05.03.2013
pehas Интуитивно, я как бы догадываюсь, что если вызывать расчет премии без параметров - bs.Premium() то расчет должен вестись по полю Volatility базового актива (?). Но как говорится, хотелось бы уточнить..
Нет, в bs.Premium() берется поле ImpliedVolatility у инструмента. Если подставлять свою волатильность, используется bs.Premium(decimal deviation). А вот откуда ее можно брать?
|
|
Спасибо:
|
|
|
|
|
pehas
|
Дата: 05.03.2013
|
|
|
|
Дюшес Нет, в bs.Premium() берется поле ImpliedVolatility у инструмента. Если подставлять свою волатильность, используется bs.Premium(decimal deviation). А вот откуда ее можно брать?
Так в том и проблема, что bs.Premium(decimal deviation) - это расчет по своей ОПЦИОННОЙ волатильности. Но не по исторической. Можно легко проверить. Если получить IV через iv = bs.IV(sec.LastPrice) а затем подставить полученное iv в price = bs.Premium(iv), то price будет равно sec.LastPrice А если бы bs.Premium(decimal deviation) считало бы по исторической волатильности, значение было бы другим. Так в принципе сток шарп все и считает по ходу. Любые греки. Находит сначала IV по последней цене опциона, а затем расчитывает через эту IV греки и премию. Т.е. формула для расчета премии опциона через историческую волатильность и другие параметры в шарп не заложена. Да поправят меня создатели, если я не прав. Соответственно, отвечая на ваш вопрос, я решаю задачу с другого конца. Я расчитываю премию через отдельную либу по историческим данным. А затем уже по этой премии нахожу IV ей соответствующую и держу пальцы крестиком, чтобы она оказалась правильнее чем та, что расчитана шарпом по последней цене (или та что транслируется биржей) :)
|
|
Спасибо:
|
|
|
|
|
Дюшес
|
Дата: 05.03.2013
|
|
|
|
pehas Так в том и проблема, что bs.Premium(decimal deviation) - это расчет по своей ОПЦИОННОЙ волатильности. Но не по исторической. Можно легко проверить. Если получить IV через iv = bs.IV(sec.LastPrice) а затем подставить полученное iv в price = bs.Premium(iv), то price будет равно sec.LastPrice А если бы bs.Premium(decimal deviation) считало бы по исторической волатильности, значение было бы другим. Так в принципе сток шарп все и считает по ходу. Любые греки. Находит сначала IV по последней цене опциона, а затем расчитывает через эту IV греки и премию.
По-умолчанию берется IV инструмента транслируемое биржей, если вызываем через функцию bs.Premium(). Если надо посчитать с HV, то, насколько я понимаю, надо использовать bs.Premium(decimal deviation). То же самое и для греков. Там же в формуле БШ, как раз и используется этот параметр - deviation или стандартное отклонение или HV. Вроде так? pehas Соответственно, отвечая на ваш вопрос, я решаю задачу с другого конца. Я расчитываю премию через отдельную либу по историческим данным. А затем уже по этой премии нахожу IV ей соответствующую и держу пальцы крестиком, чтобы она оказалась правильнее чем та, что расчитана шарпом по последней цене (или та что транслируется биржей) :)
Поглядел исходники, все формулы практически один в один. Также есть параметр deviation в расчете премии. Что нужно ставить на его место? В либе, в классе Statistic, есть ф-я Dev(ArrayList dataRow) // Вычисление дисперсии (отклонение от среднего значения числового ряда)(Deviation) Наверное ее и подставлять, а в массиве данные по исторической волатильности?
|
|
Спасибо:
|
|
|
|