MFDRO¶
Point-in-time multi-frequency distribution disagreement, with the evidence needed to audit every estimate.
MFDRO turns a daily panel of simple returns into a reproducible path of Wasserstein dispersion estimates. It keeps the scientific configuration, frequency construction, random seeds, window checks, and skipped formations visible.
Install¶
python -m pip install mfdro
MFDRO supports Python 3.10 and newer. See Getting started for a pinned installation and a complete first estimate.
What you get¶
-
A small, explicit API
Start from
MultiFrequencySignal, choose a validatedSignalConfig, and receive labelled pandas outputs. Use a preset for exploration or declare every scientific choice yourself. -
Two to many frequencies
Daily, weekly, monthly is only the default. Any ordered grid with at least two measures is supported; resampling boundaries and effective horizons are explicit.
-
Point-in-time diagnostics
Inspect the complete formation schedule before paying for transport geometry. Warm-up, calendar mismatch, and insufficient aggregation samples are machine-readable.
-
Portable research artifacts
Save estimates, audits, skipped dates, the exact configuration, a manifest, and SHA-256 checksums without using unsafe pickle files.
Scope, without ambiguity¶
MFDRO estimates cross-frequency distribution disagreement. rho is a
non-negative squared dispersion and sqrt_rho is its square root. Neither
is an expected return, a buy/sell recommendation, nor an automatically
calibrated DRO radius.
The package deliberately does not download or clean production data, infer an investable universe, solve a portfolio problem, or simulate execution. Those steps have different assumptions and belong in explicit downstream components. See the end-to-end workflow and backtesting boundary.
Alpha research software
The implementation is tested and typed, but the public API is not frozen across minor releases. Pin an exact package version and retain exported results for any research archive.
Choose your next page¶
- New to the package: Getting started
- Bringing real data: Data contract
- Choosing numerical settings: Choosing a configuration
- Integrating another backtester or optimizer: Backtesting integration