com.ftlabs.fisa.calc
Interface Calculator

All Superinterfaces:
java.io.Serializable, YieldConvergable
All Known Subinterfaces:
InflationIndexedCalculator
All Known Implementing Classes:
AbstractCalculator, CDFixedInterestRateCalculator, CDLastPeriodCalculator, CDSteppedCouponCalculator, DiscountCalculator, FixedInterestRateCalculator, InflationIndexedLastPeriodCalculator, InflationIndexedMultiplePeriodCalculator, InterestAtMaturityCalculator, LastPeriodCalculator, LastPeriodSimpleInterestCalculator, MSRBFixedInterestRateCalculator, MSRBOneLongPeriodCalculator, MSRBOneShortPeriodCalculator, MSRBSteppedCouponCalculator, MultipleCashFlowCalculator, MultiplePeriodCalculator, PerpetualPreferredCalculator, PreferredCalculator, PreferredFixedInterestRateCalculator, SimpleYTRFixedInterestRateCalculator, SteppedCouponCalculator, SteppedCouponCompoundingCalculator, ZeroCouponCalculator

public interface Calculator
extends YieldConvergable, java.io.Serializable

This interface provides calculation methods that are tuned specifically for the implemented security and for a particular settlement to Redemption period.


Method Summary
 Analytics calculate(AnalyticValueType givenType, double givenValue)
          Calculate an Analytics object using the provided AnalyticValueType and value.
 double calculateAccruedInterest()
          Calculate the accrued interest to the settlement date.
 double calculateConvexity(double periodicYield)
          Calculate the actual convexity.
 double calculateCurrentYield(double price)
          Calculate current yield for the given price.
 double calculateEstimatedConvexity(double pv1b, double price, double yield)
          Calculate the estimated convexity.
 double calculateEstimatedMacaulayDuration(double pv1b, double price, double yield)
          Calculate the estimated Macaulay duration.
 double calculateEstimatedModifiedDuration(double duration, double yield)
          Calculate the estimated modified duration.
 double calculateEstimatedModifiedDuration(double pv1b, double price, double yield)
          Calculate the estimated modified duration.
 double calculateInterestOnInterest(double reinvestmentYield)
          Calculate the interest earned on reinvested interest cashflows using the provided reinvestmentYield.
 double calculateMacaulayDuration(double periodicYield)
          Calculate the actual Macaulay duration.
 double calculateModifiedDuration(double periodicYield)
          Calculate the actual modified duration.
 double calculateModifiedDuration(double macaulayDuration, double periodicYield)
          Calculate the actual modified duration using an already calculated Macaulay Duration.
 double calculatePeriodicYield(double price)
          Calculate a periodic discounted cash flow yield for use with convexity/duration methods.
 double calculatePrice(double yield)
          Calculate price for the given yield.
 double calculatePriceValue1BP(double price, double yield)
          Calculate the average price value obtained by varying the yield up and down one basis point.
 double calculateTotalInterestFlows()
          A convenience method to total all interest cashflows between the settlement to redemption period.
 double calculateYield(double price)
          Calculate yield for the given price.
 double calculateYieldValue1_32(double pv1b)
          Calculate the average yield value obtained by varying the price up and down 1/32.
 int getCashFlowCount()
          Get the number of cashflows within the supported settlement to Redemption period.
 FISADate getCashFlowDate(int cashFlowIndex)
          Get a cash flow date for a particular cashflow, as specified by the provided cashFlowIndex.
 void getCashFlowDate(int cashFlowIndex, FISADate date)
          Set the provided FISADate to the cash flow date of a particular cashflow, as specified by the provided cashFlowIndex.
 double getInterest(int cashFlowIndex)
          Get the interest to be paid for a particular cashflow, as specified by cashFlowIndex.
 double getPeriodicTimeToFlow(int cashFlowIndex)
          Get the periodic time to flow as calculated with an actual day count method for a particular cashflow, as specified by cashFlowIndex.
 double getPrincipal(int cashFlowIndex)
          Get the principal to be paid for a particular cashflow, as specified by cashFlowIndex.
 Redemption getRedemption()
          Get the Redemption to which this Calculator is bound.
 FISADate getSettlementDate()
          Get the settlement date to which this Calculator is bound.
 double getTimeToFlow(int cashFlowIndex)
          Get the time to flow for a particular cashflow, as specified by cashFlowIndex.
 double getTotalCashFlow(int cashFlowIndex)
          Get the principal and interest to be paid for a particular cashflow, as specified by cashFlowIndex.
 

Method Detail

getSettlementDate

FISADate getSettlementDate()
Get the settlement date to which this Calculator is bound.

Returns:
Settlement date.

getRedemption

Redemption getRedemption()
Get the Redemption to which this Calculator is bound.

Returns:
Redemption.

calculateYield

double calculateYield(double price)
                      throws CalculationException
Calculate yield for the given price.

Parameters:
price - price
Returns:
yield as calculated for the given price.
Throws:
CalculationException

calculateCurrentYield

double calculateCurrentYield(double price)
                             throws CalculationException
Calculate current yield for the given price.

Parameters:
price - price
Returns:
current yield as calculated for the given price.
Throws:
CalculationException

calculatePrice

double calculatePrice(double yield)
                      throws CalculationException
Calculate price for the given yield.

Specified by:
calculatePrice in interface YieldConvergable
Parameters:
yield - yield
Returns:
price as calculated for the given yield.
Throws:
CalculationException

calculateAccruedInterest

double calculateAccruedInterest()
                                throws CalculationException
Calculate the accrued interest to the settlement date.

Returns:
The accrued interest to the settlement date.
Throws:
CalculationException

getCashFlowCount

int getCashFlowCount()
Get the number of cashflows within the supported settlement to Redemption period.

Returns:
The number of cashflows within the supported settlement to Redemption period.

getInterest

double getInterest(int cashFlowIndex)
Get the interest to be paid for a particular cashflow, as specified by cashFlowIndex.

Parameters:
cashFlowIndex - The cashflow index. cashFlowIndex is zero based and must be a number from 0 to getCashFlowCount() - 1.
Returns:
The interest to be paid for the specified cashflow.
Throws:
java.lang.ArrayIndexOutOfBoundsException - If cashFlowIndex is less than zero or cashFlowIndex is greater than getCashFlowCount() - 1.

getPrincipal

double getPrincipal(int cashFlowIndex)
Get the principal to be paid for a particular cashflow, as specified by cashFlowIndex.

Parameters:
cashFlowIndex - The cashflow index. cashFlowIndex is zero based and must be a number from 0 to getCashFlowCount() - 1.
Returns:
The principal to be paid for the specified cashflow.
Throws:
java.lang.ArrayIndexOutOfBoundsException - If cashFlowIndex is less than zero or cashFlowIndex is greater than getCashFlowCount() - 1.

getTotalCashFlow

double getTotalCashFlow(int cashFlowIndex)
Get the principal and interest to be paid for a particular cashflow, as specified by cashFlowIndex.

Parameters:
cashFlowIndex - The cashflow index. cashFlowIndex is zero based and must be a number from 0 to getCashFlowCount() - 1.
Returns:
The principal + interest to be paid for the specified cashflow.
Throws:
java.lang.ArrayIndexOutOfBoundsException - If cashFlowIndex is less than zero or cashFlowIndex is greater than getCashFlowCount() - 1.

getTimeToFlow

double getTimeToFlow(int cashFlowIndex)
Get the time to flow for a particular cashflow, as specified by cashFlowIndex.

Parameters:
cashFlowIndex - The cashflow index. cashFlowIndex is zero based and must be a number from 0 to getCashFlowCount() - 1.
Returns:
The time to flow for the specified cashflow.
Throws:
java.lang.ArrayIndexOutOfBoundsException - If cashFlowIndex is less than zero or cashFlowIndex is greater than getCashFlowCount() - 1.

getPeriodicTimeToFlow

double getPeriodicTimeToFlow(int cashFlowIndex)
Get the periodic time to flow as calculated with an actual day count method for a particular cashflow, as specified by cashFlowIndex. This value is generally used in actual convexity and duration methods.

Parameters:
cashFlowIndex - The cashflow index. cashFlowIndex is zero based and must be a number from 0 to getCashFlowCount() - 1.
Returns:
The periodic time to flow as calculated with an actual day count method for the specified cashflow.
Throws:
java.lang.ArrayIndexOutOfBoundsException - If cashFlowIndex is less than zero or cashFlowIndex is greater than getCashFlowCount() - 1.

getCashFlowDate

FISADate getCashFlowDate(int cashFlowIndex)
Get a cash flow date for a particular cashflow, as specified by the provided cashFlowIndex.

Parameters:
cashFlowIndex - The cashflow index. cashFlowIndex is zero based and must be a number from 0 to getCashFlowCount() - 1.
Returns:
The cash flow date for the provided cash flow index.
Throws:
java.lang.ArrayIndexOutOfBoundsException - If cashFlowIndex is less than zero or cashFlowIndex is greater than getCashFlowCount() - 1.

getCashFlowDate

void getCashFlowDate(int cashFlowIndex,
                     FISADate date)
Set the provided FISADate to the cash flow date of a particular cashflow, as specified by the provided cashFlowIndex.

Parameters:
cashFlowIndex - The cashflow index. cashFlowIndex is zero based and must be a number from 0 to getCashFlowCount() - 1.
date - A FISADate to be set to the specified cash flow date.
Throws:
java.lang.ArrayIndexOutOfBoundsException - If cashFlowIndex is less than zero or cashFlowIndex is greater than getCashFlowCount() - 1.

calculatePeriodicYield

double calculatePeriodicYield(double price)
                              throws CalculationException
Calculate a periodic discounted cash flow yield for use with convexity/duration methods.

Parameters:
price - the price.
Returns:
Periodic discounted cash flow yield.
Throws:
CalculationException

calculateMacaulayDuration

double calculateMacaulayDuration(double periodicYield)
                                 throws CalculationException
Calculate the actual Macaulay duration.

Parameters:
periodicYield - The periodicYield as returned from the calculatePeriodicYield method.
Returns:
Macaulay duration.
Throws:
CalculationException

calculateModifiedDuration

double calculateModifiedDuration(double periodicYield)
                                 throws CalculationException
Calculate the actual modified duration. If Macaulay Duration has already been calculated, then it is more efficient to use the overloaded calculateModifiedDuration method that accepts the Macaulay Duration.

Parameters:
periodicYield - The periodicYield as returned from the calculatePeriodicYield method.
Returns:
modified duration.
Throws:
CalculationException

calculateModifiedDuration

double calculateModifiedDuration(double macaulayDuration,
                                 double periodicYield)
                                 throws CalculationException
Calculate the actual modified duration using an already calculated Macaulay Duration.

Parameters:
macaulayDuration - The Macaulay Duration as calculated by the calculateMacaulayDuration method.
periodicYield - The periodicYield as returned from the calculatePeriodicYield method.
Returns:
modified duration.
Throws:
CalculationException

calculateConvexity

double calculateConvexity(double periodicYield)
                          throws CalculationException
Calculate the actual convexity.

Parameters:
periodicYield - The periodicYield as returned from the calculatePeriodicYield method.
Returns:
convexity.
Throws:
CalculationException

calculatePriceValue1BP

double calculatePriceValue1BP(double price,
                              double yield)
                              throws CalculationException
Calculate the average price value obtained by varying the yield up and down one basis point.

Returns:
the average price value obtained by varying the yield up and down one basis point.
Throws:
CalculationException

calculateYieldValue1_32

double calculateYieldValue1_32(double pv1b)
                               throws CalculationException
Calculate the average yield value obtained by varying the price up and down 1/32.

Parameters:
pv1b - The average price value obtained by varying the yield up and down one basis point, as returned by the calculatePriceValue1BP method.
Returns:
the average yield value obtained by varying the price up and down 1/32.
Throws:
CalculationException

calculateEstimatedMacaulayDuration

double calculateEstimatedMacaulayDuration(double pv1b,
                                          double price,
                                          double yield)
                                          throws CalculationException
Calculate the estimated Macaulay duration.

Parameters:
pv1b - The average price value obtained by varying the yield up and down one basis point, as returned by the calculatePriceValue1BP method.
price - the price.
yield - the yield.
Returns:
estimated Macaulay duration.
Throws:
CalculationException

calculateEstimatedModifiedDuration

double calculateEstimatedModifiedDuration(double pv1b,
                                          double price,
                                          double yield)
                                          throws CalculationException
Calculate the estimated modified duration.

Parameters:
pv1b - The average price value obtained by varying the yield up and down one basis point, as returned by the calculatePriceValue1BP method.
price - the price.
yield - the yield.
Returns:
estimated modified duration.
Throws:
CalculationException

calculateEstimatedModifiedDuration

double calculateEstimatedModifiedDuration(double duration,
                                          double yield)
                                          throws CalculationException
Calculate the estimated modified duration.

Parameters:
duration - the estimated Macaulay Duration.
yield - the yield.
Returns:
estimated modified duration.
Throws:
CalculationException

calculateEstimatedConvexity

double calculateEstimatedConvexity(double pv1b,
                                   double price,
                                   double yield)
                                   throws CalculationException
Calculate the estimated convexity.

Parameters:
pv1b - The average price value obtained by varying the yield up and down one basis point, as returned by the calculatePriceValue1BP method.
price - the price.
yield - the yield.
Returns:
estimated convexity.
Throws:
CalculationException

calculate

Analytics calculate(AnalyticValueType givenType,
                    double givenValue)
                    throws CalculationException
Calculate an Analytics object using the provided AnalyticValueType and value.

Parameters:
givenType - The AnalyticValueType of the givenValue.
givenValue - The value to calculate the Analytics from.
Throws:
com.ftlabs.fis.calc.CalculationException
CalculationException

calculateTotalInterestFlows

double calculateTotalInterestFlows()
                                   throws CalculationException
A convenience method to total all interest cashflows between the settlement to redemption period.

Returns:
The total interest cashflows between the settlement to redemption period.
Throws:
CalculationException

calculateInterestOnInterest

double calculateInterestOnInterest(double reinvestmentYield)
                                   throws CalculationException
Calculate the interest earned on reinvested interest cashflows using the provided reinvestmentYield.

Parameters:
reinvestmentYield - The assumed yield of the reinvested interest cashflows.
Returns:
The interest earned on reinvested interest cashflows.
Throws:
CalculationException