Пример #1
0
        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
Пример #2
0
        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);
        }
Пример #3
0
        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
Пример #4
0
        }//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);
        }