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); }
// 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); } }