public final class RatePeriodSwapLeg extends Object implements SwapLeg, org.joda.beans.ImmutableBean, Serializable
This defines a single swap leg paying a rate, such as an interest rate.
The rate may be fixed or floating, for examples see FixedRateComputation,
IborRateComputation and OvernightCompoundedRateComputation.
The swap is built up of one or more payment periods, each of which produces a single payment.
Each payment period is made up of one or more accrual periods.
If there is more than one accrual period in a payment period then compounding may apply.
See RatePaymentPeriod and RateAccrualPeriod for more details.
This class allows the entire structure of the payment and accrual periods to be defined.
This permits weird and wonderful swaps to be created, however it is important to note
that there is no ability to adjust the accrual period dates if the holiday calendar changes.
Provision is provided to adjust the payment dates if the holiday calendar changes.
Note however that it is intended that the dates on RatePaymentPeriod and
RateAccrualPeriod are already adjusted to be valid business days.
In general, it is recommended to use the parameterized RateCalculationSwapLeg
instead of this class.
| Modifier and Type | Class and Description |
|---|---|
static class |
RatePeriodSwapLeg.Builder
The bean-builder for
RatePeriodSwapLeg. |
static class |
RatePeriodSwapLeg.Meta
The meta-bean for
RatePeriodSwapLeg. |
| Modifier and Type | Method and Description |
|---|---|
static RatePeriodSwapLeg.Builder |
builder()
Returns a builder used to create an instance of the bean.
|
void |
collectCurrencies(ImmutableSet.Builder<Currency> builder)
Collects all the currencies referred to by this leg.
|
void |
collectIndices(ImmutableSet.Builder<Index> builder)
Collects all the indices referred to by this leg.
|
boolean |
equals(Object obj) |
Currency |
getCurrency()
Gets the payment currency of the leg.
|
AdjustableDate |
getEndDate()
Gets the accrual end date of the leg.
|
BusinessDayAdjustment |
getPaymentBusinessDayAdjustment()
Gets the business day date adjustment to be applied to each payment date, default is to apply no adjustment.
|
ImmutableList<SwapPaymentEvent> |
getPaymentEvents()
Gets the additional payment events that are associated with the swap leg.
|
ImmutableList<RatePaymentPeriod> |
getPaymentPeriods()
Gets the payment periods that combine to form the swap leg.
|
PayReceive |
getPayReceive()
Gets whether the leg is pay or receive.
|
AdjustableDate |
getStartDate()
Gets the accrual start date of the leg.
|
SwapLegType |
getType()
Gets the type of the leg, such as Fixed or Ibor.
|
int |
hashCode() |
boolean |
isFinalExchange()
Gets the flag indicating whether to exchange the final notional.
|
boolean |
isInitialExchange()
Gets the flag indicating whether to exchange the initial notional.
|
boolean |
isIntermediateExchange()
Gets the flag indicating whether to exchange the differences in the notional during the lifetime of the swap.
|
static RatePeriodSwapLeg.Meta |
meta()
The meta-bean for
RatePeriodSwapLeg. |
RatePeriodSwapLeg.Meta |
metaBean() |
RatePeriodSwapLeg |
replaceStartDate(LocalDate adjustedStartDate)
Returns an instance based on this leg with a different start date.
|
ResolvedSwapLeg |
resolve(ReferenceData refData)
Converts this swap leg to the equivalent
ResolvedSwapLeg. |
RatePeriodSwapLeg.Builder |
toBuilder()
Returns a builder that allows this bean to be mutated.
|
String |
toString() |
clone, finalize, getClass, notify, notifyAll, wait, wait, waitallCurrencies, allIndicespublic AdjustableDate getStartDate()
SwapLegThis is the first accrual date in the leg, often known as the effective date.
Defined as the effective date by the 2006 ISDA definitions article 3.2.
getStartDate in interface SwapLegpublic AdjustableDate getEndDate()
SwapLegThis is the last accrual date in the leg, often known as the termination date.
Defined as the termination date by the 2006 ISDA definitions article 3.3.
getEndDate in interface SwapLegpublic Currency getCurrency()
SwapLegA swap leg has a single payment currency.
getCurrency in interface SwapLegpublic void collectCurrencies(ImmutableSet.Builder<Currency> builder)
SwapLegThis collects the complete set of currencies for the leg, not just the payment currencies.
collectCurrencies in interface SwapLegbuilder - the builder to populatepublic void collectIndices(ImmutableSet.Builder<Index> builder)
SwapLegA swap leg will typically refer to at least one index, such as 'GBP-LIBOR-3M'. Each index that is referred to must be added to the specified builder.
collectIndices in interface SwapLegbuilder - the builder to populatepublic RatePeriodSwapLeg replaceStartDate(LocalDate adjustedStartDate)
The proposed start date must exactly match the start date of one of the existing periods.
replaceStartDate in interface SwapLegadjustedStartDate - the new adjusted start dateIllegalArgumentException - if the start date cannot be replaced with the proposed start datepublic ResolvedSwapLeg resolve(ReferenceData refData)
ResolvedSwapLeg.
An ResolvedSwapLeg represents the same data as this leg, but with
the schedules resolved to be SwapPaymentPeriod instances.
resolve in interface Resolvable<ResolvedSwapLeg>resolve in interface SwapLegrefData - the reference data to use when resolvingReferenceDataNotFoundException - if an identifier cannot be resolved in the reference dataRuntimeException - if unable to resolve due to an invalid definitionpublic static RatePeriodSwapLeg.Meta meta()
RatePeriodSwapLeg.public static RatePeriodSwapLeg.Builder builder()
public RatePeriodSwapLeg.Meta metaBean()
metaBean in interface org.joda.beans.Beanpublic SwapLegType getType()
This provides a high level categorization of the swap leg.
public PayReceive getPayReceive()
A value of 'Pay' implies that the resulting amount is paid to the counterparty. A value of 'Receive' implies that the resulting amount is received from the counterparty. Note that negative interest rates can result in a payment in the opposite direction to that implied by this indicator.
The value of this flag should match the signs of the payment period notionals.
getPayReceive in interface SwapLegpublic ImmutableList<RatePaymentPeriod> getPaymentPeriods()
Each payment period represents part of the life-time of the leg. In most cases, the periods do not overlap. However, since each payment period is essentially independent the data model allows overlapping periods.
The start date and end date of the leg are determined from the first and last period. As such, the periods should be sorted.
public boolean isInitialExchange()
Setting this to true indicates that the notional is transferred at the start of the trade. This should typically be set to true in the case of an FX reset swap, or one with a varying notional.
This flag controls whether a notional exchange object is created when the leg is resolved.
It covers an exchange on the initial payment date of the swap leg, treated as the start date.
If there is an FX reset, then this flag is ignored, see intermediateExchange.
If there is no FX reset and the flag is true, then a NotionalExchange object will be created.
public boolean isIntermediateExchange()
Setting this to true indicates that the notional is transferred when it changes during the trade. This should typically be set to true in the case of an FX reset swap, or one with a varying notional.
This flag controls whether a notional exchange object is created when the leg is resolved.
It covers an exchange on each intermediate payment date of the swap leg.
If set to true, the behavior depends on whether an FX reset payment period is defined.
If there is an FX reset, then an FxResetNotionalExchange object will be created.
If there is no FX reset, then a NotionalExchange object will be created.
public boolean isFinalExchange()
Setting this to true indicates that the notional is transferred at the end of the trade. This should typically be set to true in the case of an FX reset swap, or one with a varying notional.
This flag controls whether a notional exchange object is created when the leg is resolved.
It covers an exchange on the final payment date of the swap leg.
If there is an FX reset, then this flag is ignored, see intermediateExchange.
If there is no FX reset and the flag is true, then a NotionalExchange object will be created.
public ImmutableList<SwapPaymentEvent> getPaymentEvents()
Payment events include fees. Notional exchange may also be specified here instead of via the dedicated fields.
public BusinessDayAdjustment getPaymentBusinessDayAdjustment()
The business day adjustment is applied to period, exchange and event payment dates.
public RatePeriodSwapLeg.Builder toBuilder()
Copyright 2009-Present by OpenGamma Inc. and individual contributors
Apache v2 licensed
Additional documentation can be found at strata.opengamma.io.