/** * Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.analytics.financial.credit.recoveryratemodel; import com.opengamma.util.ArgumentChecker; /** * Class to specify a constant recovery rate model to tag to a given obligor/trade */ public class RecoveryRateModelConstant extends RecoveryRateModel { // ---------------------------------------------------------------------------------------------------------------------------------------- // Member variables for the constant recovery rate model private final double _recoveryRate; private final RecoveryRateType _recoveryRateType; // ---------------------------------------------------------------------------------------------------------------------------------------- public RecoveryRateModelConstant(final double recoveryRate) { super(recoveryRate); // ---------------------------------------------------------------------------------------------------------------------------------------- ArgumentChecker.notNegative(recoveryRate, "Recovery Rate"); ArgumentChecker.isTrue(recoveryRate <= 1.0, "Recovery rate should be less than or equal to 100%"); // ---------------------------------------------------------------------------------------------------------------------------------------- _recoveryRate = recoveryRate; _recoveryRateType = RecoveryRateType.CONSTANT; // ---------------------------------------------------------------------------------------------------------------------------------------- } // ---------------------------------------------------------------------------------------------------------------------------------------- @Override public double getRecoveryRate() { return _recoveryRate; } public RecoveryRateType getRecoveryRateType() { return _recoveryRateType; } // ---------------------------------------------------------------------------------------------------------------------------------------- // Builder method to allow the recovery rate to be set at a specified value public RecoveryRateModelConstant sampleRecoveryRate(final double recoveryRate) { final RecoveryRateModelConstant modifiedRecoveryRateModel = new RecoveryRateModelConstant(recoveryRate); return modifiedRecoveryRateModel; } // ---------------------------------------------------------------------------------------------------------------------------------------- }