E - JDK Date/Calendar, JDK8 LocalDate or Joda LocalDatepublic class CurrencyDateCalculatorBuilder<E extends Serializable> extends Object
CurrencyDateCalculatorBuilder<LocalDate> builder = new CurrencyDateCalculatorBuilder<LocalDate>() //
.currencyPair("EUR", "GBP", SpotLag.T_2) //
.ccy1Calendar(new DefaultHolidayCalendar<LocalDate>()) // empty
.ccy1Week(WorkingWeek.DEFAULT) // Mon-Fri
.ccy2Calendar(gbpCalendar) //
.ccy2Week(WorkingWeek.DEFAULT) // Mon-Fri
.crossCcy("USD") // the usual suspect
.crossCcyCalendar(usdCalendar) //
.crossCcyWeek(WorkingWeek.DEFAULT) // Mon-Fri;
.adjustStartDateWithCurrencyPair(true) // default is true, Move the startDate to a working date for ccy1 and ccy2
.tenorHolidayHandler(new LocalDateForwardHandler()) // Forward (or equivalent for your implementation)
.brokenDateAllowed(false) // use the CrossCcy holidays on Spot and Tenor Date
.currencyCalculatorConfig(new DefaultCurrencyCalculatorConfig()) // Will be used for finding Working Weeks IF NOT PROVIDED and Latin
// American ccy USD handling.
| Modifier and Type | Field and Description |
|---|---|
private boolean |
adjustStartDateWithCurrencyPair |
private boolean |
brokenDateAllowed |
private String |
ccy1 |
private HolidayCalendar<E> |
ccy1Calendar |
private WorkingWeek |
ccy1Week |
private String |
ccy2 |
private HolidayCalendar<E> |
ccy2Calendar |
private WorkingWeek |
ccy2Week |
private String |
crossCcy |
private HolidayCalendar<E> |
crossCcyCalendar |
private WorkingWeek |
crossCcyWeek |
private CurrencyCalculatorConfig |
currencyCalculatorConfig |
private SpotLag |
spotLag |
private HolidayHandler<E> |
tenorHolidayHandler |
| Constructor and Description |
|---|
CurrencyDateCalculatorBuilder()
Default values are:
crossCcy = USD
ccy1Calendar = Empty Calendar
ccy2Calendar = Empty Calendar
crossCcyCalendar = Empty Calendar
brokenDateAllowed = false
adjustStartDateWithCurrencyPair = true
spotLag = SpotLag.T_2
|
| Modifier and Type | Method and Description |
|---|---|
CurrencyDateCalculatorBuilder<E> |
adjustStartDateWithCurrencyPair(boolean adjustStartDateWithCurrencyPair)
If true, the startDate given to the calculator will be move to the NEXT working day for both currencies (e.g. it will skip weekends
and any holidays).
|
private static void |
append(StringBuilder b,
String string) |
CurrencyDateCalculatorBuilder<E> |
brokenDateAllowed(boolean brokenDateAllowed)
If true, then the calculator can return a SpotDate/TenorDate where the cross currency is NOT a trading date (e.g.
|
CurrencyDateCalculatorBuilder<E> |
ccy1Calendar(HolidayCalendar<E> ccy1Calendar)
The holiday calendar for ccy1, if null or not set, then a default calendar will be used with NO holidays.
|
CurrencyDateCalculatorBuilder<E> |
ccy1Week(WorkingWeek ccy1Week)
Provides the definition of a working week for the currency; if not provided and the currencyCalculatorConfig is given, it
will do a look up for this currency.
|
CurrencyDateCalculatorBuilder<E> |
ccy2Calendar(HolidayCalendar<E> ccy2Calendar)
The holiday calendar for ccy2, if null or not set, then a default calendar will be used with NO holidays.
|
CurrencyDateCalculatorBuilder<E> |
ccy2Week(WorkingWeek ccy2Week)
Provides the definition of a working week for the currency; if not provided and the currencyCalculatorConfig is given, it
will do a look up for this currency.
|
private void |
checkBrokenDate(StringBuilder b) |
void |
checkValidity()
Checks the builder and throws an IllegalArgumentException if there are issues e.g.
|
CurrencyDateCalculatorBuilder<E> |
crossCcy(String crossCcy)
If brokenDate is not allowed, we do require to check the WorkingWeek and Holiday for the crossCcy when
validating the SpotDate or a Tenor date; if null or not set, then a default calendar will be used with NO holidays.
|
CurrencyDateCalculatorBuilder<E> |
crossCcyCalendar(HolidayCalendar<E> crossCcyCalendar)
If brokenDate is not allowed, we do require to check the WorkingWeek and Holiday for the crossCcy when
validating the SpotDate or a Tenor date.
|
CurrencyDateCalculatorBuilder<E> |
crossCcyWeek(WorkingWeek crossCcyWeek)
If brokenDate is not allowed, we do require to check the WorkingWeek and Holiday for the crossCcy when
validating the SpotDate or a Tenor date.
|
CurrencyDateCalculatorBuilder<E> |
currencyCalculatorConfig(CurrencyCalculatorConfig currencyCalculatorConfig)
Provides information about currencies subject to USD on T+1 and WorkingWeeks if not specified individually.
|
CurrencyDateCalculatorBuilder<E> |
currencyPair(String ccy1,
String ccy2,
SpotLag spotLag)
This specialises the calculator to the given currency pair and the SpotLag (0, 1, 2).
|
String |
getCcy1() |
HolidayCalendar<E> |
getCcy1Calendar() |
WorkingWeek |
getCcy1Week() |
String |
getCcy2() |
HolidayCalendar<E> |
getCcy2Calendar() |
WorkingWeek |
getCcy2Week() |
String |
getCrossCcy() |
HolidayCalendar<E> |
getCrossCcyCalendar() |
WorkingWeek |
getCrossCcyWeek() |
CurrencyCalculatorConfig |
getCurrencyCalculatorConfig() |
SpotLag |
getSpotLag() |
HolidayHandler<E> |
getTenorHolidayHandler() |
boolean |
isAdjustStartDateWithCurrencyPair() |
boolean |
isBrokenDateAllowed() |
CurrencyDateCalculatorBuilder<E> |
tenorHolidayHandler(HolidayHandler<E> holidayHandler)
Provides the holiday handler for the Tenor Date, note that Spot is ALWAYS using Forward.
|
private HolidayCalendar<E extends Serializable> ccy1Calendar
private HolidayCalendar<E extends Serializable> ccy2Calendar
private HolidayCalendar<E extends Serializable> crossCcyCalendar
private HolidayHandler<E extends Serializable> tenorHolidayHandler
private WorkingWeek ccy1Week
private WorkingWeek ccy2Week
private WorkingWeek crossCcyWeek
private CurrencyCalculatorConfig currencyCalculatorConfig
private boolean brokenDateAllowed
private boolean adjustStartDateWithCurrencyPair
public CurrencyDateCalculatorBuilder()
public void checkValidity()
private void checkBrokenDate(StringBuilder b)
private static void append(StringBuilder b, String string)
public String getCrossCcy()
public HolidayCalendar<E> getCcy1Calendar()
public HolidayCalendar<E> getCcy2Calendar()
public HolidayCalendar<E> getCrossCcyCalendar()
public HolidayHandler<E> getTenorHolidayHandler()
public WorkingWeek getCcy1Week()
public WorkingWeek getCcy2Week()
public WorkingWeek getCrossCcyWeek()
public CurrencyCalculatorConfig getCurrencyCalculatorConfig()
public boolean isBrokenDateAllowed()
public CurrencyDateCalculatorBuilder<E> currencyPair(String ccy1, String ccy2, SpotLag spotLag)
ccy1 - ccy2 - spotLag - public SpotLag getSpotLag()
public boolean isAdjustStartDateWithCurrencyPair()
public CurrencyDateCalculatorBuilder<E> adjustStartDateWithCurrencyPair(boolean adjustStartDateWithCurrencyPair)
adjustStartDateWithCurrencyPair - default truepublic CurrencyDateCalculatorBuilder<E> brokenDateAllowed(boolean brokenDateAllowed)
brokenDateAllowed - default falsepublic CurrencyDateCalculatorBuilder<E> currencyCalculatorConfig(CurrencyCalculatorConfig currencyCalculatorConfig)
currencyCalculatorConfig - the configpublic CurrencyDateCalculatorBuilder<E> ccy1Calendar(HolidayCalendar<E> ccy1Calendar)
ccy1Calendar - the Calendar for ccy1public CurrencyDateCalculatorBuilder<E> ccy2Calendar(HolidayCalendar<E> ccy2Calendar)
ccy2Calendar - the Calendar for ccy2public CurrencyDateCalculatorBuilder<E> crossCcy(String crossCcy)
crossCcy - the crossCcy (default USD).public CurrencyDateCalculatorBuilder<E> crossCcyCalendar(HolidayCalendar<E> crossCcyCalendar)
crossCcyCalendar - the set of holidays for the crossCcypublic CurrencyDateCalculatorBuilder<E> tenorHolidayHandler(HolidayHandler<E> holidayHandler)
holidayHandler - the Handler to work out what to do if a Tenor Date falls on a non WorkingDay.public CurrencyDateCalculatorBuilder<E> ccy1Week(WorkingWeek ccy1Week)
ccy1Week - WorkingWeek definitionpublic CurrencyDateCalculatorBuilder<E> ccy2Week(WorkingWeek ccy2Week)
ccy2Week - WorkingWeek definitionpublic CurrencyDateCalculatorBuilder<E> crossCcyWeek(WorkingWeek crossCcyWeek)
crossCcyWeek - the crossCcy WorkingWeek.Copyright © 2006–2019 Appendium - Portfolio Financing Platform. All rights reserved.