private void ChartDataUIEventManager_NewFileSelectedEvent(object sender, string reportXmlFile) { PortfolioValuationSummaryDataModel portfolioValuationSummaryDataModel = _portfolioModelDeserialiser.GetReportDataModel(reportXmlFile); var holdingsValuation = new Dictionary <string, List <IChartDataPoint <DateTime> > >(); foreach (PortfolioValuationDataReportingModel reportingPoint in portfolioValuationSummaryDataModel.PortfolioValuationData) { foreach (HoldingValuationDataReportingModel holdingsDataPoint in reportingPoint.HoldingValuations) { if (!holdingsValuation.ContainsKey(holdingsDataPoint.StockSymbol)) { holdingsValuation.Add(holdingsDataPoint.StockSymbol, new List <IChartDataPoint <DateTime> >()); } holdingsValuation[holdingsDataPoint.StockSymbol].Add(new ChartDataPoint <DateTime>(reportingPoint.ValuationDate, holdingsDataPoint.HoldingValue)); } } IEnumerable <ChartDataSeries <DateTime> > holdingsDataSeries = holdingsValuation.Select(x => { return(new ChartDataSeries <DateTime>(x.Key, x.Value, 1)); }); _chartDataSeriesCollection.Clear(); _chartDataSeriesCollection.Add(GetPortfolioValuation(portfolioValuationSummaryDataModel)); _chartDataSeriesCollection.AddRange(holdingsDataSeries); IEnumerable <DateTime> valuationDates = portfolioValuationSummaryDataModel.PortfolioValuationData.Select(x => x.ValuationDate); _chartDataSeriesCollection.ForEach(x => FillNa(x, valuationDates, 0)); }
public PortfolioValuationSummaryDataModel GetValuationSummaryDataModel() { PortfolioMetaData portfolioMetaData = GetPortfolioMetaData(); var dataModel = new PortfolioValuationSummaryDataModel { MetaData = portfolioMetaData }; return(dataModel); }
private static IChartDataSeries <DateTime> GetPortfolioValuation(PortfolioValuationSummaryDataModel portfolioValuationSummaryDataModel) { IEnumerable <ChartDataPoint <DateTime> > portfolioDataPoints = portfolioValuationSummaryDataModel.PortfolioValuationData.Select(x => { return(new ChartDataPoint <DateTime>(x.ValuationDate, x.PortfolioValuation)); }); var portfolioValuationSeries = new ChartDataSeries <DateTime>("Portfolio Valuation", portfolioDataPoints, 3); return(portfolioValuationSeries); }
public IPortfolioValuationHistory GetPortfolioValuationHistory(string filePath) { PortfolioValuationSummaryDataModel portfolioModel = _portfolioModelDeserialiser.GetReportDataModel(filePath); var portfolioValuationHistory = new PortfolioValuationHistory(portfolioModel.MetaData.PortfolioName, (double)portfolioModel.MetaData.InitialBalance); IEnumerable <IValuationData> valuationData = portfolioModel.PortfolioValuationData.Select(x => new ValuationData(x.ValuationDate, (double)x.PortfolioValuation)); valuationData.ToList().ForEach(portfolioValuationHistory.AddValuationData); return(portfolioValuationHistory); }
public void Write(PortfolioValuationSummaryDataModel portfolioValuationSummary) { _logger.Information("PortfolioValuationSummaryXmlWriter: Writing to summary file."); string fileNameWithPath = Path.Combine(_outputDirectory, _hashingFilenameGenerator.GetFilename()); _logger.Information($"PortfolioValuationSummaryXmlWriter: Writing to filepath: {fileNameWithPath}"); using (FileStream file = File.Create(fileNameWithPath)) { var writer = new XmlSerializer(portfolioValuationSummary.GetType()); writer.Serialize(file, portfolioValuationSummary); } }
public PortfolioValuationReporter(ILogger logger, INotificationManager notificationManager, IStatisticsCalculationManager statisticsCalculationManager, ISimulationTypeManager simulationTypeManager, IXmlModelFactory xmlModelFactory, IPortfolioValuationSummaryReportWriter xmlWriter) { _logger = logger; _statisticsCalculationManager = statisticsCalculationManager; _notificationManager = notificationManager; _simulationTypeManager = simulationTypeManager; _xmlModelFactory = xmlModelFactory; _portfolioValuationSummary = _xmlModelFactory.GetValuationSummaryDataModel(); _xmlWriter = xmlWriter; _logger.Information("HoldingsReporter: Instantiation successful."); }