quant-pricer-cpp
Loading...
Searching...
No Matches
american.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <cstddef>
4#include <cstdint>
5#include <optional>
6#include <vector>
7
8#include "quant/barrier.hpp"
9#include "quant/pde.hpp"
10
11namespace quant::american {
12
13struct Params {
14 double spot;
15 double strike;
16 double rate;
17 double dividend;
18 double vol;
19 double time;
21};
22
23double price_binomial_crr(const Params& p, int steps);
24
36
37struct PsorResult {
38 double price;
41};
42
44
45struct LsmcParams {
47 std::uint64_t num_paths;
48 std::uint64_t seed;
50 bool antithetic{true};
51 double ridge_lambda{0.0};
52 double itm_moneyness_eps{0.0};
53 std::size_t min_itm{32};
54};
55
57 std::vector<std::size_t> itm_counts; // number of truly ITM paths per exercise date
58 std::vector<std::size_t> regression_counts; // number of samples entering regression per date
59 std::vector<double> condition_numbers; // condition number of normal equations matrix per date
60};
61
67
68LsmcResult price_lsmc(const LsmcParams& params);
69
70struct Greeks {
71 double delta;
72 double gamma;
73};
74
75// Compute Greeks via bump-and-reprice around spot using PSOR as pricer.
76// rel_bump is a small relative bump (e.g., 1e-3)
78
79} // namespace quant::american
int steps
Definition mc.cpp:129
const McParams & params
Definition mc.cpp:126
Definition american.hpp:11
LsmcResult price_lsmc(const LsmcParams &params)
Definition american.cpp:431
PsorResult price_psor(const PsorParams &params)
Definition american.cpp:365
Greeks greeks_psor_bump(PsorParams params, double rel_bump)
Definition american.cpp:621
double price_binomial_crr(const Params &p, int steps)
Definition american.cpp:336
OptionType
Definition barrier.hpp:6
Definition american.hpp:70
double gamma
Definition american.hpp:72
double delta
Definition american.hpp:71
Definition american.hpp:56
std::vector< std::size_t > itm_counts
Definition american.hpp:57
std::vector< std::size_t > regression_counts
Definition american.hpp:58
std::vector< double > condition_numbers
Definition american.hpp:59
Definition american.hpp:45
std::uint64_t seed
Definition american.hpp:48
double ridge_lambda
Definition american.hpp:51
double itm_moneyness_eps
Definition american.hpp:52
Params base
Definition american.hpp:46
std::size_t min_itm
Definition american.hpp:53
int num_steps
Definition american.hpp:49
bool antithetic
Definition american.hpp:50
std::uint64_t num_paths
Definition american.hpp:47
Definition american.hpp:62
double std_error
Definition american.hpp:64
LsmcDiagnostics diagnostics
Definition american.hpp:65
double price
Definition american.hpp:63
Definition american.hpp:13
quant::OptionType type
Definition american.hpp:20
double spot
Definition american.hpp:14
double vol
Definition american.hpp:18
double dividend
Definition american.hpp:17
double time
Definition american.hpp:19
double strike
Definition american.hpp:15
double rate
Definition american.hpp:16
Definition american.hpp:25
double stretch
Definition american.hpp:30
quant::pde::PdeParams::UpperBoundary upper_boundary
Definition american.hpp:29
double omega
Definition american.hpp:31
bool use_rannacher
Definition american.hpp:34
bool log_space
Definition american.hpp:28
Params base
Definition american.hpp:26
int max_iterations
Definition american.hpp:32
quant::pde::GridSpec grid
Definition american.hpp:27
double tolerance
Definition american.hpp:33
Definition american.hpp:37
int total_iterations
Definition american.hpp:39
double price
Definition american.hpp:38
double max_residual
Definition american.hpp:40
Grid specification for PDE solver.
Definition pde.hpp:12
UpperBoundary
Upper boundary condition type.
Definition pde.hpp:38