Ошибка в DeltaHedgeStrategy
Atom
01.04.2013
pehas


Хеджирование позиции через DeltaHedgeStrategy работает не корректно
Неверно определяется необходимая позиция в базовом активе для рехеджа

Начал разбираться, открыл исходник DeltaHedgeStrategy
diff (позиция в базовом активе для хеджа) там определяется так

Код

        /// <summary>
        /// Получить список заявок, рехеджирующих опционную позицию.
        /// </summary>
        /// <returns>Заявки рехеджирования.</returns>
        protected override IEnumerable<Order> GetReHedgeOrders()
        {
            var futurePosition = BlackScholes.Delta();

            var diff = futurePosition.Round() + Position + PositionOffset;
           
            ...

Где futurePosition - это суммарная дельта всех имеющихся опционов + уже имеющаяся позиция по базовому активу
Код

        /// <summary>
        /// Рассчитать дельту опциона.
        /// </summary>
        /// <param name="deviation">Стандартное отклонение.</param>
        /// <returns>Дельта опциона.</returns>
        public override decimal Delta(decimal deviation)
        {
            return ProcessOptions(bs => bs.Delta(deviation)) + GetAssetPosition();
        }


Ошибка в том, что при расчете diff, вся позиция хеджирующей стратегии добавляется еще раз к суммарной дельте
Если изменить на такую запись, то будет работать
Код

        var diff = futurePosition.Round() + PositionOffset; 


Теги:


Спасибо: Mikhail Sukhov




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

loading
clippy