Example #1
0
 public double muProbability02(intensityObject intensityobject, double start, double s**t, String method)
 {
     return(MathNet.Numerics.Integration.SimpsonRule.IntegrateThreePoint(x => muProbability00(intensityobject, start, x, "") * intensityobject.muFunction(x), start, s**t));
 }
Example #2
0
 public double[] forward00(intensityObject intensityobject, int start, int s**t, String method)
 {
     double[] p = new double[intensityobject.mu.Length + 1];
     for (int i = 0; i < start; i++)
     {
         p[i] = 0;
     }
     // Exact, returns the E e^int(tau+mu)
     if (method == "marginal")
     {
         p[start] = Math.Exp(-intensityobject.tau[start] - intensityobject.mu[start]);
         for (int i = start + 1; i <= s**t; i++)
         {
             p[i] = zeroCuponPrice(intensityobject.a1, intensityobject.b1, intensityobject.tau, intensityobject.sigma1, start, i) * Math.Exp(-MathNet.Numerics.Integration.SimpsonRule.IntegrateThreePoint(x => intensityobject.muFunction(x), start, i));
         }
         return(p);
     }
     else if (method == "simulation")
     {
         var paths = new List <double[]>();
         for (int n = 0; n < 100; n++)
         {
             intensityObject intCopy = intensityobject;
             intCopy.simulate("cor");
             var path = new double[intensityobject.mu.Length + 1];
             path[start] = Math.Exp(-intensityobject.tau[start] - intensityobject.mu[start]);
             for (int i = start + 1; i <= s**t; i++)
             {
                 path[i] = Math.Exp(-MathNet.Numerics.Integration.SimpsonRule.IntegrateThreePoint(x => intCopy.tauFunction(x) + intCopy.muFunction(x), start, i));
             }
             paths.Add(path);
         }
         for (int i = 0; i <= intensityobject.mu.Length; i++)
         {
             var total = 0.0;
             for (int n = 0; n < 100; n++)
             {
                 total += paths[n][i];
             }
             p[i] = total / 100;
         }
         return(p);
     }
     else
     {
         throw new NotImplementedException("method not implemented yet");
     }
 }
Example #3
0
        public double tekniskReserve_circle(double time_i, intensityObject intensititer)
        {
            double b_0 = 1; double b_01 = 0.02; double b_02 = 0.02;

            return(MathNet.Numerics.Integration.SimpsonRule.IntegrateThreePoint(y => muProbability00(intensititer, time_i, y, "") * b_0 * (y > 40 ? 1 : 0) + muProbability00(intensititer, time_i, y, "") * b_01 * intensititer.tauFunction(y) + muProbability00(intensititer, time_i, y, "") * b_02 * intensititer.muFunction(y), time_i, intensititer.horizon));
        }