← Back

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

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

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


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

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

Comments (6)

Login or Create account, Log in or register to leave a comment

Mikhail Sukhov
Mikhail Sukhov

А само поле Strike?

pehas
pehas Author

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

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

pehas
pehas Author

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 Author

Подебажил

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

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

Mikhail Sukhov Alexander
Mikhail Sukhov
Mikhail Sukhov

pehas: Подебажил

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

Поправим.