/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.analytics.financial.interestrate;
import org.apache.commons.lang.Validate;
import com.opengamma.util.ArgumentChecker;
/**
*
*/
public class ContinuousInterestRate extends InterestRate {
// private final double _annualEquivalent;
public ContinuousInterestRate(final double rate) {
super(rate);
// _annualEquivalent = Math.exp(getRate()) - 1;
}
@Override
public InterestRate fromContinuous(final ContinuousInterestRate continuous) {
Validate.notNull(continuous);
return new ContinuousInterestRate(continuous.getRate());
}
@Override
public double fromContinuousDerivative(final ContinuousInterestRate continuous) {
Validate.notNull(continuous);
return 1.0;
}
@Override
public InterestRate fromPeriodic(final PeriodicInterestRate periodic) {
Validate.notNull(periodic);
final int m = periodic.getCompoundingPeriodsPerYear();
return new ContinuousInterestRate(m * Math.log(1 + periodic.getRate() / m));
}
@Override
public double getDiscountFactor(final double t) {
return Math.exp(-getRate() * t);
}
@Override
public ContinuousInterestRate toContinuous() {
return new ContinuousInterestRate(getRate());
}
@Override
public PeriodicInterestRate toPeriodic(final int periodsPerYear) {
ArgumentChecker.notNegativeOrZero(periodsPerYear, "compounding periods per year");
return new PeriodicInterestRate(periodsPerYear * (Math.exp(getRate() / periodsPerYear) - 1), periodsPerYear);
}
@Override
public String toString() {
return "Continuous[r = " + getRate() + "]";
}
}