← Zurück

расчет грек под Plaza

под квик все понятно как, к примеру до того как я добавил обработку дополнительных колонок в квике, мне выдавало ошибку при расчете грек, "истекла дата экспирации"

this.Trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.Strike);
             this.Trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.Volatility);
             this.Trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.UnderlyingSecurity);
             this.Trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.TheorPrice);
             this.Trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.OptionType);
             this.Trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.ExpiryDate);

начали обрабатываться дополнительные колонки и процесс расчета греков заработал

А как это сделать в плазе? пробовал провести расчет с вкл. сервисом волатильности, но не помогло. Сервис точно работает так как теоретическая цена и волатильность считается для опциона.

И вот мой вопрос😳 как посчитать греки для Plaza2

var Greeks_Put_minus2Strike = new BlackScholes(_SECURITY_Put_minus2Strike);

             Gamma_Put_minus2Strike = Greeks_Put_minus2Strike.Gamma(volatility_Put_minus2Strike);
             Theta_Put_minus2Strike = Greeks_Put_minus2Strike.Theta(volatility_Put_minus2Strike);
             Vega_Put_minus2Strike = Greeks_Put_minus2Strike.Vega(volatility_Put_minus2Strike);
             Delta_Put_minus2Strike = Greeks_Put_minus2Strike.Delta(volatility_Put_minus2Strike);

ну вот на этот код и ругается, в квике как я сказал все работает отлично! Уважаемые разработчики! Помогите разобраться! Как вы в Plaze считаете греки? Спасибо!!!

War dieses Thema hilfreich?

Thema teilen

Kommentare (15)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Mikhail Sukhov
Mikhail Sukhov

huricane: ну вот на этот код и ругается

Сильно ругается?

hurricane
hurricane Autor

D:\error.png вот ошибка которую выдает "время экспирации прошло" точно такое же сообщение выдавал, в квике, до того как я добавил обработку дополнительных колонок

Alexander
Alexander

ctr+c, ctr+v работает на этих окнах. надо так скопировать

hurricane
hurricane Autor

Спасибо, Александр, а по самой ошибки есть предположения? У вас на Плазе греки считаются?

Alexander
Alexander

huricane: Спасибо, Александр, а по самой ошибки есть предположения? У вас на Плазе греки считаются?

я их не считаю если сделаете копирование текста ошибки - предположения будут.

пока перепечатывать этот стэк трейс с картинки не представляется возможным.

hurricane
hurricane Autor

к сожалению сегодня уже торги кончились, получается только в пятницу смогу стек трейс скопировать. А может подскажет кто-нибудь из тех кто считает греки для Плазы, чтоб не терять время. Спасибо!

Alexander
Alexander

huricane: к сожалению сегодня уже торги кончились, получается только в пятницу смогу стек трейс скопировать. А может подскажет кто-нибудь из тех кто считает греки для Плазы, чтоб не терять время. Спасибо!

Ошибка возникает тут:

			var retVal = (Option.GetExpirationTime() - Option.Trader.MarketTime).TotalDays;

			if (retVal <= 0)
				throw new InvalidOperationException("Время экспирации прошло.");

смотрите ExpiryDate у инструмента и Trader.MarketTime

hurricane
hurricane Autor

Александр большое спасибо!!!👍

hurricane
hurricane Autor

Александр! как я уже писал выше, по ошибке "Время экспирации прошло" она у меня возникала и в Quik ровно до того момента как я не добавил обработку дополнительных колонок

this.Trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.Strike);
             this.Trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.Volatility);
             this.Trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.UnderlyingSecurity);
             this.Trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.TheorPrice);
             this.Trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.OptionType);
             this.Trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.ExpiryDate);

после добавления этих колонок начал происходить расчет грек!

Поэтому начал логически мыслить :D откуда берутся эти данные при работе через Плаза, точнее некоторые данные я знал откуда берутся, точно знал, что теоретическая цена и волатильность берется с сервиса волатильности, начал смотреть исходники Plaza.Metadata, может и экспирация берется от туда но в PlazaVolatilityColumns, этого не было, была волатильность и теоретическая цена.

Начал смотреть в PlazaOptionsParamsColumns по логике дата экспирация ExpiryDate для опциона должна была быть там - но и там ее не было.

Единственную ExpDate нашел в PlazaFuturesParamsColumns, но это для фьючерсов.

И вот вопрос Александр, откуда берется Дата экспирации для опциона через Plaza. Быть в этом проблема моей ошибки? :D

Читая этот вопрос посмотрите на мой статус "новичок" :D

Буду признателен за ответ, СПАСИБО!

Regards hericane

UPD: в PlazaSessionContentsOptionColumns есть ExpirationEndDate Дата окончания экспирации инструмента. может отсюда берется?

Alexander
Alexander
security.ExpiryDate = record.GetDateTime(metadata.ExpirationStartDate);

в PlazaTrader

вы б лучше не рассуждали, а посмотрели на security.ExpiryDate, как я и написал выше.

hurricane
hurricane Autor

ок!

hurricane
hurricane Autor

Александр, вы были правы ExpiryDate выводит не адекватную дату экспирации 6.7.2011 для инструмента RI160000BC2 есть идеи?

Alexander
Alexander

huricane: Александр, вы были правы ExpiryDate выводит не адекватную дату экспирации 6.7.2011 для инструмента RI160000BC2 есть идеи?

Поставьте breakpoint в коде шлюза да посмотрите как он там и чем инициализируется. какие данные приходят из шлюза - правильные ли приходят, правильно ли их парсим.

Alexander
Alexander

Залил фикс.

hurricane
hurricane Autor

Александр СПАСИБО! все работает! греки считаются! 🙄