Estimate() public method

Attempts to solve the Variance Gamma Optimization problem using Heston.VarianceGammaOptimizationProblem.
public Estimate ( List data, IEstimationSettings settings = null, IController controller = null, object>.Dictionary properties = null ) : EstimationResult
data List /// The data to be used in order to perform the optimization. ///
settings IEstimationSettings The parameter is not used.
controller IController
properties object>.Dictionary
return EstimationResult
コード例 #1
0
        private static Vector Test(int nm, int nk, double q, double s0, double r, double t, double theta, double sigma, double nu)
        {
            // Simulate synthetic data.
            Vector m    = new Vector(nm);
            Vector k    = new Vector(nk);
            Matrix cp   = new Matrix(nm, nk);
            Random rand = new Random();

            for (int i = 0; i < nm; i++)
            {
                m[i] = 0.01 + rand.NextDouble() * 0.99;
            }

            for (int i = 0; i < nk; i++)
            {
                k[i] = 60 + rand.NextDouble() * 90;
            }

            for (int i = 0; i < nm; i++)
            {
                for (int j = 0; j < nk; j++)
                {
                    cp[i, j] = VarianceGammaOptionsCalibration.VGCall(theta, sigma, nu, m[i], k[j], q, s0, r);
                }
            }

            Console.WriteLine("Benchmark value");
            Console.WriteLine(new Vector()
            {
                theta, sigma, nu
            });

            Console.WriteLine("Call prices");
            Console.WriteLine(cp);

            // VGDiff at optimum.
            double fopt = VarianceGammaOptimizationProblem.VGDiff(new Vector()
            {
                theta, sigma, nu
            }, q, s0, k, r, cp, m);

            Console.WriteLine("fopt");
            Console.WriteLine(fopt);

            VarianceGammaOptionsCalibration c = new VarianceGammaOptionsCalibration();
            List <object> marketData          = new List <object>();

            var espmd = new EquitySpotMarketData();

            espmd.Price         = s0;
            espmd.RiskFreeRate  = r;
            espmd.DividendYield = q;

            var cpmd = new CallPriceMarketData();

            cpmd.Strike    = k;
            cpmd.Maturity  = m;
            cpmd.CallPrice = cp;

            var dc = new DiscountingCurveMarketData();

            dc.Durations = new Vector()
            {
                0
            };
            dc.Values = new Vector()
            {
                r
            };

            marketData.Add(espmd);
            marketData.Add(cpmd);
            marketData.Add(dc);

            EstimationResult res = c.Estimate(marketData, null);

            return((Vector)res.Values);
        }
コード例 #2
0
        private static Vector Test(int nm, int nk, double q, double s0, double r, double t, double theta, double sigma, double nu)
        {
            // Simulate synthetic data.
            Vector m = new Vector(nm);
            Vector k = new Vector(nk);
            Matrix cp = new Matrix(nm, nk);
            Random rand = new Random();
            for (int i = 0; i < nm; i++)
            {
                m[i] = 0.01 + rand.NextDouble() * 0.99;
            }

            for (int i = 0; i < nk; i++)
            {
                k[i] = 60 + rand.NextDouble() * 90;
            }

            for (int i = 0; i < nm; i++)
            {
                for (int j = 0; j < nk; j++)
                {
                    cp[i, j] = VarianceGammaOptionsCalibration.VGCall(theta, sigma, nu, m[i], k[j], q, s0, r);
                }
            }

            Console.WriteLine("Benchmark value");
            Console.WriteLine(new Vector() { theta, sigma, nu });

            Console.WriteLine("Call prices");
            Console.WriteLine(cp);

            // VGDiff at optimum.
            double fopt = VarianceGammaOptimizationProblem.VGDiff(new Vector() { theta, sigma, nu }, q, s0, k, r, cp, m);
            Console.WriteLine("fopt");
            Console.WriteLine(fopt);

            VarianceGammaOptionsCalibration c = new VarianceGammaOptionsCalibration();
            List<object> marketData = new List<object>();

            EquitySpotMarketData espmd = new EquitySpotMarketData();
            CallPriceMarketData cpmd = new CallPriceMarketData();
            espmd.Price = s0;
            espmd.RiskFreeRate = r;
            espmd.DividendYield = q;
            cpmd.Strike = k;
            cpmd.Maturity = m;
            cpmd.CallPrice = cp;

            marketData.Add(espmd);
            marketData.Add(cpmd);

            EstimationResult res = c.Estimate(marketData, null);
            return (Vector)res.Values;
        }