convertible-bond-arbitrage-data-requirements · v1.1.0 · 2026-09-03 · sha256 669b657f4f0f7b72

convertible-bond-arbitrage-data-requirements v1.1.0A

Immutable. This exact content is served forever at /api/v1/blob/669b657f4f0f7b72.

---
name: convertible-bond-arbitrage-data-requirements
description: >-
  Use when defining the data contract for a convertible bond arbitrage strategy and
  computing the screening metrics on top of it: parity, conversion premium, bond floor
  from the issuer credit spread, delta hedge size and net carry.
license: Apache-2.0
metadata:
  domain: algorithmic-trading
  subdomain: multi-asset-derivatives
  tags: convertible-bond, arbitrage, delta-hedging, parity, conversion-premium, credit-spread, borrow-rate
  brokers_frameworks: "Python Standard Library; Generic Fixed Income"
  version: "1.1.0"
  author: algo-trading-skills-contributors
---

## When to Use

Use this skill when defining the **data contract** for a Convertible Bond (CB) arbitrage
strategy, or when computing the screening metrics that sit on top of it: parity,
conversion premium, bond floor, delta hedge size, and net carry. CB arbitrage buys a
convertible (a hybrid of straight debt plus an equity conversion option) and shorts the
underlying equity to isolate cheap implied volatility, carry, or credit mispricing while
holding the package delta-neutral.

## When NOT to Use

- **As a convertible pricing model.** Delta and implied volatility are *inputs* here.
  Producing them requires a CB model (binomial / Tsiveriotis-Fernandes style) that
  handles credit-risky conversion, issuer calls, puts and soft-call triggers. This
  module deliberately does not implement one.
- **For busted (credit-like) converts.** When parity sits far below the bond floor, the
  position is a credit trade, not a volatility trade; the screening logic flags this
  case and refuses to call it attractive.
- **For live order routing.** The short leg has its own regulatory and borrow-side
  obligations that this module does not enforce — see Related Skills.

## Prerequisites

- Bond static terms: par value, conversion ratio (per the *same* nominal as par value),
  coupon rate, coupon frequency, maturity date.
- CB market data: clean price (points of par) and accrued interest.
- Equity market data: spot price, borrow fee, expected dividend yield.
- Credit data: issuer credit spread in basis points (required for the bond floor).
- Model/vendor analytics: equity delta and implied volatility.
- Funding terms: repo financing rate for the long CB leg, and the rate and haircut your
  prime broker applies to short-sale proceeds.
- Python 3.9+ (standard library only).

## Workflow

1. **Audit data completeness before computing anything.**
   `audit_data_completeness()` separates *missing* inputs from *present but invalid*
   ones (NaN, infinite, negative, delta outside `[0, 1]`). `evaluate_arbitrage()` raises
   on a failed audit rather than screening on partial data — a single NaN price would
   otherwise propagate into every metric and surface as a silent "not attractive".
2. **Compute parity and conversion premium, and state the basis.**
   `Parity = conversion ratio x stock price`.
   `Conversion premium % = (CB price - parity) / parity x 100`.
   The CB price may be the quoted clean price (market convention, the default) or the
   full price including accrued interest. The two differ by up to a full coupon period,
   so a premium reported without its basis is not comparable across sources; configure
   it explicitly with `premium_basis`.
3. **Size the short equity leg — check the delta convention first.**
   `Short shares = CB quantity x conversion ratio x delta`, where delta is the
   **per-share delta in `[0, 1]`**. Desks and vendors also quote CB delta as *shares per
   bond* in `[0, conversion_ratio]`; passing that value into the same formula over-hedges
   by a factor of the conversion ratio. The `[0, 1]` bound is enforced to catch it.
   Round to the venue's lot size and carry the rounding residual as known open exposure.
4. **Compute the bond floor from the issuer credit spread.**
   The floor is the PV of the straight-bond cash flows discounted at
   `risk-free + credit spread`. It is the downside protection the trade is being paid
   for; it moves with the spread, so it must be recomputed on spread updates, not
   treated as a constant. If parity has fallen far below the floor, the convert is
   busted and equity-vol screening no longer applies.
5. **Compute carry over the whole package, not the bond alone.**
   `Net carry = coupon + interest on short proceeds - repo financing - stock borrow fee
   - dividends payable in lieu on the short`. The last three hedge-leg terms scale with
   the **short position market value** (`delta x parity`), not with bond notional —
   applying a borrow rate directly to bond notional misstates the drag whenever delta or
   the parity/price ratio is away from 1.
6. **Screen, then decide.** Cheap vol (`HV - IV` above threshold), a tolerable premium
   and acceptable carry make a *candidate*, not a trade. All thresholds are configurable
   (`ScreenThresholds`) and their defaults are desk heuristics with no authoritative
   basis — calibrate them against your own book before trading on them.

> Full procedure: see `references/workflows.md`.
> Standards reference: see `references/standards.md`.
> Printable pre-flight checklist: see `assets/checklist.md`.

## Common Pitfalls

- **Charging the borrow fee against bond notional.** The stock loan fee and the
  dividends owed in lieu are charged on the *short equity market value* (`delta x
  parity`). At delta 0.60 with parity 900 against a 1,000 bond, that base is 540, not
  1,000 — a fee applied to bond notional overstates the drag by ~85% here, and the sign
  of net carry can flip.
- **Forgetting dividends on the short leg.** A short seller owes the lender substitute
  payments equal to any dividends paid. On a dividend-paying underlying this is often
  larger than the borrow fee and turns a positive-carry screen negative.
- **Ignoring the stock borrow fee entirely.** A hard-to-borrow underlying at a 15% fee
  wipes out coupon carry and volatility edge outright; borrow recall additionally forces
  an unplanned unwind of the hedge at the worst moment.
- **Mixing up the two delta conventions.** See workflow step 3 — the failure mode is a
  short position sized `conversion_ratio` times too large, which is a directional bet,
  not a hedge.
- **Comparing conversion premiums computed on different price bases.** Clean-basis and
  full-basis premiums are not the same number; vendor screens do not always say which
  they use.
- **Static delta hedging.** The package is long gamma: delta moves with spot, so an
  un-rebalanced hedge silently accumulates directional equity risk.
- **Treating the convertible as risk-free debt.** The bond floor is only a floor while
  the issuer performs. Spread widening lowers the floor and hits the long CB leg at the
  same time the equity leg is usually gaining least — the 2005 GM episode is the
  standard example of both legs losing together.

## Verification

- `ConvertibleBondArbitrageEngine().calculate_parity(20.0, 45.0)` must return `900.0`
  (par 1,000, conversion ratio 20, spot 45).
- With a CB clean price of 99.0 (990 per bond), the clean-basis conversion premium must
  be `10.0`% — independently: market conversion price `990 / 20 = 49.50`, premium per
  share `4.50`, ratio `4.50 / 45.00 = 10%`.
- `calculate_delta_hedge_quantity(100, 20.0, 0.60)` must return `1200` shares, and
  passing `12.0` (the shares-per-bond form of the same delta) must raise `ValueError`.
- With par 1,000, a 4% annual coupon paid semi-annually, 3 years to maturity, a 4%
  risk-free rate and a 300bp credit spread, the bond floor must equal the closed-form
  annuity value `20 x (1 - 1.035^-6)/0.035 + 1000 x 1.035^-6 = 920.07`.
- With accrued 10 (full price 1,000), parity 900, delta 0.60, borrow 1%, dividend yield
  2%, repo 4.5% and 4% on short proceeds, net carry must be
  `40 + 21.6 - 45 - 5.4 - 10.8 = +0.40` per bond (`+4bp` on the full price).
- Run `python -m unittest discover -s skills/convertible-bond-arbitrage-data-requirements/scripts`.

## Related Skills

- `options-implied-volatility-surface-construction`
- `cross-asset-hedge-execution-synchronization`
- `short-selling-borrow-cost-and-availability-modeling`
- `us-reg-sho-short-sale-locate-requirements`
- `counterparty-credit-risk-for-otc-derivatives`