All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.finmath.montecarlo.automaticdifferentiation.RandomVariableDifferentiableFactory Maven / Gradle / Ivy

Go to download

finmath lib is a Mathematical Finance Library in Java. It provides algorithms and methodologies related to mathematical finance.

The newest version!
package net.finmath.montecarlo.automaticdifferentiation;

import net.finmath.montecarlo.RandomVariableFactory;
import net.finmath.stochastic.RandomVariable;

/**
 * A factory for creating objects implementing
 * net.finmath.montecarlo.automaticdifferentiation.RandomVariableDifferentiable.
 *
 * The factory extends the net.finmath.montecarlo.RandomVariableFactory, which can be used
 * to allow for dependency injection.
 *
 * @see net.finmath.stochastic.RandomVariable
 *
 * @author Christian Fries
 * @version 1.0
 */
public interface RandomVariableDifferentiableFactory extends RandomVariableFactory {

	/**
	 * Create a (deterministic) random variable from a constant.
	 *
	 * @param value A constant value.
	 * @return The RandomVariableDifferentiable.
	 */
	@Override
	RandomVariableDifferentiable createRandomVariable(double value);

	/**
	 * Create a (deterministic) random variable form a constant using a specific filtration time.
	 *
	 * @param time The filtration time of the random variable.
	 * @param value A constant value.
	 * @return The RandomVariableDifferentiable.
	 */
	@Override
	RandomVariableDifferentiable createRandomVariable(double time, double value);

	/**
	 * Create a random variable form an array using a specific filtration time.
	 *
	 * @param time The filtration time of the random variable.
	 * @param values Array representing values of the random variable at the sample paths.
	 * @return The RandomVariableDifferentiable.
	 */
	@Override
	RandomVariableDifferentiable createRandomVariable(double time, double[] values);

	/**
	 * Create a (deterministic) random variable, which is not differentiable, from a constant.
	 *
	 * @param value A constant value.
	 * @param time The filtration time of the random variable.
	 * @return The RandomVariable.
	 */
	RandomVariable createRandomVariableNonDifferentiable(double time, double value);

	/**
	 * Create a random variable, which is not differentiable, from an array using a specific filtration time.
	 *
	 * @param time The filtration time of the random variable.
	 * @param values Array representing values of the random variable at the sample paths.
	 * @return The RandomVariable.
	 */
	RandomVariable createRandomVariableNonDifferentiable(double time, double[] values);
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy