fincore_cpp

Native C++23 analytics for portfolios, factors, performance and risk — one typed API over a local DataFrame, with no Python dependency at run time.

Quickstart Installation API reference GitHub

git clone https://github.com/cloudQuant/fincore_cpp.git
cd fincore_cpp && git submodule update --init --recursive
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel
ctest --test-dir build --output-on-failure

Find your path

If you want to…

Start here

Get something running

Quickstart — build a frame, compute a metric, render a report

Pick the right metric

Metrics and rolling windows — definitions, annualization and degenerate cases

Produce risk numbers

Portfolio, risk, optimization and simulation — estimators, backtests, statuses

Study a factor panel

Factor research — IC, quantiles, tears and exports

Look up a symbol

API reference — every public symbol, generated from the headers

Understand a design choice

Data and numerical conventions — timestamps, NaN, ownership, digests

What is inside

Area

Highlights

Core data

dataframe, UTC nanosecond timestamps, calendar and frequency helpers

Metrics

Returns, ratios, drawdowns, rolling windows, stability statistics

Risk

Historical, EVT and GARCH VaR/ES, backtests, walk-forward, Bayesian cone

Portfolio

Positions, transactions, round trips, turnover, capacity, cash flows

Factor research

Analysis pipeline, IC and quantile tables, tears, point-in-time joins

Attribution

Brinson, factor and style regression, exposures, prediction

Optimization

Mean-variance, frontier, risk parity with box and sector constraints

Reporting

One document rendered to HTML, XLSX, PDF, Plotly, Bokeh, axes, ImPlot

Runtime

Operation catalog, session caching, extensions, deterministic digests

Simulation

GBM, bootstrap, Latin hypercube, antithetic variates

How this documentation is organised

  • Start here — installation, quickstart, data and numerical conventions.

  • Guides — task-oriented explanations of each area, with the failure rules that matter in practice.

  • Reference — one page per module, generated from the public headers; the text you read there is the text in the source.

  • Project — migration notes, performance method, troubleshooting, publication state and contribution rules.

Scope and status

The library consumes its own DataFrame type and returns owning typed results. The stable public surface is documented separately from internal fincore::detail helpers, and optional visualization adapters are built only when their CMake options and GUI dependencies are enabled.

Every public symbol is documented and tracked in the API ledger; both language builds run strict Sphinx checks on every change, and the C++ test suite runs on each push. Published state, including which platforms are live, is recorded in publication notes rather than asserted here.