€STR and Euro RFR Markets
€STR and Euro RFR Markets is a practical quant topic: specify it, estimate it, cost it, and only then allocate risk. What follows is a no-fluff working note aimed at systematic researchers who need something they can implement and falsify.
Why it matters
€STR and Euro RFR Markets sits at the intersection of estr, euro, rfr. In production quant systems it shows up as a research object you must specify, estimate, and stress — not as a slogan. This article defines the object precisely, gives a usable computation path, and lists the failure modes that destroy paper edges.
Definition and market context
€STR mechanics. Markets price related risks continuously; your job is to isolate the component that is measurable and tradable after costs. Relate the idea to neighboring topics such as quantitative trading, math for quants, research workflow so the signal is not researched in isolation.
Core math and estimators
EONIA legacy. Write the quantity as an explicit functional of observables. Prefer estimators with known sampling noise and bias diagnostics over opaque scores. When closed forms are unavailable, use simulation with controlled seeds and report confidence bands, not point estimates alone.
Implementation recipe
OIS discounting. Build a point-in-time pipeline: raw inputs → cleaned features → estimator → decision → execution assumptions. Log versions of every dependency. The sketch below is intentionally minimal; production code adds borrow, fees, latency, and venue microstructure.
import numpy as np
import pandas as pd
def compute_estr_euro_rfr(data: pd.DataFrame, window: int = 63) -> pd.Series:
"""Research sketch for: €STR and Euro RFR Markets.
Replace placeholders with production-grade estimators and costs.
"""
x = data.select_dtypes(include=[np.number]).iloc[:, 0].astype(float)
z = (x - x.rolling(window).mean()) / x.rolling(window).std()
signal = -np.tanh(z) # bounded transform; sign/convention is topic-specific
return signal.rename("estr_euro_rfr")
# Example hygiene: shift for point-in-time, then apply costs before judging edge
# signal = compute_estr_euro_rfr(df).shift(1)
| Piece | What to specify | Common mistake |
|---|---|---|
| Target | Exact definition of €STR and Euro RFR Markets | Vague proxy swapped mid-study |
| Horizon | Decision and holding horizons | Mixing intraday labels with daily features |
| Frictions | Fees, spread, impact, borrow | Mid-price fills forever |
| Risk | Caps, kill-switches, stress | Unbounded sizing on noisy z-scores |
| Governance | Owner, review cycle, lineage | Undocumented parameter edits |
Costs, capacity and regimes
cross-currency impacts. Edges that ignore transaction costs and capacity are fiction. Re-estimate through volatility regimes and funding stress. If performance concentrates in one regime, treat it as a conditional sleeve — not a universal law.
Research validation checklist
- Point-in-time timestamps only — no restatement lookahead
- Costs and borrow/funding in the backtest ledger
- Purged / walk-forward evaluation
- Multiple-testing awareness (deflated Sharpe)
- Stress and gap scenarios, not only average returns
- Shadow/live parity before scaling
Key takeaways
- €STR and Euro RFR Markets must be defined as a measurable object before it is traded
- Use point-in-time data, explicit horizons, and costed evaluation
- Connect the work to quantitative trading, math for quants, research workflow
- Treat regime dependence and capacity as first-class constraints
- Promote only after checklist validation and live/shadow agreement
