public static decimal CalculateIRR(this IReadOnlyPortfolio portfolio, DateRange dateRange)
        {
            // Get the initial portfolio value
            var initialHoldings      = portfolio.Holdings.All(dateRange.FromDate);
            var initialHoldingsValue = initialHoldings.Sum(x => x.Value(dateRange.FromDate));
            var initialCashBalance   = portfolio.CashAccount.Balance(dateRange.FromDate);
            var initialValue         = initialHoldingsValue + initialCashBalance;

            // Get the final portfolio value
            var finalHoldings      = portfolio.Holdings.All(dateRange.ToDate);
            var finalHoldingsValue = finalHoldings.Sum(x => x.Value(dateRange.ToDate));
            var finalCashBalance   = portfolio.CashAccount.Balance(dateRange.ToDate);
            var finalValue         = finalHoldingsValue + finalCashBalance;

            // Generate list of cashFlows
            var cashFlows        = new CashFlows();
            var transactionRange = new DateRange(dateRange.FromDate.AddDays(1), dateRange.ToDate);
            var transactions     = portfolio.CashAccount.Transactions.InDateRange(transactionRange)
                                   .Where(x => (x.Type == BankAccountTransactionType.Deposit) || ((x.Type == BankAccountTransactionType.Withdrawl)));

            foreach (var transaction in transactions)
            {
                cashFlows.Add(transaction.Date, -transaction.Amount);
            }


            var irr = IrrCalculator.CalculateIrr(dateRange.FromDate, initialValue, dateRange.ToDate, finalValue, cashFlows);

            return((decimal)Math.Round(irr, 5));
        }
 public PortfolioValueService(IReadOnlyPortfolio portfolio, ITradingCalendar tradingCalaedar)
 {
     _Portfolio       = portfolio;
     _TradingCalendar = tradingCalaedar;
 }
Example #3
0
 public PortfolioOwnerAuthorizationHandler(IPortfolioAccessor portfolioAccessor)
 {
     _Portfolio = portfolioAccessor.ReadOnlyPortfolio;
 }
Example #4
0
 public CashAccountService(IReadOnlyPortfolio portfolio)
 {
     _Portfolio = portfolio;
 }
Example #5
0
 public PortfolioIncomeService(IReadOnlyPortfolio portfolio)
 {
     _Portfolio = portfolio;
 }
Example #6
0
 public PortfolioHoldingService(IReadOnlyPortfolio portfolio)
 {
     _Portfolio = portfolio;
 }
 public PortfolioCorporateActionsService(IReadOnlyPortfolio portfolio, IStockResolver stockResolver)
 {
     _Portfolio     = portfolio;
     _StockResolver = stockResolver;
 }
Example #8
0
 public PortfolioSummaryService(IReadOnlyPortfolio portfolio)
 {
     _Portfolio = portfolio;
 }
 public PortfolioCgtLiabilityService(IReadOnlyPortfolio portfolio)
 {
     _Portfolio = portfolio;
 }
 public PortfolioPropertiesService(IReadOnlyPortfolio portfolio)
 {
     _Portfolio = portfolio;
 }
 public PortfolioPerformanceService(IReadOnlyPortfolio portfolio)
 {
     _Portfolio = portfolio;
 }
Example #12
0
 public PortfolioCapitalGainsService(IReadOnlyPortfolio portfolio)
 {
     _Portfolio = portfolio;
 }