1.Introduction
2.Financial instruments and pricing engines
- 2.1The
Instrumentclass - 2.1.1Interface and requirements
- 2.1.2Implementation
- Aside: const or not const?
- 2.1.3Example: interest-rate swap
- Aside: handles and shared pointers.
- 2.1.4Further developments
- 2.2Pricing engines
- Aside: impure virtual methods.
- 2.2.1Example: plain-vanilla option
3.Term structures
- 3.1The
TermStructureclass - 3.1.1Interface and requirements
- 3.1.2Implementation
- Aside: evaluation date tricks.
- 3.2Interest-rate term structures
- 3.2.1Interface and implementation
- 3.2.2Discount, forward-rate, and zero-rate curves
- Aside: symmetry break.
- Aside: twin classes.
- 3.2.3Example: bootstrapping an interpolated curve
- Aside: a friend in need.
- 3.2.4Example: adding z-spread to an interest-rate curve
- 3.3Other term structures
- 3.3.1Default-probability term structures
- Aside: Cinderella method.
- 3.3.2Inflation term structures
- 3.3.3Volatility term structures
- 3.3.4Equity volatility structures
- Aside: interpolations and extrapolations.
- 3.3.5Interest-rate volatility structures
4.Cash flows and coupons
- 4.1The
CashFlowclass - Aside: late payments.
- 4.2Interest-rate coupons
- 4.2.1Fixed-rate coupons
- 4.2.2Floating-rate coupons
- Aside: keeping one’s balance.
- 4.2.3Example: LIBOR coupons
- Aside: breach of contract.
- 4.2.4Example: capped/floored coupons
- 4.2.5Generating cash-flow sequences
- 4.2.6Other coupons and further developments
- 4.3Cash-flow analysis
- 4.3.1Example: fixed-rate bonds
5.Parameterized models and calibration
- 5.1The
CalibrationHelperclass - 5.1.1Example: the Heston model
- Aside: breaking assumptions
- 5.2Parameters
- 5.3The
CalibratedModelclass - 5.3.1Example: the Heston model, continued
6.The Monte Carlo framework
- 6.1Path generation
- 6.1.1Random-number generation
- Aside: the road more traveled.
- 6.1.2Stochastic processes
- 6.1.3Random path generators
- Aside: access patterns.
- Aside: stepping on one’s own toes.
- 6.2Pricing on a path
- 6.3Putting it all together
- 6.3.1Monte Carlo traits
- 6.3.2The Monte Carlo model
- 6.3.3Monte Carlo simulations
- Aside: synchronized walking.
- 6.3.4Example: basket option
- Aside: need-to-know basis.
7.The tree framework
- 7.1The
LatticeandDiscretizedAssetclasses - 7.1.1Example: discretized bonds
- 7.1.2Example: discretized option
- 7.2Trees and tree-based lattices
- 7.2.1The
Treeclass template - Aside: curiouser and curiouser.
- 7.2.2Binomial and trinomial trees
- 7.2.3The
TreeLatticeclass template - 7.3Tree-based engines
- 7.3.1Example: callable fixed-rate bonds
8.The finite-difference framework
- 8.1The old framework
- 8.1.1Differential operators
- 8.1.2Evolution schemes
- 8.1.3Boundary conditions
- 8.1.4Step conditions
- Aside: look, Ma, no hands.
- 8.1.5The
FiniteDifferenceModelclass - 8.1.6Example: American option
- 8.1.7Time-dependent operators
- 8.2The new framework
- 8.2.1Meshers
- 8.2.2Operators
- 8.2.3Examples: Black-Scholes operators
- 8.2.4Initial, boundary, and step conditions
- Aside: dispelling magic.
- 8.2.5Schemes and solvers
9.Conclusion
A. Odds and ends
- Basic types
- Date calculations
- Dates and periods
- Calendars
- Day-count conventions
- Schedules
- Finance-related classes
- Market quotes
- Interest rates
- Indexes
- Aside: how much generalization?
- Exercises and payoffs
- Math-related classes
- Interpolations
- Aside: gordian knots
- One-dimensional solvers
- Optimizers
- Statistics
- Aside: extreme expectations.
- Linear algebra
- Global settings
- Aside: more mutations than in a B-movie.
- Utilities
- Smart pointers and handles
- Aside: pointer semantics.
- Error reporting
- Disposable objects
- Design patterns
- The Observer pattern
- The Singleton pattern
- The Visitor pattern