This package contains the interface for lifecycle related processes. It contains the following modules:

  • Effect: Interface for contracts exposing effects of lifecycling processes, e.g., the payment resulting from a bond coupon
  • Election: Interface to allow for elections to be made on claim based instruments
  • Election.Factory: Factory interface to instantiate elections on claim based instruments
  • Event: Interface for a lifecycle event. An event is any contract that triggers the processing of a lifecycle rule. Events can be, e.g., dividend announcements or simply the passing of time.
  • Event.Distribution: Event interface for the distribution of units of an instrument for each unit of a target instrument (e.g. share or cash dividends)
  • Event.Replacement: Event interface for the replacement of units of an instrument with a basket of other instruments (e.g. stock merger)
  • Event.Time: Event interface for events that signal the passing of (business) time
  • Rule.Lifecycle: Interface implemented by rules that lifecycle and evolve instruments
  • Rule.Claim: Interface for contracts that allow holders to claim an Effect and generate settlement instructions
  • Observable.NumericObservable: Interface to observe time-dependent numerical values (e.g. a stock price or an interest rate fixing)
  • Observable.TimeObservable: Interface implemented by templates exposing time information

The Lifecycling page contains an overview of the lifecycle process and explains the relationship between events, lifecycle rules and effects. Check out the Lifecycling tutorial for a description on how lifecycling works in practice. There is also the tutorial How to implement a Contingent Claims-based instrument, which describes how claims are defined, how to use a NumericObservable, and how the Lifecycle interface is implemented for bonds.

The following diagram shows the incoming and outgoing dependencies for this package:

A diagram showing the incoming and outgoing dependencies of the package.