Пример #1
0
        /// <summary>
        /// The margin that must be held in order to increase the position by the provided quantity
        /// </summary>
        /// <param name="parameters">An object containing the security and quantity of shares</param>
        /// <returns>The initial margin required for the option (i.e. the equity required to enter a position for this option)</returns>
        /// <remarks>
        /// We fix the option to 1.5x the initial 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 InitialMargin GetInitialMarginRequirement(InitialMarginParameters parameters)
        {
            var underlyingRequirement = base.GetInitialMarginRequirement(parameters.ForUnderlying()).Value;
            var positionSide          = parameters.Quantity > 0 ? PositionSide.Long : PositionSide.Short;

            return(new InitialMargin(GetMarginRequirement(_futureOption, underlyingRequirement, positionSide)));
        }
 /// <summary>
 /// The margin that must be held in order to increase the position by the provided quantity
 /// </summary>
 /// <param name="parameters">An object containing the security and quantity of shares</param>
 /// <returns>The initial margin required for the option (i.e. the equity required to enter a position for this option)</returns>
 /// <remarks>
 /// We fix the option to 1.5x the initial 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 InitialMargin GetInitialMarginRequirement(InitialMarginParameters parameters)
 {
     return(new InitialMargin(FixedMarginMultiplier
                              * base.GetInitialMarginRequirement(parameters.ForUnderlying()).Value
                              ));
 }