SPB Git

spb/wp40_uqo

Public MIT
1.7 KB

# C++ API (Phase 1)

cpp
#include "raid/data/io.hpp"            // read_bars_csv / read_bars_parquet / read_bars_arrow_ipc
#include "raid/data/calendar.hpp"      // MarketCalendar (XNYS)
#include "raid/data/returns.hpp"       // intraday_returns
#include "raid/estimators/realized.hpp"
#include "raid/estimators/ols.hpp"
#include "raid/models/garch.hpp"
#include "raid/backend/backend.hpp"    // resolve(plan), list_devices()

auto bars = raid::data::read_bars_csv("datasets/fixtures/synthetic_bars_1m.csv");
raid::MarketCalendar cal;
auto& b = bars["SYN1"]; b.normalize();                      // sort, dedupe, session index
auto q = b.validate(cal);                                   // QualityReport (counts, coverage)
auto reg = b.filter_session(cal, raid::SessionPolicy::regular);
auto ir = raid::data::intraday_returns(reg);                // CSR: r + session_offsets
raid::est::RealizedOptions ro; ro.plan.backend = raid::Backend::automatic;
auto m = raid::est::realized_measures(ir, ro);              // rv, bpv, rsv±, rq, jump, tripv; m.stats.backend/precision
raid::est::OlsOptions oo; oo.cov.type = raid::stats::CovType::hac_bartlett; oo.cov.hac_lags = 4;
auto fit = raid::est::ols(X, y, oo);                        // fit.estimate.to_json()
raid::models::GarchFitOptions go; go.model = raid::models::GarchModel::gjr; go.forecast_horizon = 5;
auto g = raid::models::garch_fit(daily_returns, go);        // g.ok() ⇔ converged

Error handling: all failures throw raid::RaidError with an ErrorCode (invalid_argument, data_quality, numerical, not_converged, unsupported, io, api, insufficient_samples, memory, cancelled). Optimisers do not throw on non-convergence; they return Estimate with convergence.converged = false.

Files · 5aa66725db0233807b19cc5388f7ea815cfe531d
Menu

Theme