The Complexity of a Repo
On the face of it, a repo seems like a simple instrument: a buy-side institution has cash to invest, and the desire to have the deposit collateralized, so they enter into a reverse repo. The borrower delivers collateral, which settles DVP. At the end of the term of the repo, the collateral is returned, at a higher price, to represent the return of principal, plus interest.
In between these events, much can take place. This paper includes some of the difficulties that analysts may encounter capturing the terms and conditions, and supporting the lifecycle events, including extracting the trade details.
Repo Details, Collateral Details
Openlink distinguishes between the trade details that apply to a repo, and the trade details that apply to the collateral. This is because there may be more than one piece of collateral on a repo. Many vendor solutions cannot support a repo that has multiple pieces of collateral, but such is not the case with Findur.
The repo’s details will include the parties to the trade, the term start and end dates, and the repo rate. There will also be control over some of the handling of the repo, such as how to handle coupons, and substitution settlement proceeds, described below.
The collateral is attached to the repo. Collateral details include the CUSIP/ISIN, the par amount, initial settlement proceeds, and the haircut. The repo-level details, such as the repo rate, will be applied consistently to all pieces of collateral attached to the repo, obviating the need to key in these details multiple times.
Collateral Settlement Factoring
Some clients ask about bond factoring. If your custodian expects DVP settlement messages to be delivered in factored amounts, for example, to support the Fed’s factoring of bonds into pieces no greater than 50,000,000, there is no need to factor the collateral on the repo trade in Findur.
Bond instruments in Findur have a field to control the factoring of the settlement events. When the maximum settlement parcel size is set on the bonds, Findur will break down the trade par amount into the required pieces. For example, a US T-Note trade with a face amount of 210mm will be factored into 4 pieces of 50mm and a tail piece of 10mm, all using the same settlement price. Do not enter this example repo with 5 pieces of collateral because it just increases the likelihood of making a trade entry error.
On some repos, the coupons (or entitlements) on the repo collateral will be passed-through from the collateral holder to the pledging party. The alternative is a sell/buyback or buy/sellback instrument, which has the holder of the collateral retain the coupons, effectively lowering the loan principal for the term from the coupon payment date to maturity of the loan.
In Findur, the pass-through style repo is modeled using the REPO-T-S/B, or REVERSE-T-B/S instrument type. When a coupon is paid, the system will generate a coupon receipt from the issuer, and payment to the counterparty (for a repo), or a coupon receipt from the counterparty (on a reverse repo).
The buy/sellback and sell/buyback instruments are modeled using the REPO-T-EURO and REVERSE-T-EURO instrument types. The coupon payment from the issuer will be generated on a REPO-T-EURO instrument, and reduce the loan principal. It is even possible to apply a different interest rate for the term from the coupon payment date to the repo’s maturity date. No coupon will be generated on a REVERSE-T-EURO deal because the coupon was paid by the issuer to the repo counterparty. The repo principal will be adjusted to reduce the interest receivable.
Some institutions allow substitution of collateral. From the cash lender’s perspective, the flexibility to allow substitutions to the borrower can lead to higher rates of interest received from counterparties. Substitutions can be a pain in the neck, so look out for these complexities.
In many markets, the substitution takes place settling DVP on the initial principal. This is the most straightforward way to settle the substitution. In Findur, the substitution will be settled using the tran type Repo Coll DVP.
In other markets, such as Canada, we have seen the substitution settle DVP using proceeds of the initial principal plus interest accrued to the substitution’s settlement date. This is a more complex scenario, and leads to compounding of the interest for the remainder of the term (interest on interest). In Findur, the substitution will be settled using the tran type Repo Coll Subst Accrued.
When collateral is substituted, the original collateral’s holding will continue to appear on the repo with a return settlement date at the maturity of the repo. Trade capture of the substitution will create an event to return the collateral on settlement date, and a notional offsetting flow at maturity. The original maturity event for the returned collateral will net to zero with the notional offsetting flow. It may be necessary to suppress these events in the back office desktop to avoid confusion at maturity.
Test, Test, Test
Since there are so many use cases involved in repo trade capture and lifecycle events, ask us how to automate these test cases, and read more in this paper about why test automation should be part of your test strategy (and offered as a matter of course by any technology partner).
In particular, if you are using the Repo Coll Subst Accrued tran type, it is important to run a lot of test cases involving term repos that pay coupons before, on, and after the substitution settlement date. Also, test substitutions of substitutions. The calculations quickly grow more complex, and it is easy for the vendor to make a change to the repo code and inadvertently break existing functionality.
The Openlink Repo Data Model
Since Openlink supports having more than one piece of collateral on a repo, the data model is quite complex. In this section, we discuss how the repo is captured in the database. If you are having trouble, reach out to us and we will offer to help.
The repo and each repo collateral record is stored in the ab_tran table. The repo can be distinguished by its toolset (Repo), or by its tran type (Trading). Repo collateral can be identified based on the asset type, which will be Repo Collateral.
The repo and its collateral share the same tran group ID. This is a field in the ab_tran table. They are also linked to one another using the repo_coll_link table. The repo’s tran_num will be stored in repo_coll_link.repo_tran_num. The repo collateral’s tran_num will be stored in repo_coll_link.coll_tran_num.
When building a report, pay attention to substitution use cases. Collateral that has been substituted out should be excluded from any report on collateral pledged or received. This likely requires the report to have a parameterized report date that controls which collateral to retrieve based on having a start date on/before the report date.
Collateral haircut, and some other details specific to collateral, are stored in the repo_coll_details table.
The header table is usually important when retrieving details that involve fungible instruments. The header table includes ISIN, CUSIP and Ticker. Another important detail to consider when working with fungible instruments is the instrument notional. Findur often stores a bond position by default in millions. It is usually important to join to the instrument’s definition in the ab_tran table to scale a trade’s par amount by the security master instrument’s notional amount.
Repo and RepoCollateral API
In version 10.1, Openlink enhanced the OpenJVS API for handling repo and repo collateral. As far as we know, there is still no specialist support in OpenComponents for repos, so it is necessary to use OpenJVS for many operations associated with repos.
If you want guidance on the API, start with the Javadocs on the
Repo class and
CollateralManagement class. They aren’t object-oriented classes, and the API is not very intuitive. We can help with any customizations needed to handle repos. We have been involved in a lot of complex repo modeling work including collateral management, reporting and real-time system integration.