/** * */ @Test(expectedExceptions = IllegalArgumentException.class) public void negativeTimeErrorPriceTest() { BlackScholesFormulaRepository.price( SPOT, STRIKES_INPUT[1], -TIME_TO_EXPIRY, VOLS[1], INTEREST_RATES[1], COST_OF_CARRY, true); }
/** * */ @Test(expectedExceptions = IllegalArgumentException.class) public void nanIntErrorcarryRhoTest() { BlackScholesFormulaRepository.carryRho( SPOT, STRIKES_INPUT[1], TIME_TO_EXPIRY, VOLS[1], NAN, COST_OF_CARRY, true); }
/** * */ @Test(expectedExceptions = IllegalArgumentException.class) public void negativeVolErrorcharmTest() { BlackScholesFormulaRepository.charm( SPOT, STRIKES_INPUT[1], TIME_TO_EXPIRY, -0.5, INTEREST_RATES[1], COST_OF_CARRY, true); }
double finDeltaC = (BlackScholesFormulaRepository.price( upSpot, STRIKES_INPUT[i], TIME_TO_EXPIRY, VOLS[j], INTEREST_RATES[k], COST_OF_CARRY, true) - BlackScholesFormulaRepository.price( dwSpot, STRIKES_INPUT[i], TIME_TO_EXPIRY, VOLS[j], INTEREST_RATES[k], COST_OF_CARRY, true)) / 2. / SPOT / DELTA; double finDeltaP = (BlackScholesFormulaRepository.price( upSpot, STRIKES_INPUT[i], TIME_TO_EXPIRY, VOLS[j], INTEREST_RATES[k], COST_OF_CARRY, false) - BlackScholesFormulaRepository.price( dwSpot, STRIKES_INPUT[i], TIME_TO_EXPIRY, VOLS[j], INTEREST_RATES[k], COST_OF_CARRY, false)) / 2. / SPOT / DELTA; assertEquals(BlackScholesFormulaRepository.delta(SPOT, STRIKES_INPUT[i], TIME_TO_EXPIRY, VOLS[j], INTEREST_RATES[k], COST_OF_CARRY, true), finDeltaC, Math.abs(finDeltaC) * DELTA); assertEquals(BlackScholesFormulaRepository.delta(SPOT, STRIKES_INPUT[i], TIME_TO_EXPIRY, VOLS[j], INTEREST_RATES[k], COST_OF_CARRY, false), finDeltaP, Math.abs(finDeltaP) * DELTA); double finDualDeltaC = (BlackScholesFormulaRepository.price( SPOT, upStrikes[i], TIME_TO_EXPIRY, VOLS[j], INTEREST_RATES[k], COST_OF_CARRY, true) - BlackScholesFormulaRepository.price( SPOT, dwStrikes[i], TIME_TO_EXPIRY, VOLS[j], INTEREST_RATES[k], COST_OF_CARRY, true)) / 2. / STRIKES_INPUT[i] / DELTA; double finDualDeltaP = (BlackScholesFormulaRepository.price( SPOT, upStrikes[i], TIME_TO_EXPIRY, VOLS[j], INTEREST_RATES[k], COST_OF_CARRY, false) - BlackScholesFormulaRepository.price( SPOT, dwStrikes[i], TIME_TO_EXPIRY, VOLS[j], INTEREST_RATES[k], COST_OF_CARRY, false)) / 2. / STRIKES_INPUT[i] / DELTA; assertEquals(BlackScholesFormulaRepository.dualDelta(SPOT, STRIKES_INPUT[i], TIME_TO_EXPIRY, VOLS[j], INTEREST_RATES[k], COST_OF_CARRY, true), finDualDeltaC, Math.abs(finDualDeltaC) * DELTA); assertEquals(BlackScholesFormulaRepository.dualDelta(SPOT, STRIKES_INPUT[i], TIME_TO_EXPIRY, VOLS[j], INTEREST_RATES[k], COST_OF_CARRY, false), finDualDeltaP,
/** * */ public void strikeForDeltaRecoveryTest() { int nStrikes = STRIKES_INPUT.length; int nVols = VOLS.length; int nInt = INTEREST_RATES.length; for (int i = 0; i < nStrikes; ++i) { for (int j = 0; j < nVols; ++j) { for (int k = 0; k < nInt; ++k) { double deltaC = BlackScholesFormulaRepository.delta( SPOT, STRIKES_INPUT[i], TIME_TO_EXPIRY, VOLS[j], INTEREST_RATES[k], COST_OF_CARRY, true); double deltaP = BlackScholesFormulaRepository.delta( SPOT, STRIKES_INPUT[i], TIME_TO_EXPIRY, VOLS[j], INTEREST_RATES[k], COST_OF_CARRY, false); double resC = BlackScholesFormulaRepository.strikeForDelta( SPOT, deltaC, TIME_TO_EXPIRY, VOLS[j], INTEREST_RATES[k], COST_OF_CARRY, true); double resP = BlackScholesFormulaRepository.strikeForDelta( SPOT, deltaP, TIME_TO_EXPIRY, VOLS[j], INTEREST_RATES[k], COST_OF_CARRY, false); assertEquals(resC, STRIKES_INPUT[i], STRIKES_INPUT[i] * EPS); assertEquals(resP, STRIKES_INPUT[i], STRIKES_INPUT[i] * EPS); } } } }
/** * */ @Test(expectedExceptions = IllegalArgumentException.class) public void negativeTimeErrordeltaTest() { BlackScholesFormulaRepository.delta( SPOT, STRIKES_INPUT[1], -TIME_TO_EXPIRY, VOLS[1], INTEREST_RATES[1], COST_OF_CARRY, true); }
/** * */ @Test(expectedExceptions = IllegalArgumentException.class) public void negativeVolErrordualDeltaTest() { BlackScholesFormulaRepository.dualDelta( SPOT, STRIKES_INPUT[1], TIME_TO_EXPIRY, -0.5, INTEREST_RATES[1], COST_OF_CARRY, true); }
/** * */ @Test(expectedExceptions = IllegalArgumentException.class) public void negativeSpotErrorgammaTest() { BlackScholesFormulaRepository.gamma( -SPOT, STRIKES_INPUT[1], TIME_TO_EXPIRY, VOLS[1], INTEREST_RATES[1], COST_OF_CARRY); }
/** * */ @Test(expectedExceptions = IllegalArgumentException.class) public void nanIntErrorcrossGammaTest() { BlackScholesFormulaRepository.crossGamma( SPOT, STRIKES_INPUT[1], TIME_TO_EXPIRY, VOLS[1], NAN, COST_OF_CARRY); }
/** * */ @Test(expectedExceptions = IllegalArgumentException.class) public void nanCarryErrordualVannaTest() { BlackScholesFormulaRepository.dualVanna( SPOT, STRIKES_INPUT[1], TIME_TO_EXPIRY, VOLS[1], INTEREST_RATES[1], NAN); }
/** * */ @Test(expectedExceptions = IllegalArgumentException.class) public void negativeTimeErrordualGammaTest() { BlackScholesFormulaRepository.dualGamma( SPOT, STRIKES_INPUT[1], -TIME_TO_EXPIRY, VOLS[1], INTEREST_RATES[1], COST_OF_CARRY); }
/** * */ @Test(expectedExceptions = IllegalArgumentException.class) public void negativeSpotErrordualCharmTest() { BlackScholesFormulaRepository.dualCharm( -SPOT, STRIKES_INPUT[1], TIME_TO_EXPIRY, VOLS[1], INTEREST_RATES[1], COST_OF_CARRY, true); }
/** * */ @Test(expectedExceptions = IllegalArgumentException.class) public void negativeSpotErrordeltaTest() { BlackScholesFormulaRepository.delta( -SPOT, STRIKES_INPUT[1], TIME_TO_EXPIRY, VOLS[1], INTEREST_RATES[1], COST_OF_CARRY, true); }
/** * */ @Test(expectedExceptions = IllegalArgumentException.class) public void negativeTimeErrordualDeltaTest() { BlackScholesFormulaRepository.dualDelta( SPOT, STRIKES_INPUT[1], -TIME_TO_EXPIRY, VOLS[1], INTEREST_RATES[1], COST_OF_CARRY, true); }
/** * */ @Test(expectedExceptions = IllegalArgumentException.class) public void negativeVolErrorgammaTest() { BlackScholesFormulaRepository.gamma( SPOT, STRIKES_INPUT[1], TIME_TO_EXPIRY, -0.5, INTEREST_RATES[1], COST_OF_CARRY); }
/** * */ @Test(expectedExceptions = IllegalArgumentException.class) public void negativeVolErrorcrossGammaTest() { BlackScholesFormulaRepository.crossGamma( SPOT, STRIKES_INPUT[1], TIME_TO_EXPIRY, -0.5, INTEREST_RATES[1], COST_OF_CARRY); }
/** * */ @Test(expectedExceptions = IllegalArgumentException.class) public void negativeVolErrordualVannaTest() { BlackScholesFormulaRepository.dualVanna( SPOT, STRIKES_INPUT[1], TIME_TO_EXPIRY, -0.5, INTEREST_RATES[1], COST_OF_CARRY); }
/** * */ @Test(expectedExceptions = IllegalArgumentException.class) public void nanIntErrordualGammaTest() { BlackScholesFormulaRepository.dualGamma( SPOT, STRIKES_INPUT[1], TIME_TO_EXPIRY, VOLS[1], NAN, COST_OF_CARRY); }
/** * */ @Test(expectedExceptions = IllegalArgumentException.class) public void negativeStrikeErrordualCharmTest() { BlackScholesFormulaRepository.dualCharm( SPOT, -STRIKES_INPUT[1], TIME_TO_EXPIRY, VOLS[1], INTEREST_RATES[1], COST_OF_CARRY, true); }
/** * */ @Test(expectedExceptions = IllegalArgumentException.class) public void nanIntErrorPriceTest() { BlackScholesFormulaRepository.price( SPOT, STRIKES_INPUT[1], TIME_TO_EXPIRY, VOLS[1], NAN, COST_OF_CARRY, true); }