Skip to content

Commit cb5b127

Browse files
committed
Filled-out README.md.
1 parent 3bb6d62 commit cb5b127

File tree

2 files changed

+40
-3
lines changed

2 files changed

+40
-3
lines changed

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ if(CMAKE_BUILD_TYPE MATCHES "Debug")
1111
message("Building in DEBUG mode, enabling testing macros.")
1212
add_definitions(-DTESTING)
1313
# add_definitions(-DDUMPINTERMEDIATE)
14+
# NOTE: this dumps results of the random generators to data/
1415
add_definitions(-DDUMPRESULTS)
1516
endif()
1617

README.md

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,45 @@
11
# derivatives
2-
Approximately based on [M. Joshi's C++ Design Patterns and Derivatives Pricing](https://www.amazon.com/Patterns-Derivatives-Pricing-Mathematics-Finance/dp/0521721628), making use of updated paradigms wherever possible.
2+
Approximately based on [M. Joshi's C++ Design Patterns and Derivatives Pricing](https://www.amazon.com/Patterns-Derivatives-Pricing-Mathematics-Finance/dp/0521721628), making use of updated paradigms wherever possible.
33

44
*C++17* strongly recommended.
55

6-
## dependencies
7-
[*cmake*](https://github.com/andleb/cmake) repository for the *CMake* scripts, included as a submodule.
6+
## Overview
7+
The project roughly follows the second edition of the aforementioned book, which was published in 2008. While the numerics and mathematics haven't changed, *C++* has gone through quite a bit of a revolution in the time since. Due to this fact, the original book includes some now archaic elements, such as a self-implemented smart pointer. All such were replaced with their modern equivalents. Some chapters do not correspond to a concrete problem and have been excluded; in others, the sub-problems have often been consolidated/handled in a more generic way.
8+
9+
The code itself is separated into the driver/playground routines, located in *mains*, and the library, located in *src*.
10+
The *mains* correspond to each relevant chapter, look at the list of includes in each to follow along with the development of the library. The original book features a heavy evolution of concepts, especially in the first chapters. This has been compacted a bit in this project.
11+
12+
#### Ch. 1 - 5:
13+
These perform *Monte-Carlo* pricing of various derivatives, with an increasing degree of software architecture.
14+
15+
#### Ch. 6:
16+
This chapter implements custom random number generators and integrates them with the architecture developed in preceding chapters.
17+
18+
#### Ch. 7:
19+
Deals with the pricing of exotic, more specifically, path-dependent, options via *Monte-Carlo* using all the preceding infrastructure.
20+
21+
#### Ch. 8:
22+
Switches gears and introduces pricing on *trees* (or *lattices*). For this, I have developed a helper static recombinant tree class that is found in the *common* repository (see below). This allows us to price early-exercise options.
23+
24+
#### Ch. 9:
25+
Deals with the concept of *implied volatility* and introduces two simple numerical root-finding routines.
26+
27+
#### Ch. 10, 14:
28+
Introduce the factory pattern & apply it to the existing architecture. The latter improves on the former by making the factory completely generic.
29+
30+
NOTE: I have stayed away from *C*-like input/output parameters and have replaced them with *rvalue* reference inputs that get moved into, modified in place, and returned by value (moved out). I feel that this syntax is clearer and also mirrors the approach popular *Python* numerics packages, such as *Pandas*, are taking with regards to in-place modification. There is also the added benefit of zero additional performance costs afforded to us by modern *C++*.
31+
32+
## Dependencies & installation
33+
[*cmake*](https://github.com/andleb/cmake) repository for the *CMake* scripts; included as a submodule.
834

935
[*common*](https://github.com/andleb/common) repository for utility classes & functions.
36+
37+
The project is built via *CMake*. One can, of course, modify the *CMake* configuration at will or use one's own.
38+
39+
40+
## Authors
41+
42+
Andrej Leban
43+
44+
## Acknowledgments
45+
dr. Mark Joshi (RIP)

0 commit comments

Comments
 (0)