FinanceModels.jl
Design
- Contracts represent insturments that ultimately obligate a payment of cashflows, which may or may not be scenario dependant.
- Quotes are observed or reference prices that may be used to
fit
models. - Models are the combination of assumptions and logic that can then be used to realize the assumed cashflows that arise from a contract.
Motivation
FinanceModels.jl is the evolution of Yields.jl. Yields.jl was originally designed for very nice usage of term structures of yield curves, but three aspects held it back:
- The design was very oriented towards interest rates, and it was awkward to stick, e.g. volatility models into a package called Yields.jl
- The API for contructing curves was inconsistent because there are different ways to construct a given curve and the inputs to constructing a simple bootstrapped curve with a spline through given yields vs a best-fit of a variety of instrumnets was simply a different paradigm.
- There was a lack of ability to even express some types of contracts that are useful for model-fitting or modeling in general.
TODOs
bond.frequency.frequency
is awkward- Core contracts:
- Composite contact (e.g. Fixed + Float -> Swap)
- Forward contact
- Derivatives?
- distinguish between clean and dirty prices
- Projections
- Everythign is currently coerced to a F64/F64 Cashflow, but would like to be flexible with amount and timepoints
- How to integrate Dates?
- Core methods:
- port Yields.jl methods
- Ergonomics:
- Package design:
- promote
pv
to FinanceCore given it's utility here - promote
Cashflow
up to FC
- promote