/* * (c) Copyright Christian P. Fries, Germany. All rights reserved. Contact: email@christianfries.com. * * Created on 23.12.2016 */ package net.finmath.montecarlo.crosscurrency; import net.finmath.exception.CalculationException; import net.finmath.montecarlo.MonteCarloSimulationInterface; import net.finmath.montecarlo.model.AbstractModelInterface; import net.finmath.montecarlo.process.AbstractProcessInterface; import net.finmath.stochastic.RandomVariableInterface; /** * Interface for cross currency term structure models. * * @author Christian Fries */ public interface CrossCurrencyTermStructureModelMonteCarloSimulationInterface extends MonteCarloSimulationInterface { /** * Return the forward rate for a given simulation time and a given period start and period end. * * @param curve The identifier specifying the curve or currency. * @param time Simulation time * @param periodStart Start time of period * @param periodEnd End time of period * @return The forward rate as a random variable as seen on simulation time for the specified period. * @throws net.finmath.exception.CalculationException Thrown if the valuation fails, specific cause may be available via the <code>cause()</code> method. */ RandomVariableInterface getForwardRate(String curve, double time, double periodStart, double periodEnd) throws CalculationException; /** * Return the (cross curve or currency) exchange rate for a given simulation time. * * @param fromCurve The identifier specifying the curve or currency for the denominator. * @param toCurve The identifier specifying the curve or currency for the numerator. * @param time Simulation time * @return The (cross curve or currency) exchange rate for a given simulation time. */ RandomVariableInterface getExchangeRate(String fromCurve, String toCurve, double time) throws CalculationException; /** * Return the numeraire at a given time. * * @param time Time at which the process should be observed * @return The numeraire at the specified time as <code>RandomVariable</code> * @throws net.finmath.exception.CalculationException Thrown if the valuation fails, specific cause may be available via the <code>cause()</code> method. */ RandomVariableInterface getNumeraire(double time) throws CalculationException; /** * Returns the underlying model. * * The model specifies the measure, the initial value, the drift, the factor loadings (covariance model), etc. * * @return The underlying model */ AbstractModelInterface getModel(); /** * @return The implementation of the process */ AbstractProcessInterface getProcess(); }