Ошибка в DeltaHedgeStrategy


Ошибка в DeltaHedgeStrategy
Atom
4/1/2013


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

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

Code

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

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

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

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


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

        var diff = futurePosition.Round() + PositionOffset; 


Tags:


Thanks: Mikhail Sukhov




Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy