Ошибка в DeltaHedgeStrategy~/topic/3533/oshibka-v-deltahedgestrategy/Copyright @ StockSharp Platform LLC 2010 - 20242024-03-28T18:18:33Zhttps://stocksharp.ru/images/logo.pnghttps://stocksharp.ru/posts/m/25021/Хеджирование позиции через DeltaHedgeStrategy работает не корректно Неверно определяется необходимая...2013-03-31T20:41:38Z2013-03-31T20:41:38Zpehashttps://stocksharp.ru/users/340/info@stocksharp.ruХеджирование позиции через DeltaHedgeStrategy работает не корректно<br />Неверно определяется необходимая позиция в базовом активе для рехеджа<br /><br />Начал разбираться, открыл исходник DeltaHedgeStrategy<br />diff (позиция в базовом активе для хеджа) там определяется так<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
/// <summary>
/// Получить список заявок, рехеджирующих опционную позицию.
/// </summary>
/// <returns>Заявки рехеджирования.</returns>
protected override IEnumerable<Order> GetReHedgeOrders()
{
var futurePosition = BlackScholes.Delta();
var diff = futurePosition.Round() + Position + PositionOffset;
...
</pre>
</div></div><br />Где futurePosition - это суммарная дельта всех имеющихся опционов + уже имеющаяся позиция по базовому активу<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
/// <summary>
/// Рассчитать дельту опциона.
/// </summary>
/// <param name="deviation">Стандартное отклонение.</param>
/// <returns>Дельта опциона.</returns>
public override decimal Delta(decimal deviation)
{
return ProcessOptions(bs => bs.Delta(deviation)) + GetAssetPosition();
}
</pre>
</div></div><br /><br />Ошибка в том, что при расчете diff, вся позиция хеджирующей стратегии добавляется еще раз к суммарной дельте<br />Если изменить на такую запись, то будет работать<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
var diff = futurePosition.Round() + PositionOffset;
</pre>
</div></div><br />Copyright @ StockSharp Platform LLC 2010 - 2024