Beispiel #1
0
        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));
        }
Beispiel #2
0
        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);
        }