πŸ“„

EUREX EFP & EFS

bzhmacro bzhmacro.com
01

Trade explorer

β€”

β€”

Loading…
β€”
Spread sign. spread bp is the futures-implied yield minus the cash leg β€” so a negative spread means the bond or swap yields more than the future implies. The futures-implied yield is the CTD's forward yield, which is why the CTD itself prints near zero and everything else prints its spread to the CTD.
On EFS spreads: the file does not say whether a swap floats on Euribor or €STR, and there is no field that could β€” so an unknown basis sits inside every EFS spread. No second cluster is visible in the rates, but that only rules out both conventions trading the same maturity on the same day. EFP-F spreads are unaffected.

What traded where

The spread is the variable that matters. Off-market prints stand out because an unwind carries the original trade's rate, not today's.

β€”

Bigger and darker = larger trade

On-market Off-market (>25bp) Gadget click to hide β€” the axis rescales to what is left

Volume

Futures-leg lots for the same contract and the same series shown above

On-market Off-market Gadget follows the legend above
02

Basis and cheapest-to-deliver

Both legs are struck simultaneously and printed on the same record, so the basis needs no external price feed and carries no timing mismatch. CTD is ranked on implied repo.

Read the conversion factor source. Basket bonds use Eurex's published factor. Bonds outside the basket get a synthetic factor, which is a normalisation and not a delivery parameter β€” and where the bond matures far from the basket window the factor bias dominates, so the gross basis stops being a spread. Filter on eurex published to see only bonds that can actually be delivered; the per-trade cf_bias_warning flag is in efpf_basis.csv.

Gross basis by conversion factor source

Deliverable is tight; synthetic is not a spread measure

Issuer traded β€” in basket vs outside

Weighted by DV01 of the futures leg, not lots

In basket Outside basket

Maturity traded, by DV01

EFP-F futures-leg DV01 per session, stacked by bond maturity bucket

03

Daily sizes and the roll

Eurex fixed income futures have a single delivery day β€” the 10th calendar day of the delivery month β€” with last trading two exchange days earlier. There is no notice period and no delivery window, so the date that governs the roll is the last trading day, not a first notice day.
FutureFrontLast tradingDelivery Days leftFront OI NextNext OIRolled

EFS daily lots β€” gadgets vs the rest

Stacked, futures leg

Gadget Other

Daily lots β€” EFP-F vs EFS

Futures leg, all products

EFP-Fin EFS

Roll progress β€” deferred share of open interest

Next contract OI as % of front + next

Rolled % Next-month volume

Open interest, front vs next

Absolute contracts β€” the roll is a transfer between the two

Front contract OI Next contract OI

04

Candidate unwinds

Off-market prints matched to an earlier print of the same maturity within 1bp. A match is evidence, not proof β€” and an original struck before the capture window cannot be found at all, which is why this improves as the archive grows.

Candidate unwinds

Off-market prints matched to an earlier print of the same maturity within 1bp. A match is evidence, not proof β€” and an original struck before the capture window cannot be found at all.

DateFutSwap endRate % Off mkt bpNotional € Matched toMatch rate % Notional ratioClean fraction
05

Bond static to fix

Housekeeping, not market data. Trades that could not be priced because the instrument is missing from bond_static.csv.

06

Method and sources

Files are published behind CMS blob URLs whose id and content hash rotate without notice β€” the same business day's hash has changed between two fetches minutes apart β€” so the listing page is re-scraped every run and no URL is ever cached. Only ~20 business days stay online and there is no archive, which is why this capture runs daily.

Implied decimals are not carried in the file and are product-specific; every price is re-checked against its contract's tick grid on each run. Conversion factors are validated against Eurex's published factors β€” 134 of 145 exact to 1e-5, with the residue being 2025–26 issues whose irregular first coupon period needs a first-coupon date the file does not carry. Euro-Buxl uses a 4% notional coupon, not 6%.

SRC Eurex β€” EFP-Fin Trades Β· daily CSV, rolling ~20 business days
SRC Eurex β€” EFS Trades Β· daily CSV, rolling ~20 business days
SRC Eurex β€” Deliverable Bonds and Conversion Factors Β· baskets, coupons, maturities, factors

This is a live view. live is on from the first paint: the page loads the captured sessions so there is something to read immediately, then /api/live scrapes the current session's two files, runs them through the same eurex_efp package as the nightly pipeline, and splices the result in. It asks for the day that should be live β€” on a Saturday that is Friday's file, not an empty Saturday. Polling is once a minute while Eurex is open (01:10–22:00 CET) and every fifteen once it has closed, because the last publication of the day can land after the close. The response is edge-cached, so one upstream fetch serves every viewer in the window however many are watching.

If the toggle switches itself off and says live unavailable, the host has no serverless functions β€” the captured sessions still work, and that is the intended fallback rather than an error.

Auction highlighting. A row is bold when the bond is deliverable into the future it traded against, and yellow when that exact ISIN is scheduled for auction within a week. The window is one week rather than two for a reason: only Germany pre-names its auction lines further ahead than that. AFT publishes the French indicative calendar as images, the Italian and Spanish sites are client-side rendered, and all three name the actual bond in a press release about four days before the auction. A one-week window therefore sits inside everyone's announcement lead time. An un-highlighted French or Italian bond may still be auctioned next week β€” nobody has said which line yet, and the key under the table names the issuers this applies to.

SRC Deutsche Finanzagentur β€” issuance calendar Β· forward German federal auctions with the ISIN per line; fetched by tools/fetch_auctions.py through econdata
SRC Eurex β€” Trading calendar Β· exchange holidays. The table lands on today, or on the last day Eurex was open, worked out in the browser rather than at build time β€” so a page left open overnight still asks for the right session, and a capture that has stopped shows as a gap instead of quietly serving an older day as current
SRC Eurex β€” Snapshot summary report Β· daily per-expiry volume and open interest, rolling window
SRC Eurex β€” Exchange for Physicals Β· product definition
REF ESMA FIRDS instrument master via econdata.providers.sovbonds Β· bond static for 318 of 327 traded ISINs
GEN β€”

Filtering the table. Every column has its own box under the header. Categories (future, expiry, issuer, CF source, the flags) give a dropdown; everything else takes free text and matches what is displayed β€” so 2035 in maturity, BTPS in bond. Numeric columns also take >, >=, < and <= against the underlying number, e.g. >1.1 in dv01 ratio. Time takes the same comparators against the clock, so <=09:30 is every trade from the open to half past nine and >16:00 is the late tape. Filters compose, and Download CSV exports exactly what survives them.

Every figure carries the same five buttons: ⧉ copy puts the image on the clipboard Β· png a 2Γ— raster for slides Β· svg vector, scales and stays editable Β· csv the numbers actually plotted Β· ⧉ data the same numbers as TSV for a spreadsheet. Exports carry the title, source and build stamp so a saved file still makes sense on its own. light exports in the nav bar switches figures to the paper palette for documents β€” the screen stays dark either way.