public Plot(ColumnVector x_i, ColumnVector y_i, string title, string xName, string yName, string curveName) { InitializeComponent(); GraphPane myPane = zedGraphControl1.GraphPane; myPane.Title.Text = title; myPane.XAxis.Title.Text = xName; myPane.YAxis.Title.Text = yName; PointPairList VIX_fut_Prices_LogN = new PointPairList(); rBergomiVIXfuture model = new rBergomiVIXfuture(); Func <double, double> epsilon_0 = t => Math.Pow(0.235, 2);// *Math.Pow(1 + t, 0.5); for (int i = 0; i < x_i.Count(); i++) { VIX_fut_Prices_LogN.Add(x_i[i], y_i[i]); //VIX_fut_Prices_TrCholesky.Add(x_i[i], model.TruncatedCholeskyBergomi(x_i[i], epsilon_0)); } LineItem teamACurve = myPane.AddCurve(curveName, VIX_fut_Prices_LogN, Color.Red, SymbolType.None); zedGraphControl1.AxisChange(); }
static void Main(string[] args) { //Ploting results Graph //Application.EnableVisualStyles(); //Application.SetCompatibleTextRenderingDefault(false); //Application.Run(new Graph()); rBergomiVIXfuture model = new rBergomiVIXfuture(); Func <double, double> epsilon_0 = t => Math.Pow(0.235, 2);// *Math.Sqrt(1 + t); double T = 2.0; //// the Gri t_0 ..... t_{100} = T int n = 500; Grid grid = new Grid(0, T, (int)Math.Abs(T * n)); //lognormal double vixfuture_LogNormal = model.VIXfuture_LogNormal(grid.t(35), epsilon_0); // //Mc with hybrid Scheme ColumnVector vixfuture_Hybrid = model.VIXfuture_HybridMethod(T, epsilon_0); ColumnVector newvixfutures = new ColumnVector(vixfuture_Hybrid.Count()); ColumnVector newvixlognorm = new ColumnVector(vixfuture_Hybrid.Count()); ColumnVector newvixtruncated = new ColumnVector(vixfuture_Hybrid.Count()); ColumnVector ti = new ColumnVector(vixfuture_Hybrid.Count()); int perdiod = 100; for (int i = 0; i < vixfuture_Hybrid.Count(); i++) { int N_i = (i + 1) * perdiod; ti[i] = grid.t((N_i)); newvixfutures[i] = vixfuture_Hybrid[i]; newvixtruncated[i] = model.VIXfuture_TruncatedChlsky(ti[i], epsilon_0); newvixlognorm[i] = model.VIXfuture_LogNormal(ti[i], epsilon_0); } Application.Run(new Plot(ti, newvixlognorm, newvixfutures, newvixtruncated)); //Application.Run(new Plot(ti, newvixfutures,newvixlognorm, "Volterra Simulation in hybrid Method", "T + Delta ", "V", "volterra process")); //Application.Run(new Plot(ti, newvixlognorm, "Volterra Simulation in hybrid Method", "T + Delta ", "V", "volterra process")); // //Mc with trancated Cholesky double TrancatedMethode_MCstdDeviation; double vixfuture_trancated = model.VIXfuture_TruncatedChlsky(T, epsilon_0, out TrancatedMethode_MCstdDeviation); //S&P Option Pricing VIXOption option = new VIXOption(VIXOption.OptionType.Call, 1.0, 100); double optionPrice = model.PriceVIXOption(option, epsilon_0, 100); } //Main
public Graph() { InitializeComponent(); GraphPane myPane = zedGraphControl1.GraphPane; myPane.Title.Text = " "; myPane.XAxis.Title.Text = "T"; myPane.YAxis.Title.Text = "MC standard deviations "; PointPairList VIX_fut_Prices_LogN = new PointPairList(); PointPairList VIX_fut_Prices_Hybrid = new PointPairList(); double[] x_i = buildx_i(); rBergomiVIXfuture model = new rBergomiVIXfuture(); Func <double, double> epsilon_0 = t => Math.Pow(0.235, 2);// *Math.Pow(1 + t, 2); double B = 0.0; for (int i = 0; i < x_i.Count(); i++) { double stdev; double vix = model.VIXfuture_TruncatedChlsky(x_i[i], epsilon_0, out stdev); //VIX_fut_Prices_LogN.Add(x_i[i], model.LogNormalBergomi(x_i[i], epsilon_0)); VIX_fut_Prices_Hybrid.Add(x_i[i], stdev); //VIX_fut_Prices_Hybrid.Add(x_i[i], 0.2); } //LineItem teamACurve = myPane.AddCurve("Log Normal Approximation", // VIX_fut_Prices_LogN, Color.Red, SymbolType.None); LineItem teamBCurve = myPane.AddCurve("Monte-Carlo standard deviations (Trancated Cholesky) ", VIX_fut_Prices_Hybrid, Color.Red, SymbolType.None); zedGraphControl1.AxisChange(); }