Package-level declarations
Types
Simple enum for returning accurals adjusted or unadjusted. We don't actually do anything with this yet though, so it's ignored for now.
Interface for state objects that support being netted with other state objects.
A business calendar performs date calculations that take into account national holidays and weekends. This is a typical feature of financial contracts, in which a business may not want a payment event to fall on a day when no staff are around to handle problems.
This reflects what happens if a date on which a business event is supposed to happen actually falls upon a non-working day. Depending on the accounting requirement, we can move forward until we get to a business day, or backwards. There are some additional rules which are explained in the individual cases below.
This is utilised in the DateRollConvention class to determine which way we should initially step when finding a business day.
This forms the day part of the "Day Count Basis" used for interest calculation. Note that the first character cannot be a number (enum naming constraints), so we drop that in the toString lest some people get confused.
This forms the year part of the "Day Count Basis" used for interest calculation.
Interface representing an agreement that exposes various attributes that are common. Implementing it simplifies implementation of general flows that manipulate many agreement types.
Represents a textual expression of e.g. a formula
A Fix represents a named interest rate, on a given day, for a given duration. It can be embedded in a tx.
Interface adding fixing specific methods.
Interface for state objects that support being netted with other state objects.
A common netting command for contracts whose states can be netted.
Whether the payment should be made before the due date, or after it.
Properties
This is an ultra-trivial implementation of commercial paper, which is essentially a simpler version of a corporate bond. It can be seen as a company-specific currency. A company issues CP with a particular face value, say $100, but sells it for less, say $90. The paper can be redeemed for cash at a given date in the future. Thus this example would have a 10% interest rate with a single repayment. Commercial paper is often rolled over (the maturity date is adjusted as if the paper was redeemed and immediately repurchased, but without having to front the cash).