Skip to content

Default day count from index - #1553

Merged
jodastephen merged 4 commits into
masterfrom
topic/default-day-count
Sep 18, 2017
Merged

Default day count from index#1553
jodastephen merged 4 commits into
masterfrom
topic/default-day-count

Conversation

@jodastephen

Copy link
Copy Markdown
Contributor

Use additional FloatingRateIndex logic to default day count.

Determines the index for each leg first, then calculates the default day count, then parses.

@brianweller89 brianweller89 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Few minor points on the review.

Can we add a test for the defaulting logic?

FloatingRateIndex index = parseIndex(row, legPrefix);
if (index != null) {
// floating leg
indices.add(index);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

indices.add(index) can be outside the if loop rather than here; will still add null for the fixed rate

// fixed leg
indices.add(null);
if (!findValue(row, legPrefix, DAY_COUNT_FIELD).isPresent()) {
missingDayCount = true;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we even need the missingDayCount check? Feels like this is an unnecessary layer of complexity in what is already quite complex code.

What's the harm of passing a non-null default into the parseLegs method? Will just be ignored if the fixed leg has defined value.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Case is where there is a fixed leg and two floating legs with different day counts. Must only trigger the "check day unique" logic when day count is actually missing.

throw new IllegalArgumentException(
"Swap leg must define day count on fixed legs when more than 2 floating legs");
}
defaultFixedLegDayCount = dayCounts.iterator().next();

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like the readibility of Iterables.getOnlyElement() in these situations

FloatingRateIndex index,
DayCount defaultFixedLegDayCount,
BusinessDayAdjustment bda,
Frequency accrualFrequency,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

accrual frequency not used anymore

if (frn.getType() == FloatingRateType.IBOR) {
// re-parse Ibor using tenor, which ensures tenor picked up from indexStr if present
Frequency freq = Frequency.parse(getValue(row, leg, FREQUENCY_FIELD));
Tenor iborTenor = freq.isTerm() ? frn.getDefaultTenor() : Tenor.of(freq.getPeriod());

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not immediately related to this PR but our getDefaultTenor() logic is not fully correct here.

Default tenor for most major currencies is 6M, with only USD being 3M

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

* This is useful for providing a basic default where errors need to be avoided.
* The value returned is not intended to be based on market conventions."

@jodastephen
jodastephen force-pushed the topic/default-day-count branch from 6269d87 to 955dfe5 Compare September 15, 2017 16:46
@jodastephen
jodastephen merged commit 1aff17f into master Sep 18, 2017
@jodastephen
jodastephen deleted the topic/default-day-count branch September 18, 2017 13:00
@jodastephen jodastephen added this to the v1.4 milestone Sep 18, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants