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; }
public PortfolioOwnerAuthorizationHandler(IPortfolioAccessor portfolioAccessor) { _Portfolio = portfolioAccessor.ReadOnlyPortfolio; }
public CashAccountService(IReadOnlyPortfolio portfolio) { _Portfolio = portfolio; }
public PortfolioIncomeService(IReadOnlyPortfolio portfolio) { _Portfolio = portfolio; }
public PortfolioHoldingService(IReadOnlyPortfolio portfolio) { _Portfolio = portfolio; }
public PortfolioCorporateActionsService(IReadOnlyPortfolio portfolio, IStockResolver stockResolver) { _Portfolio = portfolio; _StockResolver = stockResolver; }
public PortfolioSummaryService(IReadOnlyPortfolio portfolio) { _Portfolio = portfolio; }
public PortfolioCgtLiabilityService(IReadOnlyPortfolio portfolio) { _Portfolio = portfolio; }
public PortfolioPropertiesService(IReadOnlyPortfolio portfolio) { _Portfolio = portfolio; }
public PortfolioPerformanceService(IReadOnlyPortfolio portfolio) { _Portfolio = portfolio; }
public PortfolioCapitalGainsService(IReadOnlyPortfolio portfolio) { _Portfolio = portfolio; }