← Zurück

Ошибка в DeltaHedgeStrategy

Хеджирование позиции через 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; 

War dieses Thema hilfreich?

Thema teilen

Kommentare (0)

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

Noch keine Kommentare. Seien Sie der Erste!