Example usage for org.apache.commons.math.analysis.solvers UnivariateRealSolver setAbsoluteAccuracy

List of usage examples for org.apache.commons.math.analysis.solvers UnivariateRealSolver setAbsoluteAccuracy

Introduction

In this page you can find the example usage for org.apache.commons.math.analysis.solvers UnivariateRealSolver setAbsoluteAccuracy.

Prototype

void setAbsoluteAccuracy(double accuracy);

Source Link

Document

Set the absolute accuracy.

Usage

From source file:ch.algotrader.option.OptionUtil.java

/**
 * Gets the implied volatility of a {@link Option} using a {@link UnivariateRealSolverFactory}.
 *//* w w  w .  j a  va 2  s.  co  m*/
@SuppressWarnings("deprecation")
public static double getImpliedVolatility(final double underlyingSpot, final double strike,
        final double currentValue, final double years, final double intrest, final double dividend,
        final OptionType type) throws MathException {

    if (years < 0) {
        throw new IllegalArgumentException("years cannot be negative");
    }

    double intrinsicValue = getIntrinsicValue(underlyingSpot, strike, type);
    if (currentValue <= intrinsicValue) {
        throw new IllegalArgumentException(
                "cannot calculate volatility if optionValue is below intrinsic Value");
    }

    UnivariateRealFunction function = volatility -> getOptionPrice(underlyingSpot, strike, volatility, years,
            intrest, dividend, type) - currentValue;

    UnivariateRealSolverFactory factory = UnivariateRealSolverFactory.newInstance();
    UnivariateRealSolver solver = factory.newDefaultSolver();
    solver.setAbsoluteAccuracy(0.0001);

    return solver.solve(function, 0.01, 2.0);
}