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)); }
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); }
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); }
public void CreateSimulatorWhenIdIsWhiteSpaceShouldThrowArgumentNullException() { var factory = new SimulatorFactory(CreateDummySimulatorSettingsOptions()); Action target = () => factory.CreateSimulator(" "); Assert.ThrowsException <ArgumentNullException>(target); }
public RatingService( IMarketDataCache marketDataCache, SimulatorFactory simulatorFactory, IInvestorProvider investorProvider) { _marketDataCache = marketDataCache; _simulatorFactory = simulatorFactory; _investorProvider = investorProvider; }
public void Start(PageModel pageModel) { if (!ValidatePageModel(pageModel)) { return; } _simulator = SimulatorFactory.GetSimulator(SpiderLogging, spiderSimulator, pageModel); _simulator.TaskCompletedEvent += Simulator_TaskCompletedEvent; _simulator.Run(); }
public void CreateSimulatorWhenIdIsValidShouldReturnSimulatorWithExpectedId() { var factory = new SimulatorFactory(CreateDummySimulatorSettingsOptions()); const string deviceId = "123456"; var simulator = factory.CreateSimulator(deviceId); Assert.AreEqual(deviceId, simulator.Id); }
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; }