PathDependentAsian::PathDependentAsian(const MJArray& LookAtTimes_, double DeliveryTime_, const PayOffBridge& ThePayOff_) : PathDependent(LookAtTimes_), DeliveryTime(DeliveryTime_), ThePayOff(ThePayOff_), NumberOfTimes(LookAtTimes_.size()) { }
PathDependentDiscrete::PathDependentDiscrete(const MJArray& LookAtTimes_, double DeliveryTime_, double Barrier_, double Rebate_) : PathDependent(LookAtTimes_), DeliveryTime(DeliveryTime_), Barrier(Barrier_), Rebate(Rebate_), NumberOfTimes(LookAtTimes_.size()) {}
unsigned long PathDependentAsian::CashFlows(const MJArray& SpotValues, std::vector<CashFlow>& GeneratedFlows) const { double sum = SpotValues.sum(); double mean = sum/NumberOfTimes; GeneratedFlows[0].TimeIndex = 0UL; GeneraedFLows[0].Amount = ThePayOff(mean); return 1UL; }