// Minimal C++ example: realized measures on the synthetic fixture with backend auto|cpu|metal and CPU fallback. // Build: cmake --preset macos-release && cmake --build --preset macos-release --target example_minimal (or compile against libraid) #include #include "raid/data/io.hpp" #include "raid/data/calendar.hpp" #include "raid/data/returns.hpp" #include "raid/estimators/realized.hpp" int main(int argc, char** argv) { const std::string backend = argc > 1 ? argv[1] : "auto"; auto bars = raid::data::read_bars_csv(argc > 2 ? argv[2] : "datasets/fixtures/synthetic_bars_1m.csv"); raid::MarketCalendar cal; for (auto& [sym, b] : bars) { b.normalize(); auto reg = b.filter_session(cal, raid::SessionPolicy::regular); auto ir = raid::data::intraday_returns(reg); raid::est::RealizedOptions o; o.plan.backend = raid::backend_from_string(backend); o.plan.allow_fallback = true; auto m = raid::est::realized_measures(ir, o); std::printf("%s: %zu sessions, backend=%s precision=%s (%s)\n", sym.c_str(), m.sessions.size(), std::string(raid::to_string(m.stats.backend)).c_str(), std::string(raid::to_string(m.stats.precision)).c_str(), m.stats.note.c_str()); for (size_t k = 0; k < m.sessions.size(); ++k) std::printf(" %s M=%zu RV=%.3e BPV=%.3e RSV-=%.3e RQ=%.3e\n", m.sessions[k].iso().c_str(), m.n_returns[k], m.rv[k], m.bpv[k], m.rsv_neg[k], m.rq[k]); } return 0; }