public SimulationRunner(IEnumerable<SimulationSet> simulationSets, IEnumerable<Model> allModels,
     Context context)
 {
     _context = context;
     _simulationSets = simulationSets.ToList();
     _allModels = allModels.ToList();
 }
        private List<string> CreateTestWeightsProvider(Context context,
            WeightsType weightsType, int returnsCount = 1000)
        {
            var correlationMatrix = context.Factory.CreateNArray(new double[,] {
                { 1.0,      0.84,   -0.42},
                { 0.84,     1.0,    0.14},
                { -0.42,    0.14,   1.0}
            });
            correlationMatrix = CorrelationHelper.NearestCorrelationMatrix(correlationMatrix);

            int weightsCount;
            NArray weightsMatrix;
            if (weightsType == WeightsType.Returns)
            {
                weightsCount = returnsCount;
                weightsMatrix = CalculateSyntheticReturns(correlationMatrix, weightsCount);
            }
            else
            {
                weightsCount = correlationMatrix.RowCount;
                weightsMatrix = NMath.CholeskyDecomposition(correlationMatrix);
            }

            var weights = context.Data.AddCalibrationParametersProvider
                (new WeightsProvider(weightsCount));

            var identifiers = Enumerable.Range(1, weightsMatrix.ColumnCount)
                .Select(i => string.Format("TestFactor{0}", i)).ToList();

            for (int i = 0; i < weightsMatrix.ColumnCount; ++i)
            {
                weights.AddValue(identifiers[i], weightsMatrix.Column(i));
            }

            return identifiers;
        }
Exemplo n.º 3
0
 public new abstract NArray Prepare(Context context);