Bond Repo

Table of Contents

A bond repo is a secured cash borrowing: a bond is posted as collateral for cash. ORE models it with the trade type BondRepo. The container node is BondRepoData. This note records the domain grounding, as ORE documents it in its product catalogue.

1. Identifiers

What a trader books it as, and what to grep for. The codes are the trade type catalogue's, which is what the database enforces.

Field Value
Full name Bond Repo
Short name Bond Repo
ORE Studio product code BondRepo
Asset class bond
Family Repo
ORE trade data node BondRepoData
ORE documentation bondrepo.tex

2. Summary

In a bond repo transaction one party receives a cash amount from another party for a specified period. At maturity the borrower pays back the cash amount plus accrued interest. A bond is delivered as collateral for the duration of the trade. The interest paid is lower than for an uncollateralised borrowing. The BondRepoData block contains a BondData node for the collateral and a RepoData node for the cash leg.

3. Detail

3.1. What it is

ORE defines the transaction as follows:

In a bond repo transaction one party A receives a cash amount from a party B for a specified period. At the maturity of the trade party A pays back the cash amount plus accrued interest to party B. Intermediate interest payments are also possible. Party A delivers a bond to party B as a collateral for the received cash amount for the duration of the trade. In exchange the interest to be paid by party A will be lower than for an uncollateralised borrowing transaction.

Source: ORE User Guide, Products catalogue, bondrepo.tex.

3.2. In plain terms

A repo is a short-term loan against a bond. The borrower hands over the bond and gets cash. At the end the borrower repays the cash with interest and gets the bond back. The bond makes the loan cheap and safe.

3.3. How it works in ORE

A bond repo trade is set up using the trade type BondRepo and a BondRepoData block. The block contains two nodes. The BondData node specifies the underlying bond and its quantity. SecurityId is the identifier of the underlying security, usually of the form ISIN::XY012345679. BondNotional is the effective notional used as collateral, so it should include hair cuts. Usually the number Bond Notional x Bond Dirty Price x (1 - Haircut) corresponds to the nominal on the cash leg at trade inception. The optional CreditRisk flag decides whether credit risk shows on the product. The details of the underlying bond are read from the reference data in this case, but it is also possible to inline the details in the trade. The RepoData node contains exactly one LegData sub-node that describes the payments on the cash leg of the repo. The Payer leg determines whether interest is paid, a regular repo, or received, a reversed repo.

3.4. Mathematical notes

The cash leg is a fixed or floating interest leg over the repo period. The collateral leg delivers the bond and returns it at maturity. The economics of the trade are the difference between the interest on the cash and the value of holding the collateral. A haircut makes the collateral value exceed the cash, which protects the lender.

3.5. What moves its value (static sensitivities)

  • The repo rate on the cash leg.
  • The price of the collateral bond and its credit.
  • The haircut and the notional of the collateral.
  • The funding rates of the two parties.

The trade is a pair of opposite cash flows, so its value is driven by the spread between the repo rate and the funding of the bond.

3.6. How the profile ages (dynamic sensitivities)

The repo runs over a fixed period. Interest accrues on the cash leg, with intermediate payments possible. The bond stays with the lender as collateral. At maturity the borrower repays the cash plus interest and the bond returns. Until then the value tracks the difference between the two legs.

3.7. Why a customer would want it

A repo funds a bond position cheaply, or lends cash against safe collateral. It is the standard tool of the money market for secured funding. In ORE Studio a customer books bond repos to value them and run sensitivities on the ORE engine.

3.8. Example

ORE's catalogue shows a three-month USD repo: the borrower posts a US Treasury and pays a fixed rate of 1.78 percent on the cash:

<BondRepoData>
  <BondData>
    <SecurityId>ISIN:US912828X703</SecurityId>
    <BondNotional>27807597.777444</BondNotional>
  </BondData>
  <RepoData>
    <LegData>
      <LegType>Fixed</LegType>
      <Payer>true</Payer>
      <Currency>USD</Currency>
      <Notionals>
        <Notional>28371510.00</Notional>
      </Notionals>
      <ScheduleData>
        <Rules>
          <StartDate>2020-01-06</StartDate>
          <EndDate>2020-04-07</EndDate>
          <Tenor>1Y</Tenor>
          <Calendar>US</Calendar>
          <Convention>MF</Convention>
          <TermConvention>MF</TermConvention>
          <Rule>Forward</Rule>
          <EndOfMonth/>
          <FirstDate/>
          <LastDate/>
        </Rules>
      </ScheduleData>
      <DayCounter>A360</DayCounter>
      <PaymentConvention>F</PaymentConvention>
      <FixedLegData>
        <Rates>
          <Rate>0.0178</Rate>
        </Rates>
      </FixedLegData>
    </LegData>
  </RepoData>
</BondRepoData>

Source: ORE User Guide, Products catalogue, bondrepo.tex, listing Bond Repo Data.

4. See also

Emacs 29.3 (Org mode 9.6.15)