Опционный калькулятор
Atom Ответить
23.08.2011


Вопрос по опционному калькулятору:
Какой алгоритм заложен при расчете греков по формуле Блэка-Шоулза?
Спрашиваю не просто так: греки , что транслирует квик и те , что считает калькулятор существенно различаются. Где истинные значения, кому верить ? =)

P.s. Обратился к опционному калькулятору, т.к. существует некоторые трудности при изъятии греков из таблицы с опционами квика.

Теги:


Спасибо:




7 Ответов
Alexander

Фотография
Дата: 23.08.2011
Ответить


Формула Стока-Шарпа
Спасибо:

Dottz

Фотография
Дата: 23.08.2011
Ответить


А как это подтвердить?
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 23.08.2011
Ответить


Dottz Перейти

Спрашиваю не просто так: греки , что транслирует квик и те , что считает калькулятор существенно различаются. Где истинные значения, кому верить ? =)


Чтобы не ставить Квик, приведите параметры, что выводит Квик и что программа. Давайте поймем, насколько существует отличие и кто виноват.
Спасибо:

Dottz

Фотография
Дата: 24.08.2011
Ответить


Не знаю почему так вышло, вчера при расчетебыли существенные различия и по дельте и тете. Предполагаю , что разные расчетные цены были в квике и калькуляторе. Сегодня же на это обратил внимание и поймал специально так момент, чтобы расчетная цена была одинакова и там и там. Но и в этом случае видны путь незначительные, но расхождения: Вега и гамма.

Screen
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 24.08.2011
Ответить


Код
var trader = Helper.CreateTestTrader();
trader.MarketTime = new DateTime(2011, 08, 24, 19, 0, 0);

var option = new Security
{
	Id = "RI175000BI1@RTS",
	OptionType = OptionTypes.Call,
	Strike = 175000,
	ExpiryDate = new DateTime(2011, 09, 15, 18, 45, 0),
	UnderlyingSecurityId = "RIU1@RTS",
	Trader = trader,
	Type = SecurityTypes.Option,
};

var future = new Security
{
	Id = "RIU1@RTS",
	LastTrade = new Trade
	{
		Price = 156900,
	},
	Trader = trader,
	Type = SecurityTypes.Future,
};

trader.RaiseNewSecurities(new [] { option, future });

const decimal volatility = 45.105m / 100;

Console.WriteLine("Дельта " + MathHelper.Round(option.Delta(volatility), 2));
Console.WriteLine("Гамма " + MathHelper.Round(option.Gamma(volatility), 5));
Console.WriteLine("Тета " + MathHelper.Round(option.Theta(volatility), 2));
Console.WriteLine("Вега " + MathHelper.Round(option.Vega(volatility), 2));
Console.WriteLine("Ро " + MathHelper.Round(option.Rho(volatility), 2));


Выводит:

Дельта 0,18
Гамма 0,00001
Тета -102,17
Вега 99,62
Ро 0


Ро действительно косячит. Надо будет исправить.

С гаммой в Квике точно не понятно, в чем там выводится. Насчет других параметром, зашел на option.ru:

Что-то совпадает с S# данными, что то с Квик. Главное понять, что берется в качестве цены базового актива (у нас последняя сделка) и не добавляются ли какие-то коэффициенты. Самой лучшей проверкой будет сделать расчет в Экселе.
option.png 17,6KB (2)
Спасибо:

Dottz

Фотография
Дата: 24.08.2011
Ответить


В квике считается по полю "Расчетная цена", которое с периодичностью в несколько секунд обновляется по цене посл. сделки вроде как. Проверял в экселе, все вроде почти одинаково, но все равно разница какая-то есть - не пойму почему. Вроде формула одна, одни входные данные, а результаты разные.
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 24.08.2011
Ответить


Dottz Перейти
В квике считается по полю "Расчетная цена", которое с периодичностью в несколько секунд обновляется по цене посл. сделки вроде как. Проверял в экселе, все вроде почти одинаково, но все равно разница какая-то есть - не пойму почему. Вроде формула одна, одни входные данные, а результаты разные.


А Эксель для тех данных, что я привел в коде выше, какие значения греков выдает?
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy