public PortfolioData GetPortfolioData(string portfolioName, List <Trade> allTrades) { List <string> distinctTickers = allTrades.Select(t => t.Ticker).Distinct().ToList(); PortfolioData userPortfolio = new PortfolioData(portfolioName); foreach (string ticker in distinctTickers) { PositionFormulas position = new PositionFormulas(ticker); foreach (Trade trade in allTrades) { if (trade.Ticker == ticker) { position.AddTransaction(trade); } } List <SecurityPrices> marketPrices = _repo.GetSecurityPrices(ticker); DataFrame marketPricesFrame = CreatePriceTable(marketPrices); position.CalculateDailyValuation(marketPricesFrame); userPortfolio.AddPositon(position); } return(userPortfolio); }