public BackTestingViewModel GetBacktestingPortfolio(User user, int id) { // BacktestingPortfolioViewModel vmP = new BacktestingPortfolioViewModel(); // vmP = _manageBacktestingPortfolios.GetFullPortfolio(id, user.Currency.CurrencyId, user.Licence.Stocks.Select(t => t.id).ToList()); BackTestingViewModel vmB = new BackTestingViewModel(); var stocks = user.Licence.Stocks.Select(t => t.id).ToList(); _manageBacktestingPortfolios.SelectedPortfolio.openExistingPortfolio(id, true); cPort = _manageBacktestingPortfolios.SelectedPortfolio; //if (!_manageBacktestingPortfolios.SelectedPortfolio.instantiatePortfolioVariables(true, cPort.Details.CalcCurrency, stocks, null)) if (!_manageBacktestingPortfolios.SelectedPortfolio.instantiateVariablesForPortfolio(false, cPort.Details.CalcCurrency, stocks, null)) { vmB.Messages.Add(new Models.App.Message { LogLevel = Models.App.LogLevel.Error, Text = "Error Get Portfolio Data. Please Contanct System Administrator" }); return(vmB); } //_backtestingHandler.setBacktestingPortfolio(_manageBacktestingPortfolios.SelectedPortfolio, _manageBacktestingPortfolios.SelectedPortfolio.Details.DateEdited, _manageBacktestingPortfolios.SelectedPortfolio.Details.LastOptimization, _manageBacktestingPortfolios.SelectedPortfolio.Details.Equity); //vmB = _backtestingHandler.getBacktestingPortfolio(_manageBacktestingPortfolios.SelectedPortfolio, _manageBacktestingPortfolios.SelectedPortfolio.Details.DateEdited, _manageBacktestingPortfolios.SelectedPortfolio.Details.LastOptimization, _manageBacktestingPortfolios.SelectedPortfolio.Details.Equity); _backtestingHandler.setBacktestingPortfolio(_manageBacktestingPortfolios.SelectedPortfolio, (DateTime)_manageBacktestingPortfolios.SelectedPortfolio.Details.StartDate, (DateTime)_manageBacktestingPortfolios.SelectedPortfolio.Details.EndDate, _manageBacktestingPortfolios.SelectedPortfolio.Details.Equity); //vmB = _backtestingHandler.getBacktestingPortfolio(_manageBacktestingPortfolios.SelectedPortfolio, (DateTime)_manageBacktestingPortfolios.SelectedPortfolio.Details.StartDate, (DateTime)_manageBacktestingPortfolios.SelectedPortfolio.Details.EndDate, _manageBacktestingPortfolios.SelectedPortfolio.Details.Equity); vmB = _backtestingHandler.getNewBacktestingPortfolio(_manageBacktestingPortfolios.SelectedPortfolio, (DateTime)_manageBacktestingPortfolios.SelectedPortfolio.Details.StartDate, (DateTime)_manageBacktestingPortfolios.SelectedPortfolio.Details.EndDate, _manageBacktestingPortfolios.SelectedPortfolio.Details.Equity); return(vmB); }//GetBacktestingPortfolio
public BackTestingViewModel GetPortfolioBackTesting(User user, BackTestingQuery query) { BackTestingViewModel vm = new BackTestingViewModel(); //cPort.openExistingPortfolio(query.PortID); //if (!cPort.instantiatePortfolioVariables(true, cPort.Details.CalcCurrency, user.Licence.Stocks.Select(t=>t.id).ToList(), cPort.Details.SecurityData.Select(x=>x.idSecurity).ToList())) // vm.Messages.Add(new Models.App.Message { LogLevel = Models.App.LogLevel.Error, Text = "Error Get Portfolio Data. Please Contanct System Administrator" }); //else // vm = backTesingCalc.calculateBacktesting(cPort, query.StartDate, query.EndDate, query.Equity, query.BenchMarkID); return(vm); }
public BackTestingViewModel calculateBacktesting(User user, Models.Command.CreatePortfolioCommand cmd, DateTime dtStartDate, DateTime dtEndDate, List <string> becnhMarkIDs) { // Service which creates a new backtesting portfolio + calculates proper backtesting values BackTestingViewModel vmBacktesting = new BackTestingViewModel(); // Set up portfolio int idPortfolio = _manageBacktestingPortfolios.CreateDefaultPortfolio(user, dtStartDate, dtEndDate, cmd); _manageBacktestingPortfolios.SelectedPortfolio.openExistingPortfolio(idPortfolio, true); _backtestingHandler.setBacktestingPortfolio(_manageBacktestingPortfolios.SelectedPortfolio, dtStartDate, dtEndDate, cmd.Equity); cPort = _manageBacktestingPortfolios.SelectedPortfolio; // Set portfolio data List <int> colExchanges = (cmd.Exchanges != null && cmd.Exchanges.Count > 0 && cmd.Exchanges.Count <= user.Licence.Stocks.Count) ? cmd.Exchanges : user.Licence.Stocks.Select(t => t.id).ToList(); if (!_manageBacktestingPortfolios.SelectedPortfolio.instantiateVariablesForPortfolio(true, cPort.Details.CalcCurrency, colExchanges, cmd.Securities)) { // Failed to get data vmBacktesting.Messages.Add(new Models.App.Message { LogLevel = Models.App.LogLevel.Error, Text = "Error Get Portfolio Data. Please Contanct System Administrator" }); return(vmBacktesting); } if (cmd.Securities.Count > 0) { _manageBacktestingPortfolios.SelectedPortfolio.ColHandler.ActiveSecs = getFilteredSecByCustomList(cmd); } else { _manageBacktestingPortfolios.SelectedPortfolio.ColHandler.ActiveSecs = getFilteredSecByExchangesAndRisk(colExchanges); } // Run calculation //vmBacktesting = _backtestingHandler.calculateBacktesting(_manageBacktestingPortfolios.SelectedPortfolio, dtStartDate, dtEndDate, cmd.Equity, becnhMarkIDs); vmBacktesting = _backtestingHandler.calculateNewBacktesting(_manageBacktestingPortfolios.SelectedPortfolio, dtStartDate, dtEndDate, cmd.Equity, becnhMarkIDs); // Save portfolio data // Create command to update portfolio + portfolio securities UpdatePortfolioCommand pc = new UpdatePortfolioCommand(); pc.CalcType = cmd.CalcType; pc.Equity = cmd.Equity; pc.PortID = _manageBacktestingPortfolios.SelectedPortfolio.Details.ID; pc.Risk = vmBacktesting.Portfolios[vmBacktesting.PortNumA].Risk; pc.Securities = vmBacktesting.Portfolios[vmBacktesting.PortNumA].Securities; _manageBacktestingPortfolios.UpdatePortfolio(pc, vmBacktesting); return(vmBacktesting); }//calculateBacktesting
}//CreateDefaultPortfolio public BaseViewModel UpdatePortfolio(UpdatePortfolioCommand cmd, BackTestingViewModel vmBack) { BaseViewModel vm = new BaseViewModel(); Entities.dbo.BacktestingPortfolio portEntity = null;; repository.Execute(session => { portEntity = session.Get <Entities.dbo.BacktestingPortfolio>(cmd.PortID); AutoMapper.Mapper.Map <BasePortfolioCommand, Entities.dbo.BacktestingPortfolio>(cmd, portEntity); portEntity.dCurrRisk = cmd.Risk; portEntity.iSecsNum = cmd.Securities.Count; portEntity.dCurrEquity = vmBack.Equity; }); var secList = AutoMapper.Mapper.Map <List <Entities.dbo.BacktestingPortfolioSecurities> >(cmd.Securities).Where(x => x.Securities.idSecurity != "0000").ToList(); repository.ExecuteTransaction(session => { session.Update(portEntity); }); DeletePortfolioSecurities(cmd.PortID); repository.ExecuteTransactionStateLess(session => { foreach (var item in secList) { try { item.idPortSec = Guid.NewGuid(); item.Portfolios = new Entities.dbo.BacktestingPortfolio { idPortfolio = cmd.PortID }; session.Insert(item); } catch (Exception e) { m_objErrorHandler.LogInfo(e); } } }, secList.Count); return(vm); }