/// <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);
 }