Exemple #1
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);
        }
        private void EnrichReportingModelWithStatistics()
        {
            var portfolioValuationHistory = new PortfolioValuationHistory(_portfolioValuationSummary.MetaData.PortfolioName, (double)_portfolioValuationSummary.MetaData.InitialBalance);
            IEnumerable <IValuationData> valuationData = _portfolioValuationSummary.PortfolioValuationData.Select(x => new ValuationData(x.ValuationDate, (double)x.PortfolioValuation));

            valuationData.ToList().ForEach(portfolioValuationHistory.AddValuationData);

            IPortfolioStatisticsData statisticsCalculationData = _statisticsCalculationManager.GetPortfolioStatisticsData(portfolioValuationHistory);

            _logger.Information($"Portfolio run from {statisticsCalculationData.StartDate.ToString("yyyy-MM-dd")} to {statisticsCalculationData.EndDate.ToString("yyyy-MM-dd")}");
            _logger.Information($"Portfolio name: {statisticsCalculationData.PortfolioIdentifier}");
            _logger.Information(string.Format("Initial valuation: {0:0.00}", statisticsCalculationData.InitialValuation));
            _logger.Information(string.Format("Final valuation: {0:0.00}", statisticsCalculationData.FinalValuation));
            _logger.Information(string.Format("Portfolio Total Returns: {0:0.00} %", statisticsCalculationData.TotalReturns));
            _logger.Information(string.Format("Portfolio Standard Deviation: {0:0.00} %", statisticsCalculationData.DailyReturnsVolatility));
            _logger.Information(string.Format("Returns to Volatility ratio: {0:0.00}", statisticsCalculationData.ReturnsToVolatilityRatio));

            PortfolioRunStatistics portfolioStatistics = _xmlModelFactory.GetPortfolioRunStatistics(statisticsCalculationData);

            _portfolioValuationSummary.RunStatistics = portfolioStatistics;
        }