public Tuple <ISde, FdmBase, IRng> Parts() { // V2, parts initialised from the inside // Get the SDE ISde sde = GetSde(); IRng rng = GetRng(); FdmBase fdm = GetFdm(sde); return(new Tuple <ISde, FdmBase, IRng>(sde, fdm, rng)); }
public event EndOfSimulation <double> finish; // Signals that all paths are complete public MCMediator(Tuple <ISde, FdmBase, IRng> parts, int numberSimulations) { sde = parts.Item1; fdm = parts.Item2; rng = parts.Item3; NSim = numberSimulations; res = new double[fdm.NT]; }
public Tuple <ISde <double>, FdmBase <double>, IRng <double> > Parts() { // V2, parts initialised from the inside // Get the SDE ISde <double> sde = GetSde(); IRng <double> rng = GetRng(); FdmBase <double> fdm = GetFdm(sde); return(new Tuple <ISde <double>, FdmBase <double>, IRng <double> >(sde, fdm, rng)); }
public Tuple <ISde, FdmBase, IRng> Parts() { // V2, parts initialised from the inside // Get the SDE ISde sde = GetSde(); IRng rng = GetRng(); FdmBase fdm = GetFdm(sde); Payoff payoff = x => Math.Max(0.0, K - x); //Payoff payoff = x => Math.Max(0.0, x - K); Func <double> discounter = () => Math.Exp(-r * T); IPricer pricer = GetPricer(payoff, discounter); return(new Tuple <ISde, FdmBase, IRng>(sde, fdm, rng)); }
public MCMediator(Tuple <ISde, FdmBase, IRng> parts, PathEvent <double> optionPaths, EndOfSimulation <double> finishOptions, int numberSimulations) { sde = parts.Item1; fdm = parts.Item2; rng = parts.Item3; // Define slots for path information path = optionPaths; // Signal end of simulation finish = finishOptions; NSim = numberSimulations; res = new double[fdm.NT + 1]; mis = i => { if ((i / 10000) * 10000 == i) { Console.WriteLine("Iteration # {0}", i); } }; }