81 [[nodiscard]]
static std::optional<NAssetManifold>
82 make(
int n, Eigen::MatrixXd cov,
double c_market = 1.0)
noexcept;
91 [[nodiscard]]
int dim()
const noexcept;
98 [[nodiscard]]
int n_assets()
const noexcept;
115 [[nodiscard]] std::optional<Eigen::MatrixXd>
116 metric_at(
const Eigen::VectorXd& x)
const noexcept;
126 [[nodiscard]] std::optional<Eigen::MatrixXd>
136 [[nodiscard]] std::optional<double>
138 const Eigen::VectorXd& dx)
const noexcept;
150 [[nodiscard]]
bool is_flat()
const noexcept;
157 [[nodiscard]] std::optional<Eigen::MatrixXd>
covariance()
const noexcept;
177 [[nodiscard]]
double c_market()
const noexcept;
186 [[nodiscard]]
const Eigen::MatrixXd&
metric()
const noexcept;
195 [[nodiscard]]
const Eigen::MatrixXd&
inverse_metric()
const noexcept;
205 void build_metric()
noexcept;
212 void build_inverse_metric()
noexcept;
218 Eigen::MatrixXd covariance_;
219 Eigen::MatrixXd metric_;
220 Eigen::MatrixXd inv_metric_;
227 return n_assets_ + 1;
(N+1)-dimensional Lorentzian manifold for N financial assets.
int n_assets() const noexcept
Returns the number of asset (spatial) dimensions.
std::optional< Eigen::MatrixXd > covariance() const noexcept
Returns the covariance matrix used to build the metric.
int dim() const noexcept
Returns the full manifold dimension = n_assets + 1.
const Eigen::MatrixXd & inverse_metric() const noexcept
Direct inverse metric accessor.
bool is_flat() const noexcept
Returns true if the metric has no coordinate dependence.
std::optional< Eigen::MatrixXd > inverse_metric_at(const Eigen::VectorXd &x) const noexcept
Evaluate the inverse metric g^μν at point x.
std::optional< Eigen::MatrixXd > metric_at(const Eigen::VectorXd &x) const noexcept
Evaluate the metric tensor at point x.
std::optional< double > line_element_sq(const Eigen::VectorXd &x, const Eigen::VectorXd &dx) const noexcept
Compute the squared line element ds² = g_μν dx^μ dx^ν.
static std::optional< NAssetManifold > make(int n, Eigen::MatrixXd cov, double c_market=1.0) noexcept
Factory: validate inputs then construct.
bool reduces_to_4d(const NAssetManifold &other) const noexcept
Check structural compatibility with a 4D (N=3) manifold.
double c_market() const noexcept
Return the market speed-of-light parameter.
const Eigen::MatrixXd & metric() const noexcept
Direct metric accessor (no coordinate argument).