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];
    }
Esempio n. 3
0
    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));
    }
Esempio n. 4
0
    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));
    }
Esempio n. 5
0
    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);
                     }
        };
    }