예제 #1
0
        public FixingFuncPathValue(IFixingFunction fixingFunction,
                                   Tuple <int, int>[] fixingCoordinates)
        {
            FixingFunction    = fixingFunction;
            FixingCoordinates = fixingCoordinates;

            //Buffer initialization
            fixingBuffer = new double[fixingFunction.Fixings.Length];
        }
예제 #2
0
        public void MonoPayoffTest(string payoffScript, IDictionary <string, object> parameters, Func <double, double> refPayoff)
        {
            DslPayoffExpression payoffExpr = DslPayoffParser.Parse(payoffScript, parameters);
            IFixingFunction     payoff     = DslPayoffCompiler.Compile(payoffExpr).First();

            var rand = new Random(4321);

            for (int i = 0; i < 100; i++)
            {
                var fixingValue = 2.0 * rand.NextDouble();
                var cpnValue    = payoff.Value(new[] { fixingValue });
                var refCpnValue = refPayoff(fixingValue);
                Assert.AreEqual(cpnValue, refCpnValue);
            }
        }
예제 #3
0
 public Coupon(PaymentInfo paymentInfo, IFixingFunction payoff)
 {
     PaymentInfo = paymentInfo;
     Payoff      = payoff;
     Fixings     = payoff.Fixings;
 }
        private FixingFuncPathValue FixingFuncPathValue(IFixingFunction payoff)
        {
            var coords = payoff.Fixings.Map(f => FindFixingIndex(simulatedFixings, f));

            return(new FixingFuncPathValue(payoff, coords));
        }
예제 #5
0
 public WeightedFixingFunction(double weigth, IFixingFunction fixingFunc)
 {
     this.weigth     = weigth;
     this.fixingFunc = fixingFunc;
 }