Documentation build: 2ad88e973293
quant-pricer-cpp
Loading...
Searching...
No Matches
portfolio.hpp
Go to the documentation of this file.
1
2#pragma once
3
4#include <cstddef>
5#include <vector>
6
7namespace quant::portfolio {
8
9enum class OptionType : int { Put = -1, Call = 1 };
10
13 double quantity;
14 double spot;
15 double strike;
16 double rate;
17 double dividend;
18 double volatility;
19 double time;
20};
21
23 double price;
24 double value;
25 double delta;
26 double gamma;
27 double vega;
28 double theta;
29 double rho;
30};
31
33 double value{};
34 double delta{};
35 double gamma{};
36 double vega{};
37 double theta{};
38 double rho{};
39};
40
41struct RiskResult {
42 std::vector<PositionRisk> positions;
44};
45
53
55 std::size_t scenario_count{};
56 std::size_t position_count{};
58 std::vector<double> portfolio_pnl;
59 // Scenario-major (scenario_count, position_count); empty in aggregate-only mode.
60 std::vector<double> position_pnl;
61};
62
65RiskResult price_risk(const std::vector<VanillaPosition>& positions);
66
69ScenarioResult scenario_pnl(const std::vector<VanillaPosition>& positions,
70 const std::vector<MarketShock>& shocks, bool include_position_pnl = false);
71
72} // namespace quant::portfolio
Vectorized vanilla-option portfolio valuation and deterministic stress P&L.
Definition portfolio.hpp:7
OptionType
Definition portfolio.hpp:9
ScenarioResult scenario_pnl(const std::vector< VanillaPosition > &positions, const std::vector< MarketShock > &shocks, bool include_position_pnl=false)
Definition portfolio.cpp:141
RiskResult price_risk(const std::vector< VanillaPosition > &positions)
Definition portfolio.cpp:121
Definition portfolio.hpp:46
double dividend_shift
Definition portfolio.hpp:50
double time_elapsed
Definition portfolio.hpp:51
double spot_return
Definition portfolio.hpp:47
double rate_shift
Definition portfolio.hpp:49
double volatility_shift
Definition portfolio.hpp:48
Definition portfolio.hpp:32
double theta
Definition portfolio.hpp:37
double vega
Definition portfolio.hpp:36
double rho
Definition portfolio.hpp:38
double delta
Definition portfolio.hpp:34
double value
Definition portfolio.hpp:33
double gamma
Definition portfolio.hpp:35
Definition portfolio.hpp:22
double rho
Definition portfolio.hpp:29
double theta
Definition portfolio.hpp:28
double vega
Definition portfolio.hpp:27
double value
Definition portfolio.hpp:24
double price
Definition portfolio.hpp:23
double delta
Definition portfolio.hpp:25
double gamma
Definition portfolio.hpp:26
Definition portfolio.hpp:41
PortfolioTotals totals
Definition portfolio.hpp:43
std::vector< PositionRisk > positions
Definition portfolio.hpp:42
Definition portfolio.hpp:54
std::vector< double > position_pnl
Definition portfolio.hpp:60
std::size_t scenario_count
Definition portfolio.hpp:55
double base_portfolio_value
Definition portfolio.hpp:57
std::size_t position_count
Definition portfolio.hpp:56
std::vector< double > portfolio_pnl
Definition portfolio.hpp:58
Definition portfolio.hpp:11
double dividend
Definition portfolio.hpp:17
double quantity
Definition portfolio.hpp:13
double volatility
Definition portfolio.hpp:18
double strike
Definition portfolio.hpp:15
double time
Definition portfolio.hpp:19
double spot
Definition portfolio.hpp:14
OptionType type
Definition portfolio.hpp:12
double rate
Definition portfolio.hpp:16