Documentation of 'net.finmath.montecarlo.RandomVariable' Java class
RandomVariable
net.finmath.montecarlo

Class RandomVariable

  • All Implemented Interfaces:
    java.io.Serializable, RandomVariableInterface


    public class RandomVariable
    extends java.lang.Object
    implements RandomVariableInterface
    The class RandomVariable represents a random variable being the evaluation of a stochastic process at a certain time within a Monte-Carlo simulation. It is thus essentially a vector of doubles - the realizations - together with a double - the time. The index of the vector represents path. The class may also be used for non-stochastic quantities which may potentially be stochastic (e.g. volatility). If only non-stochastic random variables are involved in an operation the class uses optimized code. Accesses performed exclusively through the interface RandomVariableInterface is thread safe (and does not mutate the class). The implementation require Java 8 or better.
    See Also:
    Serialized Form
    • Constructor Detail

      • RandomVariable

        public RandomVariable(RandomVariableInterface value)
        Create a random variable from a given other implementation of RandomVariableInterface.
        Parameters:
        value - Object implementing RandomVariableInterface.
      • RandomVariable

        public RandomVariable(double value)
        Create a non stochastic random variable, i.e. a constant.
        Parameters:
        value - the value, a constant.
      • RandomVariable

        public RandomVariable(RandomVariableInterface value,
                              java.util.function.DoubleUnaryOperator function)
        Create a random variable by applying a function to a given other implementation of RandomVariableInterface.
        Parameters:
        value - Object implementing RandomVariableInterface.
        function - A function mapping double to double.
      • RandomVariable

        public RandomVariable(double time,
                              double value)
        Create a non stochastic random variable, i.e. a constant.
        Parameters:
        time - the filtration time, set to 0.0 if not used.
        value - the value, a constant.
      • RandomVariable

        public RandomVariable(double time,
                              int numberOfPath,
                              double value)
        Create a non stochastic random variable, i.e. a constant.
        Parameters:
        time - the filtration time, set to 0.0 if not used.
        numberOfPath - The number of paths.
        value - the value, a constant.
      • RandomVariable

        public RandomVariable(double time,
                              double[] realisations)
        Create a stochastic random variable. Important: The realizations array is not cloned (not defensive copy is made).
        Parameters:
        time - the filtration time, set to 0.0 if not used.
        realisations - the vector of realizations.
      • RandomVariable

        public RandomVariable(double time,
                              java.util.function.IntToDoubleFunction realizations,
                              int size)
        Create a stochastic random variable.
        Parameters:
        time - the filtration time, set to 0.0 if not used.
        realizations - A map mapping integer (path or state) to double, representing this random variable.
        size - The size, i.e., number of paths.
    • Method Detail

      • equals

        public boolean equals(RandomVariableInterface randomVariable)
        Description copied from interface: RandomVariableInterface
        Compare this random variable with a given one
        Specified by:
        equals in interface RandomVariableInterface
        Parameters:
        randomVariable - Random variable to compare with.
        Returns:
        True if this random variable and the given one are equal, otherwise false
      • get

        public double get(int pathOrState)
        Description copied from interface: RandomVariableInterface
        Evaluate at a given path or state.
        Specified by:
        get in interface RandomVariableInterface
        Parameters:
        pathOrState - Index of the path or state.
        Returns:
        Value of this random variable at the given path or state.
      • getSum

        public double getSum()
        Returns:
        Sum of all realizations.
      • getAverage

        public double getAverage(RandomVariableInterface probabilities)
        Description copied from interface: RandomVariableInterface
        Returns the expectation of this random variable for a given probability measure (weight). The result of this method is (mathematically) equivalent to
        this.mult(probabilities).getAverage() / probabilities.getAverage()
        while the internal implementation may differ, e.g. being more efficient by performing multiplication and summation in the same loop.
        Specified by:
        getAverage in interface RandomVariableInterface
        Parameters:
        probabilities - The probability weights.
        Returns:
        The average assuming the given probability weights.
      • getVariance

        public double getVariance()
        Description copied from interface: RandomVariableInterface
        Returns the variance of this random variable, i.e., V where V = ((X-m)^2).getAverage() and X = this and m = X.getAverage().
        Specified by:
        getVariance in interface RandomVariableInterface
        Returns:
        The average assuming equi-distribution.
      • getVariance

        public double getVariance(RandomVariableInterface probabilities)
        Description copied from interface: RandomVariableInterface
        Returns the variance of this random variable, i.e., V where V = ((X-m)^2).getAverage(probabilities) and X = this and m = X.getAverage(probabilities).
        Specified by:
        getVariance in interface RandomVariableInterface
        Parameters:
        probabilities - The probability weights.
        Returns:
        The average assuming the given probability weights.
      • getStandardDeviation

        public double getStandardDeviation()
        Description copied from interface: RandomVariableInterface
        Returns the standard deviation of this random variable, i.e., sqrt(V) where V = ((X-m)^2).getAverage() and X = this and m = X.getAverage().
        Specified by:
        getStandardDeviation in interface RandomVariableInterface
        Returns:
        The standard deviation assuming equi-distribution.
      • getStandardDeviation

        public double getStandardDeviation(RandomVariableInterface probabilities)
        Description copied from interface: RandomVariableInterface
        Returns the standard deviation of this random variable, i.e., sqrt(V) where V = ((X-m)^2).getAverage(probabilities) and X = this and m = X.getAverage(probabilities).
        Specified by:
        getStandardDeviation in interface RandomVariableInterface
        Parameters:
        probabilities - The probability weights.
        Returns:
        The standard error assuming the given probability weights.
      • getQuantile

        public double getQuantile(double quantile)
        Description copied from interface: RandomVariableInterface
        Returns the quantile value for this given random variable, i.e., the value x such that P(this < x) = quantile, where P denotes the probability measure. The method will consider picewise constant values (with constant extrapolation) in the random variable. That is getQuantile(0) and getQuantile(1) will return the largest and smallest value.
        Specified by:
        getQuantile in interface RandomVariableInterface
        Parameters:
        quantile - The quantile level.
        Returns:
        The quantile value assuming equi-distribution.
      • getQuantile

        public double getQuantile(double quantile,
                                  RandomVariableInterface probabilities)
        Description copied from interface: RandomVariableInterface
        Returns the quantile value for this given random variable, i.e., the value x such that P(this < x) = quantile, where P denotes the probability measure.
        Specified by:
        getQuantile in interface RandomVariableInterface
        Parameters:
        quantile - The quantile level.
        probabilities - The probability weights.
        Returns:
        The quantile value assuming the given probability weights.
      • getQuantileExpectation

        public double getQuantileExpectation(double quantileStart,
                                             double quantileEnd)
        Description copied from interface: RandomVariableInterface
        Returns the expectation over a quantile for this given random variable. The method will consider picewise constant values (with constant extrapolation) in the random variable. For a ≤ b the method returns (Σa ≤ i ≤ b x[i]) / (b-a+1), where
        • a = min(max((n+1) * quantileStart - 1, 0, 1);
        • b = min(max((n+1) * quantileEnd - 1, 0, 1);
        • n = this.size();
        For quantileStart > quantileEnd the method returns getQuantileExpectation(quantileEnd, quantileStart).
        Specified by:
        getQuantileExpectation in interface RandomVariableInterface
        Parameters:
        quantileStart - Lower bound of the integral.
        quantileEnd - Upper bound of the integral.
        Returns:
        The (conditional) expectation of the values between two quantile levels assuming equi-distribution.
      • getHistogram

        public double[] getHistogram(double[] intervalPoints)
        Description copied from interface: RandomVariableInterface
        Generates a Histogram based on the realizations stored in this random variable. The returned result array's length is intervalPoints.length+1.
        • The value result[0] equals the relative frequency of values observed in the interval ( -infinity, intervalPoints[0] ].
        • The value result[i] equals the relative frequency of values observed in the interval ( intervalPoints[i-1], intervalPoints[i] ].
        • The value result[n] equals the relative frequency of values observed in the interval ( intervalPoints[n-1], infinity ).
        where n = intervalPoints.length. Note that the intervals are open on the left, closed on the right, i.e., result[i] contains the number of elements x with intervalPoints[i-1] < x ≤ intervalPoints[i]. Thus, is you have a random variable which only takes values contained in the (sorted) array possibleValues, then result = getHistogram(possibleValues) returns an array where result[i] is the relative frequency of occurrence of possibleValues[i]. The sum of result[i] over all i is equal to 1, except for uninitialized random variables where all values are 0.
        Specified by:
        getHistogram in interface RandomVariableInterface
        Parameters:
        intervalPoints - Array of ascending values defining the interval boundaries.
        Returns:
        A histogram with respect to a provided interval.
      • getHistogram

        public double[][] getHistogram(int numberOfPoints,
                                       double standardDeviations)
        Description copied from interface: RandomVariableInterface
        Generates a histogram based on the realizations stored in this random variable using interval points calculated from the arguments, see also RandomVariableInterface.getHistogram(double[]). The interval points are set with equal distance over an the interval of the specified standard deviation. The interval points used are
        x[i] = mean + alpha[i] * standardDeviations * sigma
        where The methods result is an array of two vectors, where result[0] are the intervals center points ('anchor points') and result[1] contains the relative frequency for the interval. The 'anchor point' for the interval (-infinity, x[0]) is x[0] - 1/2 (x[1]-x[0]) and the 'anchor point' for the interval (x[n], infinity) is x[n] + 1/2 (x[n]-x[n-1]). Here n = numberOfPoints is the number of interval points.
        Specified by:
        getHistogram in interface RandomVariableInterface
        Parameters:
        numberOfPoints - The number of interval points.
        standardDeviations - The number of standard deviations defining the discretization radius.
        Returns:
        A histogram, given as double[2][], where result[0] are the center point of the intervals and result[1] is the value of RandomVariableInterface.getHistogram(double[]) for the given the interval points. The length of result[0] and result[1] is numberOfPoints+1.
      • isDeterministic

        public boolean isDeterministic()
        Description copied from interface: RandomVariableInterface
        Check if this random variable is deterministic in the sense that it is represented by a single double value. Note that the methods returns false, if the random variable is represented by a vector where each element has the same value.
        Specified by:
        isDeterministic in interface RandomVariableInterface
        Returns:
        True if this random variable is deterministic.
      • getRealizationsStream

        public java.util.stream.DoubleStream getRealizationsStream()
        Description copied from interface: RandomVariableInterface
        Returns a stream of doubles corresponding to the realizations of this random variable.
        Specified by:
        getRealizationsStream in interface RandomVariableInterface
        Returns:
        A stream of doubles corresponding to the realizations of this random variable.
      • getRealizations

        public double[] getRealizations()
        Description copied from interface: RandomVariableInterface
        Returns a vector representing the realization of this random variable. This method is merely useful for analysis. Its interpretation depends on the context (Monte-Carlo or lattice). The method does not expose an internal data model.
        Specified by:
        getRealizations in interface RandomVariableInterface
        Returns:
        Vector of realizations of this random variable.
      • getOperator

        public java.util.function.IntToDoubleFunction getOperator()
        Description copied from interface: RandomVariableInterface
        Returns the operator path -> this.get(path) corresponding to this random variable.
        Specified by:
        getOperator in interface RandomVariableInterface
        Returns:
        The operator path -> this.get(path) corresponding to this random variable.
      • getRealizations

        public double[] getRealizations(int numberOfPaths)
        Returns the realizations as double array. If the random variable is deterministic, then it is expanded to the given number of paths.
        Specified by:
        getRealizations in interface RandomVariableInterface
        Parameters:
        numberOfPaths - Number of paths.
        Returns:
        The realization as double array.
      • cache

        public RandomVariableInterface cache()
        Description copied from interface: RandomVariableInterface
        Return a cacheable version of this object (often a self-reference). This method should be called when you store the object for later use, i.e., assign it, or when the object is consumed in a function, but later used also in another function.
        Specified by:
        cache in interface RandomVariableInterface
        Returns:
        A cacheable version of this object (often a self-reference).
      • apply

        public RandomVariableInterface apply(java.util.function.DoubleUnaryOperator operator)
        Description copied from interface: RandomVariableInterface
        Applies x → operator(x) to this random variable. It returns a new random variable with the result.
        Specified by:
        apply in interface RandomVariableInterface
        Parameters:
        operator - An unary operator/function, mapping double to double.
        Returns:
        New random variable with the result of the function.
      • apply

        public RandomVariableInterface apply(java.util.function.DoubleBinaryOperator operator,
                                             RandomVariableInterface argument)
        Description copied from interface: RandomVariableInterface
        Applies x → operator(x,y) to this random variable, where x is this random variable and y is a given random variable. It returns a new random variable with the result.
        Specified by:
        apply in interface RandomVariableInterface
        Parameters:
        operator - A binary operator/function, mapping (double,double) to double.
        argument - A random variable.
        Returns:
        New random variable with the result of the function.
      • cap

        public RandomVariableInterface cap(double cap)
        Description copied from interface: RandomVariableInterface
        Applies x → min(x,cap) to this random variable. It returns a new random variable with the result.
        Specified by:
        cap in interface RandomVariableInterface
        Parameters:
        cap - The cap.
        Returns:
        New random variable with the result of the function.
      • floor

        public RandomVariableInterface floor(double floor)
        Description copied from interface: RandomVariableInterface
        Applies x → max(x,floor) to this random variable. It returns a new random variable with the result.
        Specified by:
        floor in interface RandomVariableInterface
        Parameters:
        floor - The floor.
        Returns:
        New random variable with the result of the function.
      • add

        public RandomVariableInterface add(double value)
        Description copied from interface: RandomVariableInterface
        Applies x → x + value to this random variable. It returns a new random variable with the result.
        Specified by:
        add in interface RandomVariableInterface
        Parameters:
        value - The value to add.
        Returns:
        New random variable with the result of the function.
      • barrier

        public RandomVariableInterface barrier(RandomVariableInterface trigger,
                                               RandomVariableInterface valueIfTriggerNonNegative,
                                               double valueIfTriggerNegative)
        Description copied from interface: RandomVariableInterface
        Applies x → (trigger ≥ 0 ? valueIfTriggerNonNegative : valueIfTriggerNegative)
        Specified by:
        barrier in interface RandomVariableInterface
        Parameters:
        trigger - The trigger. A random variable (compatible with this random variable).
        valueIfTriggerNonNegative - The value used if the trigger is greater or equal 0
        valueIfTriggerNegative - The value used if the trigger is less than 0
        Returns:
        New random variable with the result of the function.
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object

DataMelt 3.0 © DataMelt by jWork.ORG

Ads help maintain this website.