Example #1
0
 /// <summary>
 /// Specifies a function used to evaluate how desirable a particular solution is. A good implementation for
 /// this would be to minimize the total margin required to hold all of the positions.
 /// </summary>
 public OptionStrategyMatcherOptions WithObjectiveFunction(IOptionStrategyMatchObjectiveFunction function)
 {
     return(new OptionStrategyMatcherOptions(
                _definitions,
                MaximumCountPerLeg,
                MaximumDuration,
                MaximumSolutionCount,
                _definitionEnumerator,
                function,
                _positionEnumerator
                ));
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="OptionStrategyMatcherOptions"/> class, providing
        /// options that control the behavior of the <see cref="OptionStrategyMatcher"/>
        /// </summary>
        public OptionStrategyMatcherOptions(
            IReadOnlyList <OptionStrategyDefinition> definitions,
            IReadOnlyList <int> maximumCountPerLeg,
            TimeSpan maximumDuration = default(TimeSpan),
            int maximumSolutionCount = 100,
            IOptionStrategyDefinitionEnumerator definitionEnumerator = null,
            IOptionStrategyMatchObjectiveFunction objectiveFunction  = null,
            IOptionPositionCollectionEnumerator positionEnumerator   = null
            )
        {
            if (maximumDuration == default(TimeSpan))
            {
                maximumDuration = Time.OneMinute;
            }

            if (definitionEnumerator == null)
            {
                // by default we want more complex option strategies to have matching priority
                definitionEnumerator = new DescendingByLegCountOptionStrategyDefinitionEnumerator();
            }

            if (objectiveFunction == null)
            {
                objectiveFunction = new UnmatchedPositionCountOptionStrategyMatchObjectiveFunction();
            }

            if (positionEnumerator == null)
            {
                positionEnumerator = new DefaultOptionPositionCollectionEnumerator();
            }

            _definitions          = definitions;
            MaximumDuration       = maximumDuration;
            ObjectiveFunction     = objectiveFunction;
            MaximumCountPerLeg    = maximumCountPerLeg;
            _positionEnumerator   = positionEnumerator;
            _definitionEnumerator = definitionEnumerator;
            MaximumSolutionCount  = maximumSolutionCount;
        }
Example #3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="OptionStrategyMatcherOptions"/> class, providing
        /// options that control the behavior of the <see cref="OptionStrategyMatcher"/>
        /// </summary>
        public OptionStrategyMatcherOptions(
            IReadOnlyList <OptionStrategyDefinition> definitions,
            IReadOnlyList <int> maximumCountPerLeg,
            TimeSpan maximumDuration = default(TimeSpan),
            int maximumSolutionCount = 100,
            IOptionStrategyDefinitionEnumerator definitionEnumerator = null,
            IOptionStrategyMatchObjectiveFunction objectiveFunction  = null,
            IOptionPositionCollectionEnumerator positionEnumerator   = null
            )
        {
            if (maximumDuration == default(TimeSpan))
            {
                maximumDuration = Time.OneMinute;
            }

            if (definitionEnumerator == null)
            {
                definitionEnumerator = new IdentityOptionStrategyDefinitionEnumerator();
            }

            if (objectiveFunction == null)
            {
                objectiveFunction = new UnmatchedPositionCountOptionStrategyMatchObjectiveFunction();
            }

            if (positionEnumerator == null)
            {
                positionEnumerator = new DefaultOptionPositionCollectionEnumerator();
            }

            _definitions          = definitions;
            MaximumDuration       = maximumDuration;
            ObjectiveFunction     = objectiveFunction;
            MaximumCountPerLeg    = maximumCountPerLeg;
            _positionEnumerator   = positionEnumerator;
            _definitionEnumerator = definitionEnumerator;
            MaximumSolutionCount  = maximumSolutionCount;
        }