Example #1
0
        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));
        }
Example #2
0
        public PortfolioValuationSummaryDataModel GetValuationSummaryDataModel()
        {
            PortfolioMetaData portfolioMetaData = GetPortfolioMetaData();
            var dataModel = new PortfolioValuationSummaryDataModel {
                MetaData = portfolioMetaData
            };

            return(dataModel);
        }
Example #3
0
        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);
        }
Example #4
0
        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.");
        }