public RampingRuleBreach(
     TimeSpan window,
     ITradePosition trades,
     FinancialInstrument security,
     string ruleParameterId,
     string systemOperationId,
     string correlationId,
     IFactorValue factorValue,
     IRampingStrategySummaryPanel summaryPanel,
     IRampingRuleEquitiesParameters parameters,
     string description,
     string caseTitle,
     DateTime universeDateTime)
 {
     this.Window            = window;
     this.Trades            = trades;
     this.Security          = security;
     this.RuleParameterId   = ruleParameterId ?? string.Empty;
     this.SystemOperationId = systemOperationId ?? string.Empty;
     this.CorrelationId     = correlationId ?? string.Empty;
     this.FactorValue       = factorValue;
     this.SummaryPanel      = summaryPanel;
     this.RuleParameters    = parameters;
     this.Description       = description ?? string.Empty;
     this.CaseTitle         = caseTitle ?? string.Empty;
     this.UniverseDateTime  = universeDateTime;
 }
Beispiel #2
0
        /// <summary>
        /// The decorate with filters.
        /// </summary>
        /// <param name="operationContext">
        /// The operation context.
        /// </param>
        /// <param name="parameter">
        /// The parameter.
        /// </param>
        /// <param name="rampingRule">
        /// The ramping rule.
        /// </param>
        /// <param name="universeDataRequestsSubscriber">
        /// The universe data requests subscriber.
        /// </param>
        /// <param name="processOperationRunRuleContext">
        /// The process operation run rule context.
        /// </param>
        /// <param name="ruleRunMode">
        /// The rule run mode.
        /// </param>
        /// <returns>
        /// The <see cref="IUniverseRule"/>.
        /// </returns>
        private IUniverseRule DecorateWithFilters(
            ISystemProcessOperationContext operationContext,
            IRampingRuleEquitiesParameters parameter,
            IUniverseRule rampingRule,
            IUniverseDataRequestsSubscriber universeDataRequestsSubscriber,
            ISystemProcessOperationRunRuleContext processOperationRunRuleContext,
            RuleRunMode ruleRunMode)
        {
            if (parameter.HasInternalFilters() || parameter.HasReferenceDataFilters() || parameter.HasMarketCapFilters() ||
                parameter.HasVenueVolumeFilters())
            {
                this.logger.LogInformation($"parameters had filters. Inserting filtered universe in {operationContext.Id} OpCtx");
                var filteredUniverse = this.universeFilterFactory.Build(
                    rampingRule,
                    parameter.Accounts,
                    parameter.Traders,
                    parameter.Markets,
                    parameter.Funds,
                    parameter.Strategies,
                    parameter.Sectors,
                    parameter.Industries,
                    parameter.Regions,
                    parameter.Countries,
                    parameter.MarketCapFilter,
                    ruleRunMode,
                    "Ramping Equity",
                    universeDataRequestsSubscriber,
                    processOperationRunRuleContext);

                var decoratedFilter = filteredUniverse;

                if (parameter.HasVenueVolumeFilters())
                {
                    decoratedFilter = this.decoratorFilterFactory.Build(
                        parameter.Windows,
                        filteredUniverse,
                        parameter.VenueVolumeFilter,
                        processOperationRunRuleContext,
                        universeDataRequestsSubscriber,
                        this.DataSourceForWindow(parameter.Windows),
                        ruleRunMode);
                }

                decoratedFilter.Subscribe(rampingRule);

                return(decoratedFilter);
            }

            return(rampingRule);
        }
Beispiel #3
0
 public IRampingRule Build(
     IRampingRuleEquitiesParameters equitiesParameters,
     ISystemProcessOperationRunRuleContext ruleCtx,
     IUniverseAlertStream alertStream,
     RuleRunMode runMode,
     IUniverseDataRequestsSubscriber dataRequestSubscriber)
 {
     return(new RampingRule(
                equitiesParameters,
                alertStream,
                ruleCtx,
                this._equityFactory,
                this._fixedIncomeFactory,
                this._orderFilterService,
                runMode,
                this._rampingAnalyser,
                this._tradingHoursService,
                dataRequestSubscriber,
                this._logger,
                this._tradingHistoryLogger));
 }
Beispiel #4
0
        /// <summary>
        /// The subscribe parameter to universe.
        /// </summary>
        /// <param name="execution">
        /// The execution.
        /// </param>
        /// <param name="operationContext">
        /// The operation context.
        /// </param>
        /// <param name="alertStream">
        /// The alert stream.
        /// </param>
        /// <param name="parameter">
        /// The parameter.
        /// </param>
        /// <param name="dataRequestSubscriber">
        /// The data request subscriber.
        /// </param>
        /// <returns>
        /// The <see cref="IUniverseRule"/>.
        /// </returns>
        private IUniverseRule SubscribeParameterToUniverse(
            ScheduledExecution execution,
            ISystemProcessOperationContext operationContext,
            IUniverseAlertStream alertStream,
            IRampingRuleEquitiesParameters parameter,
            IUniverseDataRequestsSubscriber dataRequestSubscriber)
        {
            var ruleCtx = operationContext.CreateAndStartRuleRunContext(
                Rules.Ramping.GetDescription(),
                EquityRuleRampingFactory.Version,
                parameter.Id,
                (int)Rules.Ramping,
                execution.IsBackTest,
                execution.TimeSeriesInitiation.DateTime,
                execution.TimeSeriesTermination.DateTime,
                execution.CorrelationId,
                execution.IsForceRerun);

            var runMode     = execution.IsForceRerun ? RuleRunMode.ForceRun : RuleRunMode.ValidationRun;
            var rampingRule = this.equityRuleRampingFactory.Build(
                parameter,
                ruleCtx,
                alertStream,
                runMode,
                dataRequestSubscriber);
            var rampingRuleOrgFactors = this.brokerServiceFactory.Build(
                rampingRule,
                parameter.Factors,
                parameter.AggregateNonFactorableIntoOwnCategory);
            var rampingRuleFiltered = this.DecorateWithFilters(
                operationContext,
                parameter,
                rampingRuleOrgFactors,
                dataRequestSubscriber,
                ruleCtx,
                runMode);

            return(rampingRuleFiltered);
        }
Beispiel #5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="RampingRule"/> class.
 /// </summary>
 /// <param name="rampingParameters">
 /// The ramping parameters.
 /// </param>
 /// <param name="alertStream">
 /// The alert stream.
 /// </param>
 /// <param name="ruleContext">
 /// The rule context.
 /// </param>
 /// <param name="equityFactory">
 /// The factory.
 /// </param>
 /// <param name="fixedIncomeFactory">
 /// The factory.
 /// </param>
 /// <param name="orderFilter">
 /// The order filter.
 /// </param>
 /// <param name="runMode">
 /// The run mode.
 /// </param>
 /// <param name="rampingAnalyzer">
 /// The ramping analyzer.
 /// </param>
 /// <param name="tradingHoursService">
 /// The trading hours service.
 /// </param>
 /// <param name="dataRequestSubscriber">
 /// The data request subscriber.
 /// </param>
 /// <param name="logger">
 /// The logger.
 /// </param>
 /// <param name="tradingStackLogger">
 /// The trading stack logger.
 /// </param>
 public RampingRule(
     IRampingRuleEquitiesParameters rampingParameters,
     IUniverseAlertStream alertStream,
     ISystemProcessOperationRunRuleContext ruleContext,
     IUniverseEquityMarketCacheFactory equityFactory,
     IUniverseFixedIncomeMarketCacheFactory fixedIncomeFactory,
     IUniverseOrderFilter orderFilter,
     RuleRunMode runMode,
     IRampingAnalyser rampingAnalyzer,
     IMarketTradingHoursService tradingHoursService,
     IUniverseDataRequestsSubscriber dataRequestSubscriber,
     ILogger logger,
     ILogger <TradingHistoryStack> tradingStackLogger)
     : base(
         rampingParameters?.Windows?.BackwardWindowSize ?? TimeSpan.FromDays(7),
         TimeSpan.FromDays(30),
         rampingParameters?.Windows?.FutureWindowSize ?? TimeSpan.Zero,
         Domain.Surveillance.Scheduling.Rules.Ramping,
         EquityRuleRampingFactory.Version,
         "Ramping Rule",
         ruleContext,
         equityFactory,
         fixedIncomeFactory,
         runMode,
         logger,
         tradingStackLogger)
 {
     this.rampingParameters     = rampingParameters ?? throw new ArgumentNullException(nameof(rampingParameters));
     this.alertStream           = alertStream ?? throw new ArgumentNullException(nameof(alertStream));
     this.ruleContext           = ruleContext ?? throw new ArgumentNullException(nameof(ruleContext));
     this.orderFilter           = orderFilter ?? throw new ArgumentNullException(nameof(orderFilter));
     this.rampingAnalyzer       = rampingAnalyzer ?? throw new ArgumentNullException(nameof(rampingAnalyzer));
     this.logger                = logger ?? throw new ArgumentNullException(nameof(logger));
     this.tradingHoursService   = tradingHoursService ?? throw new ArgumentNullException(nameof(tradingHoursService));
     this.dataRequestSubscriber = dataRequestSubscriber ?? throw new ArgumentNullException(nameof(dataRequestSubscriber));
 }