public static ProductPathFlowCalculator Build(IProduct product, McModel model)
        {
            IFixing[][] fixings = FixingsByDate(product);
            Func <double[], double>[][]   fixingFromFactors = fixings.Map(fs => fs.Map(f => model.FactorRepresentation[f]));
            ArrayPathCalculator <IFixing> fixingPathCalc    = FixingPathCalc(model.SimulatedDates, fixings, fixingFromFactors);

            PaymentInfo[][] paymentsByDate = PaymentsByDate(product);
            ArrayPathCalculator <PaymentInfo> numerairePathCalc = NumerairePathCalc(paymentsByDate, model);

            var pathFlowVisitor = new ProductPathFlowVisitor(fixings, paymentsByDate);
            IProductPathFlow productPathFlow = product.Accept(pathFlowVisitor);

            return(new ProductPathFlowCalculator(fixingPathCalc, numerairePathCalc, productPathFlow));
        }
Пример #2
0
 public static PaymentInfo[] RetrievePaymentInfos(this IProduct product)
 {
     return(product.Accept(new PaymentProductVisitor()));
 }
Пример #3
0
 public static DateTime[] RetrieveEventDates(this IProduct product)
 {
     return(product.Accept(new EventDateProductVisitor()));
 }
Пример #4
0
 public static IFixing[] RetrieveFixings(this IProduct product)
 {
     return(product.Accept(new FixingProductVisitor()));
 }