Exemplo n.º 1
0
        private ISecurities getFilteredSecByExchangesAndRisk(OptimazationQuery query)
        {
            ISecurities newColl = new cSecurities(cPort);

            for (int i = 0; i < cPort.ColHandler.Securities.Count; i++)
            {
                //if (cPort.ColHandler.Securities[i].StdYield * Math.Sqrt(52) <= query.Risk && query.Exchanges.Contains(cPort.ColHandler.Securities[i].Properties.Market.ID))
                if (query.Exchanges.Contains(cPort.ColHandler.Securities[i].Properties.Market.ID))
                {
                    if (query.Risk > 0.14 || (query.Risk <= 0.14 && cPort.ColHandler.Securities[i].RatesClass.PriceReturns.Count > 105))
                    {
                        newColl.Add(cPort.ColHandler.Securities[i]);
                    }
                }
            }

            return(newColl);
        }
Exemplo n.º 2
0
        public OptimalPortoliosViewModel GetPortfolioOptimazation(User user, OptimazationQuery query)
        {
            OptimalPortoliosViewModel vm = new OptimalPortoliosViewModel();

            cPort.openExistingPortfolio(query.PortID, false);
            lock (lockObject)
            {
                var stocks = query.Exchanges != null && query.Exchanges.Count > 0 &&
                             query.Exchanges.Count <= user.Licence.Stocks.Count ? query.Exchanges : user.Licence.Stocks.Select(t => t.id).ToList();
                //if (!cPort.instantiatePortfolioVariables(true, cPort.Details.CalcCurrency, stocks , query.Securities))
                if (!cPort.instantiateVariablesForPortfolio(true, cPort.Details.CalcCurrency, stocks, query.Securities))
                {
                    vm.Messages.Add(new Models.App.Message {
                        LogLevel = Models.App.LogLevel.Error, Text = "Error Get Portfolio Data. Please Contanct System Administrator"
                    });
                }
                else
                {
                    cPort.ColHandler.setDisabledSecsToActive();

                    if (query.Securities.Count > 0)
                    {
                        cPort.ColHandler.ActiveSecs = getFilteredSecByCustomList(query);    //custom portfolio build
                    }
                    else  // filter Active securities from Securities by exchangesIds and risk level: sec.stdYield
                    {
                        cPort.ColHandler.ActiveSecs = getFilteredSecByExchangesAndRisk(query);
                    }


                    cPort.Details.CalcType = query.CalcType;
                    // cPort.Classes.Optimizer.SecuritiesCol = cPort.ColHandler.ActiveSecs;

                    ISecurities cSecsCol = cPort.ColHandler.ActiveSecs;
                    //vm = cPort.Classes.Optimizer.calculateNewEfficientFrontier(ref cSecsCol, cPort.ColHandler.Benchmarks, new cDateRange(DateTime.Today.AddYears(-cProperties.DatesInterval), DateTime.Today), true, false);
                    vm = cPort.Classes.Optimizer.calculateNewEfficientFrontier(ref cSecsCol, cPort.ColHandler.Benchmarks, new cDateRange(DateTime.Today.AddYears(-3).AddDays(-1), DateTime.Today.AddDays(-1)), true, false);
                    cPort.ColHandler.ActiveSecs = cSecsCol;
                }
            }
            return(vm);
        }//GetPortfolioOptimazation
Exemplo n.º 3
0
        }//GetPortfolioOptimazation

        private ISecurities getFilteredSecByCustomList(OptimazationQuery query)
        {
            List <string> missingSecs = new List <string>();

            ISecurities newColl = new cSecurities(cPort);

            for (int i = 0; i < query.Securities.Count; i++)
            {
                var sec = cPort.ColHandler.Securities.getSecurityByIdNormalSearch(query.Securities[i]);
                if (sec != null)
                {
                    newColl.Add(sec);
                }
                else
                {
                    missingSecs.Add(query.Securities[i]);
                }
            }

            if (missingSecs.Count > 0)
            {
                cPort.ColHandler.addMissingSecurities(newColl, missingSecs);
            }
            //********************************************************
            //IRepository repository;
            //repository = Resolver.Resolve<IRepository>();
            //TopSecuritiesViewModel vm = new TopSecuritiesViewModel();
            //repository.Execute(session =>
            //{
            //    var securities = session.Query<TopSecurities>().Where(x => query.Securities.Contains(x.idSecurity));

            //    //return AutoMapper.Mapper.Map<List<Models.dbo.Security>>(topSecs);

            //    //TODO: have to do mapping probably
            //    newColl = newColl.GetCustomSecurities(securities);
            //});
            //********************************************************
            return(newColl);
        }