Skip to content

Projection/Modeling Interface #20

Description

@alecloudenback

I am interested in doing integrated asset/liability modeling (see JuliaActuary org) but think that the right interface would transcend just actuarial projections, so bringing up the discussion here.

Let me first define what I mean by projections first: projections are an assumed pattern of a financial/instrument or contract. It is distinct from the valuation of such an object and the projection is scenario/context dependent.

Examples:

  • A callable bond where the cashflows are assumed to vary by the economic context
  • A universal life insurance contract which has non-guaranteed elements that may vary by scenario in different projection models.

Other examples of things I would consider "projectable":

  • shares of common stock
  • term life insurance policies
  • loans
  • mortgages
  • cash
  • perpetuities

What I have had a difficult time with is defining an interface that meets what I feel like a modern modeling system should have:

  • intuitive API
  • ability to accommodate different timesteps:
    • daily calendar days (with and without the complexity of DayCounts)
    • monthly/annual
  • Is iterable
    • each timestep can be walked through and the projection either terminates because there is nothing left to project or tracks the current state and may never end (e.g. a perpetuity)
  • Is contextually aware
    • different assets/liabilities could interact (e.g. having the asset side of the balance sheet affect the liabilities and vice versa)
  • Is (or can be) lazy
    • I may simply want to project until all liabilities have been defeased rather than stop after a certain timepoint

I was wondering if this was something that others have thought about or have design ideas/examples to point to?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions