Bonds are live on OTCStreaming
Release
Cash bonds are now in production, running on a client instance alongside that client's credit derivatives. The first coverage is the bond universe of three index families — CDX IG, iTraxx Europe and CDX EM.
Those numbers are worth reporting because the system is running on real dealer flow every day, not because they are large. They are the volumes of a first use case on a deliberately bounded perimeter, and the pipeline carrying them is the one already carrying the credit derivatives — sized for an order of magnitude more than this. What matters is not the six thousand; it is that the next sixty thousand ask nothing new of the system.
The same philosophy, one asset class further
We did not build a bond system. We put bonds into the one our clients already run.
That is the whole point, and it is worth being explicit about what carries over unchanged:
- The data comes from your mail. A client asks its market makers to send their runs to a client-specific address. That was true for CDS, indices, options and tranches; it is now true for bonds, arriving in the same emails, often on the same lines.
- The data is yours. Stored in a dedicated, client-owned database, neither shared nor redistributed. Bond quotations stay in the instance that received them and are never pooled into a composite sold back to the market.
- Provenance is carried, not discarded. Every bond tick keeps the dealer that sent it, the side it was quoted on, the observation it belonged to and the moment it arrived — exactly as a CDS tick does. A price with no source is not an input.
- Illiquid is derived from liquid. Off-the-run CDS are anchored to the on-the-run curve and adjusted by an explicit basis. A bond is measured on its issuer's curve and its credit read from the CDS curve, with the basis modelled rather than subtracted. Same reasoning, different instrument.
- Bid and offer, not a mid. Analytics reflect the market a client actually has access to, on both sides.
- Your data wins — prices and reference data alike. User-supplied data takes precedence over the platform's own, in a bond correlation as in any other. That matters more for bonds than it ever did for CDS, because a bond's terms are themselves a judgement. Ours are assembled from publicly available sources. A client holding the prospectus, or a view its desk has formed, can create that bond on its own instance, and its own terms resolve first. Where a client's bond and an OTCStreaming bond describe the same instrument, the client's instance answers with the client's own. A desk that has taken a position on an instrument's terms should not have them replaced by a later central decision without noticing.
And the same four abstractions carry them. A bond quote is resolved by Query, priced off securities and derivations held in Reference, synchronised into a Correlation, and whatever it is missing is filled in by Completion — with the enrichment visible rather than assumed.
What bonds add: the terms are not in the quote
There is one genuine difference, and it is where the work went.
A CDS quote names a contract whose terms are standard. A bond quote does not. A dealer's run names an instrument in the dealer's own shorthand — sometimes an ISIN, often a ticker, a coupon and a year — and states nothing about the day count, the redemption price, the dated date or the call schedule. Those are what a price means.
A bond is not created because a source described it. It is created because the market reproduces the terms proposed for it.
The test is mechanical. A dealer quoting a bond states a price and, usually, a second number computed from it — a yield, a yield to call, a spread. That second number is the dealer's own arithmetic on the dealer's own understanding of the terms. Hand the model the proposed terms and the dealer's price, ask for the second number, and compare.
What this leaves a client with is not a process but a record. Every bond on the platform carries the quotations its terms were tested against — the dealer, the side, the price, the number expected and the number produced — so a term that matters to a trade can be traced back to the market that confirmed it rather than to the source that asserted it.
As with an off-the-run CDS, we would rather publish nothing than publish a number nothing checked.
What is modelled
Once created, a bond is an ordinary citizen of the pricing library.
- Cash flows are generated and stored, in full, one schedule per workout — maturity, each call, a sinking fund where the instrument amortises — so a yield to a call is the same arithmetic as a yield to maturity.
- Price, yield and spread are one conversion. Clean and dirty price, accrued, yield, yield to worst, Z-spread and asset-swap level are the same schedule read different ways, on the same tick, at the same instant.
- The issuer's curve is a latent model like any other — calibrated, stored, replayable, patchable from a correlation.
- The bond–CDS basis is a compound model, available in spread, shifted, proportional and conditional forms.
That last point is worth writing down, because it is the whole difference between a modelled basis and a subtracted one. A bond's value is its cash flows under two functions — a discount curve \(Z\) and a survival probability \(Q_b\):
where \(N(s) = \sum_{t_j > s} a_j\) is the principal still outstanding at \(s\).
The second sum carries one term per repayment date, not one term at maturity. A bullet has a single \(a_j\); an amortiser or a sinking fund has one per instalment; a bond priced to a call repays at the call date, and only the coupons dated before it enter the first sum. That is why each workout is stored as a complete schedule rather than as an adjustment to the maturity one: changing the redemption assumption does not move one term, it moves all three at once — which coupons are in the first sum, the amounts and dates in the second, and the outstanding balance in the third. A call schedule is a different set of cash flows, not a perturbation of the bullet.
The recovery term is where that schedule bites a second time. A holder recovers \(R\) on the principal still outstanding at the moment of default, so an amortiser's default leg declines as its balance does, and a bond called early has no default leg beyond the call. Both fall out of the same \((a_j, t_j)\). A basis computed as one spread minus another has nowhere to put any of this.
\(Q_b\) is where the basis lives. It is not the issuer's CDS curve \(Q\), and it is not \(Q\) with a number subtracted from a spread. It is \(Q\) deformed:
— the same transformation the credit scenarios apply, drawn from the same family: spread, proportional, shifted, conditional. Which is in turn why the basis scenarios are not a separate mechanism bolted on for bonds: B000 sets \(b \equiv 0\), BCS01 adds a basis point to it, BRD1Y ages it by a year.
The analytics come with it
Bonds arrive with a full analytics set on day one, and that is not because we wrote one for them. It follows from a decision made years ago for the credit derivatives: an OTCStreaming scenario is a transformation of the survival probability function Q(t), not a deformation of observable quotes. It acts on the latent model. Anything that prices off that model therefore reprices under it — with no recalibration, and with no scenario definition written for bonds.
What that gives a bond holder:
- Conversions. Clean and dirty price, accrued, yield, yield to call, yield to worst, Z-spread and asset-swap level — on the same tick, at the same instant, against the schedule the market actually reproduced.
- Sensitivities, credit and rate together. A cash bond carries interest-rate risk that a CDS does not, so both have to be measured:
CS01for the credit,DV01for the rates, with modified and Macaulay duration and convexity. Both come back from the same valuation, and the bond's credit sensitivity is computed on the same curve as the CDS you hold against it — which is what makes the two numbers a hedge ratio rather than two figures from two systems. - The credit scenario library, unchanged. Spread dilations (
110,090),BEARandBULL, flatteners and steepeners, recovery shocks, carry and roll-down (CRD1Y) — every one of them already defined for CDS, applied to a bond without a new definition. - Basis scenarios, the one addition.
BCS01(basis +1bp),B000(basis set to zero, so the P&L is the whole basis),BRD1Y(basis roll-down over a year) andBCARRY1Y, its carry-only twin. - Securities and derivatives valued together. A bond and the CDS or index hedging it are priced from the same synchronised market object, on bid and offer rather than a mid. Your portfolio stays yours — what changes is that the security and derivative valuations you consolidate into it come from one market snapshot and agree with each other, which is what an unwind cost or a swing price has to be built on.
- History. The latent models are archived, so any of the above runs as of a past date — a historical scenario analysis, not a re-derivation from stale quotes.
None of that is bond code. It is the same scenario engine, pointed at one more latent model.
A perimeter, not a limit
The three index families are a starting perimeter. None of the machinery above is specific to them: it is written against the shape of OTC bond data, which is the same everywhere. Extending coverage is a question of which mail arrives, not of new machinery.
And that is the argument for doing it this way. A bond universe assembled from a vendor file is only as good as the file. A bond universe assembled from the prices your dealers actually sent you is, by construction, the universe you trade — and every instrument in it has already been checked against the number the dealer computed themselves.
Bonds are available on private instances as an additional subscription. Contact contact@otcstreaming.com.
<< Back to articles list