Beispiel #1
0
        protected static IEnumerable <SimulationState> SimulateStrategy(
            IEnumerable <MarketData> data,
            Func <StrategyFactory, IStrategy> createStrategyFunc,
            bool initialiseRatingService = false)
        {
            var investorProvider = CreateInvestorProvider();

            var marketDataCache = CreateMarketDataCache(data);
            var simulationCache = new SimulationCache();

            var simulatorFactor = new SimulatorFactory(marketDataCache, simulationCache);
            var simulator       = simulatorFactor.Create <BacktestingSimulator>();
            var ratingService   = new RatingService(
                marketDataCache,
                simulatorFactor,
                investorProvider);
            var strategyFactory = CreateStrategyFactory(
                marketDataCache,
                simulationCache,
                investorProvider,
                ratingService);
            var strategy = createStrategyFunc(strategyFactory);

            if (initialiseRatingService)
            {
                ratingService.RateMarketData();
            }

            return(simulator.Evaluate(strategy, investorProvider.Current));
        }
Beispiel #2
0
        public void WeightedStrategyTest()
        {
            var data              = CreateMarketData();
            var investorProvider  = CreateInvestorProvider();
            var marketDataCache   = CreateMarketDataCache(data);
            var simulationCache   = new SimulationCache();
            var simulationFactory = new SimulatorFactory(marketDataCache, simulationCache);
            var ratingService     = new RatingService(marketDataCache, simulationFactory, investorProvider);
            var strategyFactory   = CreateStrategyFactory(marketDataCache, simulationCache, investorProvider, ratingService);
            var deltaStrategy     = strategyFactory.Create(new DeltaParameters());
            var volumeStrategy    = strategyFactory.Create(new VolumeParameters());
            var _ = simulationFactory.Create <BacktestingSimulator>()
                    .Evaluate(deltaStrategy, investorProvider.Current).ToArray();
            var __ = simulationFactory.Create <BacktestingSimulator>()
                     .Evaluate(volumeStrategy, investorProvider.Current).ToArray();

            var parameters = new WeightedParameters
            {
                Weights = new Dictionary <IStrategy, double>
                {
                    { deltaStrategy, 0d },
                    { volumeStrategy, 0d }
                }
            };
            var strategy = strategyFactory.Create(parameters);
            var target   = simulationFactory.Create <BacktestingSimulator>()
                           .Evaluate(strategy, investorProvider.Current);

            var actual = ToApprovedString(target);

            Approvals.Verify(actual);
        }
Beispiel #3
0
        protected static Dictionary <string, SimulationState> SimulateStrategy(
            IEnumerable <MarketData> data,
            IParameters[] parameters)
        {
            var investorProvider = CreateInvestorProvider();

            var marketDataCache = CreateMarketDataCache(data);
            var simulationCache = new SimulationCache();

            var simulatorFactor = new SimulatorFactory(marketDataCache, simulationCache);
            var simulator       = simulatorFactor.Create <BacktestingSimulator>();
            var ratingService   = new RatingService(marketDataCache, simulatorFactor, investorProvider);
            var strategyFactory = CreateStrategyFactory(marketDataCache, simulationCache, investorProvider, ratingService);

            var results = new Dictionary <string, SimulationState>();

            foreach (var p in parameters)
            {
                var strategy = strategyFactory.Create(p);
                var state    = simulator.Evaluate(strategy, investorProvider.Current);
                results[strategy.StrategyType.GetDescription()] = state.Last();
            }

            return(results);
        }
Beispiel #4
0
        public void CreateSimulatorWhenIdIsWhiteSpaceShouldThrowArgumentNullException()
        {
            var factory = new SimulatorFactory(CreateDummySimulatorSettingsOptions());

            Action target = () => factory.CreateSimulator(" ");

            Assert.ThrowsException <ArgumentNullException>(target);
        }
Beispiel #5
0
 public RatingService(
     IMarketDataCache marketDataCache,
     SimulatorFactory simulatorFactory,
     IInvestorProvider investorProvider)
 {
     _marketDataCache  = marketDataCache;
     _simulatorFactory = simulatorFactory;
     _investorProvider = investorProvider;
 }
Beispiel #6
0
 public void Start(PageModel pageModel)
 {
     if (!ValidatePageModel(pageModel))
     {
         return;
     }
     _simulator = SimulatorFactory.GetSimulator(SpiderLogging, spiderSimulator, pageModel);
     _simulator.TaskCompletedEvent += Simulator_TaskCompletedEvent;
     _simulator.Run();
 }
Beispiel #7
0
        public void CreateSimulatorWhenIdIsValidShouldReturnSimulatorWithExpectedId()
        {
            var factory = new SimulatorFactory(CreateDummySimulatorSettingsOptions());

            const string deviceId = "123456";

            var simulator = factory.CreateSimulator(deviceId);

            Assert.AreEqual(deviceId, simulator.Id);
        }
Beispiel #8
0
        public void Setup()
        {
            ConfigurationManager.AppSettings["BacktestingDate"] = "2010-07-01";
            ConfigurationManager.AppSettings["CacheSize"]       = "2000";
            ConfigurationManager.AppSettings["DataPath"]        = "MarketData.csv";
            ConfigurationManager.AppSettings["RelativePath"]    = @"../../../";

            var marketData      = CreateMarketData();
            var marketDataCache = CreateMarketDataCache(marketData);

            var investor = new Investor {
                DailyFunds = 10, OrderDelayDays = 3
            };
            var investorProvider = CreateInvestorProvider();

            var simulationCache = new SimulationCache();

            var simulationFactory = new SimulatorFactory(marketDataCache, simulationCache);
            var ratingService     = new RatingService(
                marketDataCache,
                simulationFactory,
                investorProvider);


            var strategyFactory = CreateStrategyFactory(
                marketDataCache,
                simulationCache,
                investorProvider,
                ratingService);

            var marketDataRepository        = new Mock <IRepository <MarketData> >();
            var simulationResultsRepository = new Mock <IRepository <SimulationResult> >();

            _target = new ResultsProvider(
                marketDataCache,
                marketDataRepository.Object,
                ratingService,
                simulationResultsRepository.Object);

            _target.Initialise();

            var strategy        = strategyFactory.Create(new HolidayEffectParameters());
            var stateJson       = File.ReadAllText(@"HolidayEffectSimulationState.json");
            var simulationState = JsonConvert.DeserializeObject <SimulationState[]>(stateJson);
            var resultsToAdd    = new ConcurrentDictionary <IStrategy, SimulationState[]>();

            resultsToAdd.TryAdd(strategy, simulationState);

            _target.AddResults(investor, resultsToAdd);
        }
 public AnalysisService(
     IMarketDataCache marketDataCache,
     IResultsProvider resultsProvider,
     StrategyProvider strategyProvider,
     IInvestorProvider investorProvider,
     SimulatorFactory simulatorFactory,
     MarketDataProvider marketDataProvider,
     ICommunicationService communicationService)
 {
     _simulatorFactory     = simulatorFactory;
     _marketDataCache      = marketDataCache;
     _resultsProvider      = resultsProvider;
     _strategyProvider     = strategyProvider;
     _investorProvider     = investorProvider;
     _marketDataProvider   = marketDataProvider;
     _communicationService = communicationService;
 }