/// <summary> /// Gets the margin currently alloted to the specified holding. /// </summary> /// <param name="parameters">An object containing the security</param> /// <returns>The maintenance margin required for the option</returns> /// <remarks> /// We fix the option to 1.5x the maintenance because of its close coupling with the underlying. /// The option's contract multiplier is 1x, but might be more sensitive to volatility shocks in the long /// run when it comes to calculating the different market scenarios attempting to simulate VaR, resulting /// in a margin greater than the underlying's margin. /// </remarks> public override MaintenanceMargin GetMaintenanceMargin(MaintenanceMarginParameters parameters) { var underlyingRequirement = base.GetMaintenanceMargin(parameters.ForUnderlying(parameters.Quantity)); var positionSide = parameters.Quantity > 0 ? PositionSide.Long : PositionSide.Short; return(GetMarginRequirement(_futureOption, underlyingRequirement, positionSide)); }
/// <summary> /// Gets the margin currently alloted to the specified holding. /// </summary> /// <param name="parameters">An object containing the security</param> /// <returns>The maintenance margin required for the option</returns> /// <remarks> /// We fix the option to 1.5x the maintenance because of its close coupling with the underlying. /// The option's contract multiplier is 1x, but might be more sensitive to volatility shocks in the long /// run when it comes to calculating the different market scenarios attempting to simulate VaR, resulting /// in a margin greater than the underlying's margin. /// </remarks> public override MaintenanceMargin GetMaintenanceMargin(MaintenanceMarginParameters parameters) { return(base.GetMaintenanceMargin(parameters.ForUnderlying(parameters.Quantity)) * FixedMarginMultiplier); }