← Zurück

Опционы BaseAsset.GetStrikeStep() всегда возвращает 0

Привет, форумчане.

Проблема такая: GetStrikeStep() на любом БА (базовый актив) всегда 0. При этом портфель и БА зарегистрированы. Данные по ним приходят. Все параметры БА (BestBid, BestAsk) достаются без проблем. GetCentralStrike() тоже отрабатывает корректно.


var strikeStep = BaseAsset.GetStrikeStep(); // strikeStep - 0

Это бага в либе или при каких условиях еще я могу получить 0 этим методом?

War dieses Thema hilfreich?

Thema teilen

Kommentare (6)

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

Mikhail Sukhov
Mikhail Sukhov

А само поле Strike?

pehas
pehas Autor

Mikhail Sukhov: А само поле Strike?

В BaseAsset проверить сейчас не могу, нет лицензии на этой машине (рабочая). Вечером проверю, отпишусь. Но все Strike самих опционов полученных через BaseAsset.GetCall и GetPut - есть.

pehas
pehas Autor

Mikhail Sukhov: А само поле Strike?

Поле strike у BaseAsset - 0. Но это и не опцион. Так что вроде логично. У опционов это поле соответствует страйку

Alexander
Alexander
		public static decimal GetStrikeStep(this Security underlyingAsset)
		{
			var options = underlyingAsset.GetDerivatives().Filter(OptionTypes.Call).OrderBy(s => s.Strike);
			return options.ElementAt(1).Strike - options.ElementAt(0).Strike;
		}

Вот исходный код данного метода. Попробуйте у себя подебажить его, посмотреть что возвращает GetDerivatives(). Мне ошибку найти не удалось.

Просьба отписаться по результатам.

pehas
pehas Autor

Подебажил

Жук выползает потому, что в определении метода GetStrikeStep не учитывается ExpireDate И получается, что если в деревативах базового актива есть опционы разных серий, то сравниваются соответственно первые колы разных серий с одинаковыми страйками, т.к. они у вас в функции сортируются по страйку

вот скрин того, что у вас находится в результате в коллекции options Коллекция options

Mikhail Sukhov Alexander
Mikhail Sukhov
Mikhail Sukhov

pehas: Подебажил

Жук выползает потому, что в определении метода GetStrikeStep не учитывается ExpireDate

Поправим.