Beispiel #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="AlphaManager"/> class
        /// </summary>
        /// <param name="securityValuesProvider">Providers security values, such as price/volatility</param>
        /// <param name="scoreFunctionProvider">Provides scoring functions by alpha type/score type</param>
        /// <param name="extraAnalysisPeriodRatio">Ratio of the alpha period to keep the analysis open</param>
        public AlphaManager(ISecurityValuesProvider securityValuesProvider, IAlphaScoreFunctionProvider scoreFunctionProvider, double extraAnalysisPeriodRatio)
        {
            if (extraAnalysisPeriodRatio < 0)
            {
                throw new ArgumentOutOfRangeException(nameof(extraAnalysisPeriodRatio), "extraAnalysisPeriodRatio must be greater than or equal to zero.");
            }

            _scoreFunctionProvider    = scoreFunctionProvider;
            _securityValuesProvider   = securityValuesProvider;
            _extraAnalysisPeriodRatio = extraAnalysisPeriodRatio;

            _openAlphaContexts             = new ConcurrentDictionary <Guid, AlphaAnalysisContext>();
            _closedAlphaContexts           = new ConcurrentDictionary <Guid, AlphaAnalysisContext>();
            _updatedAlphaContextsByAlphaId = new ConcurrentDictionary <Guid, AlphaAnalysisContext>();
        }
Beispiel #2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="AlphaManager"/> class
        /// </summary>
        /// <param name="scoreFunctionProvider">Provides scoring functions by alpha type/score type</param>
        /// <param name="extraAnalysisPeriodRatio">Ratio of the alpha period to keep the analysis open</param>
        /// <param name="extensions">Extensions used to perform tasks at certain events</param>
        public AlphaManager(IAlphaScoreFunctionProvider scoreFunctionProvider, double extraAnalysisPeriodRatio, params IAlphaManagerExtension[] extensions)
        {
            if (extraAnalysisPeriodRatio < 0)
            {
                throw new ArgumentOutOfRangeException(nameof(extraAnalysisPeriodRatio), "extraAnalysisPeriodRatio must be greater than or equal to zero.");
            }

            _scoreFunctionProvider    = scoreFunctionProvider;
            _extraAnalysisPeriodRatio = extraAnalysisPeriodRatio;
            _extensions = extensions?.ToList() ?? new List <IAlphaManagerExtension>();

            _openAlphaContexts    = new HashSet <AlphaAnalysisContext>();
            _updatedAlphaContexts = new HashSet <AlphaAnalysisContext>();
            _closedAlphaContexts  = new ConcurrentDictionary <Guid, AlphaAnalysisContext>();
        }