Exemplo n.º 1
0
        public static Portfolio SinglePortfolio(double[,] array)
        {
            double[,] profit = CalculationClass.Profitability(array);

            double[] averageProfit = CalculationClass.AverageProfitability(profit);

            double[] profitSP = CalculationClass.ProfitabilitySP(profit);

            double averageProfitSP = profitSP.Average();

            double sum_d = 0;

            double[] beta = CalculationClass.Beta(profit, averageProfit, profitSP, averageProfitSP, out sum_d);

            double[] risk = CalculationClass.ResidualRisk(profit, averageProfit, profitSP, averageProfitSP, beta);

            double riskSP = CalculationClass.RiskSP(sum_d, array.GetLength(1));
            double R_sp   = CalculationClass.R_sp(profitSP, averageProfitSP);

            double[] w = new double[beta.Length];
            for (int i = 0; i < w.Length; i++)
            {
                w[i] = Math.Round(1.0 / w.Length, 4) * 100;
            }
            double profitSP_model = Math.Round(SolverClass.GetProfitSP(averageProfit, beta, R_sp), 4) * 100;
            double riskSP_model   = Math.Round(riskSP, 4) * 100;// Math.Round(SolverClass.GetRiskSP(beta, risk, riskSP), 4) * 100;

            Portfolio p = new Portfolio(w, profitSP_model, riskSP_model);

            p.StandDev = Math.Round(riskSP, 4) * 100;
            //   p.Cost = Math.Round(CalculationClass.PortfolioCost(array, p), 2);
            return(p);
        }
Exemplo n.º 2
0
        // assets для Excel
        private static Portfolio DoCalculations(double[,] array, Asset[] assets, double valueRiskOrProf, bool forExcel, double[] constraints)
        {
            try
            {
                double[,] profit = CalculationClass.Profitability(array);

                double[] averageProfit = CalculationClass.AverageProfitability(profit);

                double[] profitSP = CalculationClass.ProfitabilitySP(profit);

                double averageProfitSP = profitSP.Average();

                double   sum_d = 0;
                double[] beta  = CalculationClass.Beta(profit, averageProfit, profitSP, averageProfitSP, out sum_d);

                double[] risk = CalculationClass.ResidualRisk(profit, averageProfit, profitSP, averageProfitSP, beta);

                double riskSP = CalculationClass.RiskSP(sum_d, array.GetLength(1));
                double R_sp   = CalculationClass.R_sp(profitSP, averageProfitSP);

                if (forExcel)
                {
                    WorkWithExcel.WriteFile(assets, averageProfit, beta, risk, 12, riskSP, R_sp, valueRiskOrProf);
                    return(null);
                }
                else
                {
                    return(SolverClass.DoOpt(averageProfit, beta, risk, valueRiskOrProf, riskSP, R_sp, constraints));//, out p);
                    //return p;
                }
            }
            catch (NullReferenceException) { return(null); }
        }