private static void ReportPortfolio(string filePath) { var statisticsCalculationManager = _container.Resolve <IStatisticsCalculationManager>(); var portfolioValuationHistoryFactory = _container.Resolve <IPortfolioValuationHistoryFactory>(); IPortfolioValuationHistory portfolioValuationHistory = portfolioValuationHistoryFactory.GetPortfolioValuationHistory(filePath); 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)); }
public IPortfolioStatisticsData GetPortfolioStatisticsData(IPortfolioValuationHistory portfolioValuationHistory) { IEnumerable <double> portfolioValuationData = portfolioValuationHistory.ValuationData.Select(x => (x.Valuation)); IEnumerable <double> portfolioDailyReturnsData = GetPortfolioValuationDailyReturnsData(portfolioValuationData.ToList()); double standardDeviation = portfolioDailyReturnsData.StandardDeviation(); double portfolioReturn = GetTotalReturnAsPercentage_NoDividend(portfolioValuationData); double initialValuation = portfolioValuationHistory.InitialValuation; double finalValuation = portfolioValuationData.Last(); double returnsToVolatilityRatio = portfolioReturn / standardDeviation; var portfolioStatistics = new PortfolioStatisticsData(portfolioValuationHistory.PortfolioName, portfolioValuationHistory.StartDate, portfolioValuationHistory.EndDate, initialValuation, finalValuation, portfolioReturn, standardDeviation, returnsToVolatilityRatio); return(portfolioStatistics); }