FastMM documentation
FastMM C++ API 0.6.0
Public headers, tier 1 and tier 2
Loading...
Searching...
No Matches
feature_table.hpp File Reference

FeatureTable: book features and forward mid moves, one row per qualifying market-data event, so a predictor can be judged before anyone writes a strategy around it. More...

#include <cstdint>
#include <string>
#include <vector>

Go to the source code of this file.

Classes

struct  fastmm::research::FeatureRows
 
struct  fastmm::research::HorizonCoverage
 Per horizon, how many rows got a forward mid and why the rest did not. More...
 
struct  fastmm::research::FeatureTable
 

Namespaces

namespace  fastmm
 
namespace  fastmm::research
 

Functions

std::string fastmm::research::horizon_label (std::int64_t ns)
 "100ms", "1s", "1m": the shortest exact unit, the spelling MarkoutHorizon::label() uses.
 

Variables

constexpr std::int64_t fastmm::research::kDefaultHorizonsNs []
 Horizons measured by default, in nanoseconds of event time: 100 ms, 1 s, 10 s, 1 minute.
 

Detailed Description

FeatureTable: book features and forward mid moves, one row per qualifying market-data event, so a predictor can be judged before anyone writes a strategy around it.

Columns are structure-of-arrays, the convention of include/fastmm/backtest/result.hpp: each column is one contiguous vector, so Python borrows it as a numpy array without a copy. Prices, quantities and spreads are raw 1e-8 fixed point; imbalance is a Ratio in the same scale (1e8 == 1.0).

A forward mid is the venue mid at ts + horizon, read AT that time and never interpolated - the same rule the backtest applies to its fill markouts. A row whose horizon falls after the last event of the data, or lands where the book has no two sides, has no forward mid: the column holds 0 and HorizonCoverage counts it. It is never substituted with the last known mid. This is the discipline of include/fastmm/backtest/markout.hpp (excluded_past_end), applied per row instead of per fill.