-
2019-11-05
14/457,586
2014-08-12
US 10,467,695 B1
2019-11-05
-
-
Peter Ludwig | Gregory S Cunningham, II
DLA Piper LLP (US)
2036-10-16
Smart Summary: A computer system is designed to help value securities, like bonds. It first receives data about the security's value and removes any unusual or extreme values that don't fit with the rest. Then, it calculates how much transaction costs might affect the price and adjusts the value accordingly. It also considers market conditions to make further adjustments to the price. Finally, the system provides an estimated price for the security based on these adjustments. 🚀 TL;DR
An exemplary aspect comprises a computer system having one or more processors, comprising: a receiving component that receives valuation data for a security; a filtering component that filters the received valuation data to remove outlier values according to a predetermined set of parameters; a transaction cost adjustment component calculates a transaction cost adjustment coefficient based on a first transaction cost adjustment regression calculation of the processed valuation data, and determines a final transaction cost adjustment value based on the transaction cost adjustment coefficient; a market adjustment component that calculates a market adjustment coefficient based on a first market adjustment regression calculation of the processed valuation data, and determines a final market adjustment value based on the market adjustment coefficient; and an output component that outputs a pricing estimation of the security based on the final transaction cost adjustment value and the final market adjustment value.
Get notified when new applications in this technology area are published.
G06Q40/04 » CPC main
Finance; Insurance; Tax strategies; Processing of corporate or income taxes Exchange, e.g. stocks, commodities, derivatives or currency exchange
This application claims priority under 35 U.S.C. 119(e) to U.S. Provisional Patent Application No. 61/864,817, filed Aug. 12, 2013, entitled “Systems and Method Related to Bond Valuation” and to U.S. Provisional Patent Application No. 61/936,096, filed Feb. 5, 2014, entitled “Systems and Methods Related to Bond Valuation.” The entire contents of each of the above-referenced applications are incorporated herein by reference.
Effective valuation of fixed income instruments, such as corporate bonds, is an essential input to various activities within capital markets, including bond trading, risk management and financial reporting. Unlike equity instruments, whose issuance typically is concentrated in one issue per issuing entity (or potentially a small number of stock “classes”), fixed income issuers may have tens, hundreds, or even thousands of issues outstanding. Each of these instruments might have different features and may have differing levels of liquidity. Consequently, even with the accessibility of trade data for certain corporate bonds through the FINRA TRACE system, trade frequency is inconstant and analysis is required to ascertain bond valuation at any moment in time.
To date, this analysis has generally been a labor-intensive process, such that valuations are generally produced with limited frequency, such as once or twice per day. However, new data made available through TRACE in November 2008, as well as the increased trading of fixed income exchange traded funds (“ETFs”) have made possible an algorithmic valuation process for corporate bonds. Contained within TRACE data is an indicator that identifies whether the reporting entity (the dealer) bought the bond from a client (a “dealer buy”), sold the bond to a client (a “dealer sell”) or traded the bond with another dealer (an “interdealer transaction”). Dealer buys thus imply the “bid” side of the market, dealer sells imply the offer side, and the interdealer transactions imply the “mid” market. The research leading to certain embodiments has shown that the distance between a bid and ask differs according to the size of the transaction and to the bond itself.
Using this indicator (distance between bid and ask), along with the size of the transaction, certain exemplary embodiments may use a regression analysis to calculate coefficients describing the transaction costs for individual bonds and categories of bonds. Certain embodiments may then use these coefficients to generate transaction cost adjusted prices for each trade to infer the mid-market. Furthermore, these embodiments may weight these transaction cost adjusted prices to create a current estimate of bond value.
Additionally, certain embodiments may use regression analysis to calculate coefficients that describe the relationship between a bond and selected ETFs. In the absence of new trades, the embodiments may update the valuation estimate by applying the coefficient adjusted ETF changes. As a result, the embodiments may produce bond evaluations in real-time and without human analysis.
More specifically, an exemplary aspect may comprise a computer system having one or more processors, comprising: a receiving component that receives valuation data for a security; a filtering component that filters the received valuation data to remove outlier values according to a predetermined set of parameters; a transaction cost adjustment component calculates a transaction cost adjustment coefficient based on a first transaction cost adjustment regression calculation of the processed valuation data, and determines a final transaction cost adjustment value based on the transaction cost adjustment coefficient; a market adjustment component that calculates a market adjustment coefficient based on a first market adjustment regression calculation of the processed valuation data, and determines a final market adjustment value based on the market adjustment coefficient; and an output component that outputs a pricing estimation of the security based on the final transaction cost adjustment value and the final market adjustment value.
In one or more exemplary system embodiments: (1) the pricing estimation is determined by rescaling prices to terms of the final transaction cost adjustment value and the final market adjustment value; (2) a confidence interval component calculates a confidence interval for the outputted pricing estimation; (3) the confidence interval is calculated with approximately the same frequency as the outputted pricing estimation; (4) the received valuation data comprises ETF transaction price data; (5) the received valuation data comprises bond attribute data; (6) the received valuation data comprises credit rating data; (7) the received valuation data comprises TRACE data; and/or (8) the pricing estimation is updated by applying one or more coefficient adjusted ETF data updates.
FIG. 1A depicts an exemplary flowchart of real-time evaluated pricing for a corporate bond model.
FIG. 1B depicts an exemplary model pricing process.
FIG. 2 depicts an exemplary flow chart showing the work flow for an exemplary data preparation step.
FIG. 3 depicts a flow chart showing the work flow of an exemplary trade history calculation.
FIG. 4 depicts an exemplary flow chart of value estimation.
FIG. 5 depicts an exemplary workflow for the real model value estimation.
FIG. 6 depicts an exemplary timeline for when model price is triggered to be updated at some time T.
FIG. 7 depicts an exemplary menu.
FIG. 8 depicts an exemplary Investment Grade Worksheet Enhancements screen and a High Yield Worksheet Enhancements screen.
FIG. 9 depicts an exemplary Agency Worksheet screen.
FIG. 10 depicts exemplary Investment Grade and High Yield screens.
FIG. 11 depicts an exemplary trade data enhancement screen.
FIG. 12 depicts an exemplary model pricing configuration screen for data preparation.
FIG. 13 depicts an exemplary model pricing configuration screen for transaction cost adjustment.
FIGS. 14 and 15 depict exemplary model pricing configuration screens for market adjustment.
FIG. 16 depicts an exemplary graph of a 75-25 confidence interval.
FIG. 17 depicts an exemplary flowchart showing the logic of real-time process of model pricing Phase One and Phase Two, and the connection between the two phases.
FIG. 18 depicts an exemplary flow chart of a high level workflow of how to use model price in Market Data Ranking
FIG. 19 depicts an exemplary pricing mode displayed on a Model Details screen.
FIG. 20 depicts an exemplary Quotes Market Data screen for each system, i.e., IG, HY and AGY for display of model price and model evaluations.
FIG. 21 depicts an exemplary investment grade data ranking profile screen.
FIG. 22 depicts an exemplary Quote History screen for each system, i.e., IG, HY and AGY, displaying model price and model evaluations.
FIG. 23 depicts an exemplary event log.
FIG. 24 depicts an exemplary model pricing configuration screen for a confidence interval.
FIG. 25 depicts an exemplary model pricing configuration screen for a confidence group.
FIG. 26 depicts an exemplary sector configuration screen for model notifications.
FIG. 27 depicts an exemplary model pricing configuration screen for a confidence interval.
FIG. 28 depicts an exemplary sector configuration screen for model notifications.
FIG. 29 depicts an exemplary upload button.
FIG. 30 depicts an exemplary screen of upload blended price betas.
FIG. 31 depicts an exemplary new tab added on the screen of Security Details as “Blended Px Betas” and display CUSIP with 18 betas.
FIG. 32 depicts an exemplary computer network system.
Exemplary embodiments described herein provide real-time model pricing of securities, e.g., corporate bonds, using past trade information, provide an automated confidence measure that allows the system or user to judge the reliability of model prices, and provide the functionality and controls necessary to use the model price in market data ranking as one of the data sources among quotes, trades and evaluations.
According to a first embodiment, i.e., Phase One, specifications for real-time model pricing of corporate bonds are provided. The first embodiment provides a model and the workflows for estimating the current value of a corporate bond using trade history, as well as movements in the general credit market as proxied by liquidly traded exchange traded funds. The mathematical framework underlying the model is described herein.
According to a second embodiment, i.e., Phase Two, business requirements for an automated gauge of model price reliability are provided, along with controls over using the model price alongside of related market input information.
1. Phase One Overview
Exemplary embodiments described herein support real-time model pricing of corporate bonds using past trade information. A model and workflows for estimating current value of a corporate bond using trade history, as well as movements in the general credit market as proxied by liquidly traded exchange traded funds, are provided. Also provided are mathematical settings for regressions in Appendix D. Exemplary regressions described herein fit into the framework described in Appendix D and one may identify components of the framework for each specific regression. “Right-hand-side” refers to quantities including observations of dependent variables. “Basis functions” refer to quantities including observations of independent variables. Except as otherwise stated, section numbers and appendices referred to within Phase One refer to Phase One section numbers and appendices.
FIG. 1A depicts an exemplary flowchart of real-time evaluated pricing for a corporate bond model. FIG. 1B depicts an exemplary model pricing process. Model Pricing includes two basic processes:
Daily (Overnight) Processes: The pricing model has three components: transaction cost adjustment (TCA), market adjustment (MktA), and value estimation (VE). The three components of the model can be calculated in separate steps:
Real-Time (Intraday) Process: For each day, at some specified time interval, updated market-wide indicators can be used to market-update all value estimates. In addition, when new trades occur in an issue at the start of day, these trades can be used in the value estimation model to update value estimates, allowing the real time model to be run in response to the periodic updating of ETF data and as trades occur.
An exemplary model may include trade information of U.S. corporate bonds from TRACE data. For a security to be eligible to be included in the model, the security may:
2. Data Preparation
As described in this section, a data set is input into the system and filtered according to certain conditions, and a series of variables are created for use in further calculations. FIG. 2 depicts a flow chart showing the work flow for an exemplary data preparation step.
Follow the same holiday schedule as IG/HY systems, i.e., a modified SIFMA calendar to include NYSE open days.
There are two scenarios on holiday:
The system drops outliers and other likely problematic trade observations under the following circumstances, if:
An interdealer trade is identified as paired if it shares the same CUSIP, exact execution time, and lot size with a client trade (dealer buy or sell). Then client trades that are paired with interdealer trades are dropped, but the interdealer trade is retained.
2.3.3 Drop Cancelled or Replaced Trades from Estimation
Trades that are known to have been eventually cancelled or replaced are not used in any estimation, but these trades are retained in order to have transaction costs and betas appended to them. In other words, we drop cancelled and replaced trades in intraday processing, but keep them in tradeset prepared for overnight regression.
2.3.4 Drop Matured Bonds
Some matured bonds continue to be evaluated past their maturity date, either at par or at a fixed price, within continuous pricing. There is functionality built into the continuous pricing systems (EVAL, Omega) to manage this process. However, this functionality may not be replicated in the model, as the final output to the client is not the pure model prices. It is a combination of model prices, blended prices and continuous prices (see description of Model Pricing Phase Two section on functionality). If a bond does not have a model price, the system may send the continuous price. Therefore for matured bonds, if the system removes them from the model automatically at maturity, the existing continuous price functionality may take over and send the appropriate price (or absence).
Though the system may not produce a model price for matured (or called or defaulted) bonds, the system may include historical trades on these bonds in the input trade data to the overnight regressions. This is because the bonds were legitimately non-matured when the trades occurred, and therefore still form part of the history that the regressions may be using.
Intraday Model prices may be calculated for the universe of bonds which:
Overnight regression shall include matured securities which have TRACE trades within the TRADE-WINDOW (where the window is currently 4 years).
Trades are divided into groups based on credit ratings and time to maturity. As high yield bonds with more than 10 years to maturity are rare, they are included in the 7.5-10 group. Thus, there are six credit rating groups (AA and above, A, BBB, B, and CCC or below) and five time-to-maturity groups (0-2 years, 2-5 years, 5-7.5 years, 7.5-10 years including 10-20 years and 20+ years).
The maturity * credit cells have the following format as the tables show. Table 1 is for Investment Grade bonds. Table 2 is for High Yield bonds.
| TABLE 1 |
| Investment Grade Maturity * Credit Grids |
| Maturity |
| 0-2 | 2-5 | 5-7.5 | 7.5-10 | 10-20 | 20+ | |
| Credit Ratings | YTM | YTM | YTM | YTM | YTM | YTM |
| AAA | ||||||
| AA | ||||||
| A | ||||||
| BBB | ||||||
| TABLE 2 |
| High Yield Maturity * Credit Grids |
| Maturity |
| 5-7.5 | ||||
| Credit Ratings | 0-2 YTM | 2-5 YTM | YTM | 7.5+ YTM |
| BB | ||||
| B | ||||
| CCC or worse | ||||
| TABLE 3 |
| Agencies Maturity * Credit Grids |
| Maturity |
| 0-2 Y | 2-5 | 5-7.5 | 7.5-10 | 10-20 | 20+ |
| TM | YTM | YTM | YTM | YTM | YTM |
Trades are ordered within each issue based on execution time. For cases with multiple trades executed in a given second, trades are ordered by IssuePriceID. The trade ordering is used for calculating the average of last 5 trades in Section 3.6.2.
2.4.6 Weight Observations on Time
Observations are weighted based on distance in time from the current date. The weight assigned to each is proportional according to the following equation:
weight = e today - date _ of _ trade 100 . ( 2.1 )
These weights are then divided by the sum of the expression in the following equation for the current and prior trade:
Adjusted Weights = Weight 0.8 + 0.3 * S z * ( 1 - ABS ( S d + P ) 2 ) + 0.25 * ABS ( S d ) - 0.15 * ( S d + P )
For trade with a size greater than $250,000, weights adjustment is multiplied by 5 for Dealer Buys.
2.4.7 Save Trades Records
To construct a baseline price in Section 3.6.2., transaction cost and market adjusted prices of trades from the last 5 CUSIP*seconds may be saved, i.e., trade t-1 to t-5. In order to half the memory and reduce the sample, the most recent X trades per CUSIP may be kept, since for thin bonds a longer past history is necessary. Performance improves with X until X hits about 5000. All trades may be saved from last year and the last 5000 trades older than 1 year. This reduces the sample by about 40%. Also, when calculating out of sample TCs and MAs for the issue-level scaling, if it's month t, keep all trades from t-1 to t-12, and then the 5000 most recent from t-13 to the beginning of the sample data.
2.4.8 Error Handling
The following describes how the system handles situations when certain parameters are missing. There are two possible exemplary scenarios of missing parameters:
A series of primitive input variables are defined with initialized value as shown in Table 4 (some contents are for agencies):
| TABLE 4 |
| Primitive Input Variables (from raw data) |
| Variable | Input (in | |||
| Name (in | Stata | Data | ||
| Objective | model) | code) | Description/Function | Identity |
| Price | p | p | Price in points (Par = 100) | Trade |
| Side Indicator | Sd | tt | tt = { 1 , if Dealer Sell 0 , if Interdealer - 1 , if Dealer Buy , one of the variables in Regression 1 | Trade |
| Pair status indicator | P | dtt | dtt = { 1 , if interdealer trade that is paired with dealer sell 0 , if unpaired interdealer trades - 1 , if interdealer trade that is paired with dealer buy , one of the variables in Regression 1 | Trade |
| Lotsize | lotsize | lotsize | Lotsize in $ | Trade |
| Rescaled trade size | Sz | fq | fq = Max ( 0 , Min ( 1 , Ln ( 1000000 lotSize ) Ln ( 20 ) ) ) , one of the variables in Regression 1 | Trade |
| Side | Sd * Sz | ttfq | TT * FQ, one of the variables in | Trade |
| indicator * | Regression 1 | |||
| Rescaled | ||||
| trade size | ||||
| Paired | P * Sz | dttfq | DTT * FQ, one of the variables in | Trade |
| indicator * | Regression 1 | |||
| Rescaled | ||||
| trade size | ||||
| Executed | dt | Execution Date-Time variable | Trade | |
| Time | ||||
| Reported | dt_report | The reported time of a trade; this is | Trade | |
| Time | used to store date calculation results | |||
| Truncated | MAquantityindicator | This indicates if the reported TRACE | Trade | |
| TRACE | quantity is truncated; and “E” for | |||
| Quantity | estimated if truncated and “A” for | |||
| Indicator | actual if not. | |||
| Primary | piid | Categorical variable; aggregated a few | Bond | |
| instrument | cases of CUSIP or InstrumentID | |||
| ID | changes into a common identifier | |||
| Drop | a | a = 1 if ultimately cancelled (Created | Trade | |
| indicator | by Eric; used for tracking cancelled | |||
| trades) | ||||
| Group ID | piida | Grouping of combinations of PIID and | Bond | |
| A (in TC model, all A = 1 observations | ||||
| are dropped, so this maps one-to-one | ||||
| to PIID) | ||||
| Trade | n | Trade identifier (Created by Eric; used | Trade | |
| identifier | for disassembling and reassembling | |||
| datasets) | ||||
| Note: Tradeset is ordered in increasing | ||||
| piid and n. may not be required, but | ||||
| may be included for Regression 7. | ||||
| Numbers | n1 | Numbers trades within values of | Trade | |
| trades in | PIIDA, in order of execution time | |||
| PIIDA | (with ties broken by values of n) (used | |||
| for counting the numbers trades with | ||||
| values of piida) | ||||
| Numerical | SPrat | Numerical version of S&P rating | Bond | |
| S&P | (AAA = 20, AA+ = 19, BB+ = 10, | |||
| rating | CCC+ = 4, CCC = 3, CC = 0, D = −12) | |||
| Integer | intSP | Rating used to put bonds into the 30 | Bond | |
| S&P | cells, intSP = int((SPrat + 1)/3) | |||
| rating | Special Cases: (1) SPrat = 0 | |||
| (corresponds to CC) and below may | ||||
| have intSP = 1 (the same as SPrat = 2- | ||||
| 4); | ||||
| (2) SPrat = 20 (the | ||||
| AAAs) gets intSP = 6 (the same as | ||||
| AA− to AA+) | ||||
| Please see Appendix A for conversion | ||||
| between SPrat and intSP. | ||||
| Rating | R | rat | Rating = 0 for bonds rated AA+ or | Bond |
| above, 1 for bonds rated CC or below, | ||||
| and is linear in credit rating between as | ||||
| (S&P numerical − 3)/16, i.e., rat = 1- | ||||
| max(0, min(1, (SPrat − 3)/16)). R may be | ||||
| set to 0 in calculation of Agencies. | ||||
| Year to | ytm | Years to Maturity from execution date, | Trade | |
| Maturity | the formula is (maturity_date- | |||
| execution_date)/365.25 | ||||
| Issue- | iytm | Year to maturity that is used to | Bond | |
| Level | calculate maturity * credit cells, i.e., | |||
| Year to | the issue-level ytm | |||
| Maturity | ||||
| Maturity | YTM15 | mat15 | mat15 = min(max(0, ytm), 15)/10, | Trade |
| (15 years) | which is mat15 = 1 for bonds 15 | |||
| years or more from maturity, 0 for | ||||
| bonds at maturity, and is linear in time | ||||
| to maturity in between | ||||
| Maturity | YTM10 | mat10 | mat10 = min(max(0, ytm), 10)/10, | Trade |
| (10 years) | which is mat10 = 1 for bonds 10 | |||
| years or more from maturity, 0 for | ||||
| bonds at maturity, and is linear in time | ||||
| to maturity in between | ||||
| Year and | yrmo | Year month variable (January 2009 = | Trade | |
| month | 200901) | |||
| Month | yq | Groups months in the data (November 2008 = | Trade | |
| Group | 107, June 2012 = 150) | |||
| The minimum value for yq is | ||||
| configurable. | ||||
| Number | m | 1 to N numbering of months appearing | Trade | |
| of months | in data , may be started from 1 and | |||
| increasing by 1, no hole | ||||
| Recent | lnHYG | lnHYG | Most recent ln(HYG total return index) | Trade |
| log HYG | as of execution time | |||
| total | ||||
| return | ||||
| Recent | lnIEI | lnIEI | Most recent ln(IEI total return index) | Trade |
| log IEI | as of execution time | |||
| total | ||||
| return | ||||
| Recent | lnLQD | lnLQD | Most recent ln(LQD total return index) | Trade |
| log LQD | as of execution time | |||
| total | ||||
| return | ||||
| Recent | lnTLT | lnTLT | Most recent ln(TLT total return index) | Trade |
| log TLT | as of execution time | |||
| total | ||||
| return | ||||
| Recent | lnAGZ | Most recent ln(AGZ total return index) | Trade | |
| log AGZ | as of execution time | |||
| total | ||||
| return | ||||
| Side = +1 indicator | I1S(Sd) | ttpos | ttpos = { 1 , if S d = 1 0 , otherwise , one of the variables in Regression 1 | Trade |
| Paired = +1 indicator | I1P(P) | dttpos | dttpos = { 1 , if P = 1 0 , otherwise , one of the variables in Regression 1 | Trade |
| Side = +1 | Sz × I1S | ttposfq | ttpos * fq, one of the variables in | Trade |
| Indicator * | Regression 1 | |||
| Size | ||||
| Paired | Sz × I1P | dttposfq | dttpos * fq, one of the variables in | Trade |
| Indicator * | Regression 1 | |||
| Size | ||||
| Maturity * | R × YTM15 | mat15rat | mat15 * rat | Trade |
| Rating | ||||
| Side * | Sd × R | ttrat | tt * rat, one of the variables in | Trade |
| Rating | Regression 1 | |||
| Side * | Sd × YTM15 | ttmat15 | tt * mat15, one of the variables in | Trade |
| Maturity | Regression 1 | |||
| Side = +1 | I1S × R | ttposrat | ttpos * rat, one of the variables in | Trade |
| Indicator * | Regression 1 | |||
| Rating | ||||
| Side = +1 | I1S × YTM15 | ttposmat15 | ttpos * mat15, one of the variables in | Trade |
| Indicator * | Regression 1 | |||
| Maturity | ||||
| Side * | Sd × Sz × R | ttfqrat | ttfq * rat, one of the variables in | Trade |
| Size * | Regression 1 | |||
| Rating | ||||
| Side * | Sd × Sz × YTM15 | ttfqmat15 | ttfq * mat15, one of the variables in | Trade |
| Size * | Regression 1 | |||
| Maturity | ||||
| Side * | Sd × Sz × R × YTM15 | ttfqmat15rat | ttfq * mat15 * rat, one of the variables | Trade |
| Size * | in Regression 1 | |||
| Maturity * | ||||
| Rating | ||||
| Paired | P × Sz × R | dttfqrat | dttfq * rat, one of the variables in | Trade |
| indicator * | Regression 1 | |||
| Size * | ||||
| Rating | ||||
| Paired | P × Sz × YTM15 | dttfqmat15 | dttfq * mat15, one of the variables in | Trade |
| indicator * | Regression 1 | |||
| Size * | ||||
| Maturity | ||||
| Paired | P × Sz × R × YTM15 | dttfqmat15rat | dttfq * mat15 * rat, one of the | Trade |
| indicator * | variables in Regression 1 | |||
| Size * | ||||
| Maturity * | ||||
| Rating | ||||
| Side = +1 | I1S × Sz × R | ttposfqrat | ttpos * fq * rat, one of the variables in | Trade |
| Indicator * | Regression 1 | |||
| Size * | ||||
| Rating | ||||
| Side = +1 | I1S × Sz × YTM15 | ttposfqmat15 | ttpos * fq * mat15, one of the variables | Trade |
| Indicator * | in Regression 1 | |||
| Size * | ||||
| Maturity | ||||
| Side = +1 | g21 × R | ttposfqmat15rat | ttpos * fq * mat15 * rat, one of the | Trade |
| Indicator * | variables in Regression 1 | |||
| Size * | ||||
| Maturity * | ||||
| Rating | ||||
| Paired = | I1P × Sz × R | dttposfqrat | dttpos * fq * rat, one of the variables in | Trade |
| +1 | Regression 1 | |||
| Indicator * | ||||
| Size * | ||||
| Rating | ||||
| Paired = | I1P × Sz × YTM15 | dttposfqmat15 | dttpos * fq * mat15, one of the | Trade |
| +1 | variables in Regression 1 | |||
| Indicator * | ||||
| Size * | ||||
| Maturity | ||||
In order to calculate differences in regression equations, additional series of variables are created as the shown in Table 5.
| TABLE 5 |
| Additional Variables (for regression use) |
| Variable | Input (in | |||
| Name (in | Stata | Data | ||
| Inputs | model) | code) | Description/Function | Identity |
| Adjusted Weights | w | w | weight = e - today - date _ of _ trade 100 Adjusted Weights = ( Weight ) 0.8 + 0.3 * S Z * ( 1 - ABS ( S d + P ) 2 ) + 0.25 * ABS ( S d ) - 0.15 * ( S d + P ) Note: The weights are defined here, but in an exemplary embodiment may be used and created in the first difference calculation in the regression | Trade |
The system recreates n1 for Regression 7, i.e., value estimation, because: 1) some values in old “n1” may be eliminated by requiring “dt” being after May 2009; 2) some records with different old “n1” values may be merged by “collapse (sum). . . ” But the system may also create n1 using the same algorithm used in the model (from Regression 1 to Regression 7), and this algorithm is consistent with the STATA code. Note: n1 is consistent from the step2 file through the rest of the transaction cost model. Between the step1 and step2 files, some observations may be dropped and n1 renumbered to keep consecutive (this is data prep stage). The regressions begin after step2 is saved and then reloaded the STATA code, and n1 is consistent until trades are collapsed to the CUSIP*second level in value estimation. Within each value of piida, n1 is the observation number when they are ordered by execution time and then n, which is an observation used to disassemble and reassemble the data. Ordering it by n with execution time ensures that ties are always broken the same way.
3. Model
This section describes how calculate the three components of the model are calculated in detail.
FIG. 3 depicts a flow chart showing the work flow of an exemplary trade history calculation, which can be separated into two parts: transaction cost adjustment and market adjustment.
3.1.1 Regression 1: Calculate In-sample and Out-of-sample Transaction Costs
The trade-to-trade change in price Δp is regressed on the trade-to-trade changes in a series of variables designed to capture transaction costs. A single regression is run including all bonds and all trades from the prior 24 months. Observations are weighted as described in 2.4.3.
3.1.1.1. Basis functions: Variables Designed to Capture Transaction Costs in Regression 1
Excluding constant term, the number of basis functions is 24 (M=24, see Appendix E). The system identifies basis functions for Regression 1 as follows, omitting time dependency for state variables for saving typing:
g1(ti, . . . )=Sd
g2(ti, . . . )=P
g3(ti, . . . )=Sd×Sz
g4(ti, . . . )=P×Sz
g5(ti, . . . )=Sz
g6(ti, . . . )=I1S
g7(ti, . . . )=I1P
g8(ti, . . . )=Sz×I1S=g5×g6
g9(ti, . . . )=Sz×I1P=g5×g7
g10(ti, . . . )=Sd×R=g1×R
g11(ti, . . . )=Sd×YTM15=g1×YTM15
g12(ti, . . . )=I1S×R=g6×R
g13(ti, . . . )=I1S×YTM15=g6×YTM15
g14(ti, . . . )=Sd×Sz×R=g1×g5×R
g15(ti, . . . )=Sd×Sz×YTM15=g1×g5×YTM15
g16(ti, . . . )=Sd×Sz×R×YTM15=g15×R
g17(ti, . . . )=P×Sz×R=g4×R
g18(ti, . . . )=P×Sz×YTM15=g4×YTM15
g19(ti, . . . )=P×Sz×R×YTM15=g18×R
g20(ti, . . . )=I1S×Sz×R=g12×Sz
g21(ti, . . . )=I1S×Sz×YTM15=g8×YTM15
g22(ti, . . . )=g21×R
g23(ti, . . . )=I1P×Sz×R=g5×g7×R
g24(ti, . . . )=I1P×Sz×YTM15=g5×g7×YTM15
fj(ti, . . . )=gj(ti, . . . )−gj(ti−1, . . . ), j=1, . . . , 24
3.1.1.2. The Right-hand-side of the Regression
The right-hand-side for this regression includes the 1st differences of prices. This regression is run on rolling 24-month windows of data. Coefficients from the regression run using data from t−24 months to t are applied to the variables in 3.1.1.1. from trades from month t, to yield an in-sample predicted transaction cost for each trade, see formula (3.1) below. They are also applied to the variables from trades from month t+1 to yield and out-of-sample predicted transaction cost, see formula (3.2) below.
3.1.1.3. Outputs: Transaction Costs Calculation
The output from this step is an in-sample and out-of-sample predicted transaction cost that may be appended to every past trade in the dataset. In addition, the betas from the most recent rolling window may be retained so they can be applied to newly arrived trades in real-time. The formula for in-sample transaction cost calculation is as follows:
C I _ Origina l ( t ) = ∑ j = 1 24 β j ( t ) × g j ( S d ( s ) , P ( s ) , S z ( s ) , R ( s ) , YTM 15 ( s ) ) s ≤ t ( 3.1 )
The formula for out-of-sample transaction cost calculation is as follows:
C O _ origina l ( t ) = ∑ j = 1 24 β j ( t ) × g j ( S d ( s ) , P ( s ) , S z ( s ) , R ( s ) , YTM 15 ( s ) ) s > t ( 3.2 )
Both in-sample and out-of-sample predicted transaction costs are truncated to have a minimum of 5 basis points, and a maximum of 2.5 times a regression coefficient obtained from a simple version of the regression above, estimated in the same window as the following formula:
Co=Sign(Sd+P) * max(0.05, min(2.5 * coef,Sign(Sd+P) * CO_original)), if ABS(Sd+P)=1 (3.3)
CI=Sign(Sd+P) * max(0.05, min(2.5 * coef,Sign(Sd+P) * CI_original)) if ABS(Sd+P)=1 (3.4)
This last coefficient (coef) is obtained by regressing price changes on the first nine basis functions. The variables with ‘pos’ in the names may all be zero for dealer buys, resulting in five actual basis functions. And the system may take the coefficient on Side * Size, which is β3 in the equation above, thus coef=β3.
3.1.2 Regression 1 for Agency Bonds
3.1.2.1. Basis functions for Agency Bonds
For agencies, the model in 3.1.1.1. may lose some terms that involved credit and becomes a 16 parameter model with basis functions identified (M=15, see Appendix D) as the following:
g1(ti, . . . )=Sd
g2(ti, . . . )=P
g3(ti, . . . )=Sd×Sz
g4(ti, . . . )=P×Sz
g5(ti, . . . )=Sz
g6(ti, . . . )=I1S
g7(ti, . . . )=I1P
g8(ti, . . . )=Sz×I1S=g5×g6
g9(ti, . . . )=Sz×I1P=g5×g7
g10(ti, . . . )=Sd×YTM15=g1×YTM15
g11(ti, . . . )=I1S×YTM15=g6×YTM15
g12(ti, . . . )=Sd×Sz×YTM15=g1×g5×YTM15
g13(ti, . . . )=P×Sz×YTM15=g4×YTM15
g14(ti, . . . )=I1S×Sz×YTM15=g8×YTM15
g15(ti, . . . )=g1P×Sz×YTM15=g5×g7=YTM15
fj(ti, . . . )=gj(ti, . . . )−gj(i−1, . . . ), j=1, . . . , 15
3.1.2.2. The Right-Hand-Side for Agency Bonds
The same as in 3.1.1.2, right-hand-side for Agency bonds includes 1st differences of prices.
3.1.2.3. Outputs for Agency Bonds
Keep the rest the same as in 3.1.1.3., and change equations (3.1) and (3.2) into
C I _ Origina l _ agy ( t ) = ∑ j = 1 15 β j ( t ) × g j ( S d ( s ) , P ( s ) , S z ( s ) , YTM 15 ( s ) ) s ≤ t ( 3.5 ) C O _ origina l _ agy ( t ) = ∑ j = 1 15 β j ( t ) × f j ( S d ( s ) , P ( s ) , S z ( s ) , YTM 15 ( s ) ) s > t ( 3.6 )
The trade-to-trade change in price is regressed on the in-sample predicted transaction cost and several other variables capturing trade-to-trade changes in ETF prices and their interactions with bond characteristics.
3.2.1.1. Basis Functions: Variables Designed to Capture ETF Price Changes in Regression 2
Excluding constant term, the number of basis functions is 18 (M=18, see Appendix E). The system may omit time dependency for state variables as before but also may include it whenever necessary. Basis functions are more complex due to the 1st difference involvement. Basis functions may be identified as follows:
g1(ti, . . . )=1n(LQD), f1(ti, . . . )=g1(ti, . . . )−g1(ti−1, . . . )
f2(ti, . . . )=f1×YTM10(ti)
f3(ti, . . . )=f1×R(ti)
f4(ti, . . . )=f1×YTM10(ti)×R(ti)
f5(ti, . . . )=f1×H(t1)
f6(ti, . . . )=f5×R(ti)
f7(ti, . . . )=f5×YTM10(ti)
f8(ti, . . . )=f7×R(ti)
g9(ti, . . . )=1n(HYG)−1n(LQD), f9(ti, . . . )=g9(ti, . . . )−g9(ti−1, . . . )
f10(ti, . . . )=f9×YTM10(ti)
f11(ti, . . . )=f9×R(ti)
f12(ti, . . . )=f9×YTM10(ti)×R(ti)
f13(ti, . . . )=f9×H(ti)
f14(ti, . . . )=f13×R(ti)
f15(ti, . . . )=f13×YTM10(ti)
f16(ti, . . . )=f15×R(ti)
g17(ti, . . . )=1n(TLT)−1n(IEI), f17(ti, . . . )=[g17(ti, . . . )+g17(ti−1, . . . )]×YTM20(ti, . . . )×IA(ti), where
IA is A-rating or better indicator
f18(ti)=CI_Original(ti)−CIOriginal(ti−1)
H(t) is the high yield indicator that equals to 1 if it is high yield, otherwise it is 0.
3.2.1.2. The Right-hand-side of the Regression
The right-hand-side also includes 1st differences in prices.
3.2.1.3. Outputs: Out-of-sample Betas and Out-of-sample Market Adjustments
Coefficients from the data are used to estimate three betas for each bond, an LQD beta, an HYG-LQD beta, and a TLT-IEI beta. Let the three beta multipliers produced by the regression above (at the end of the repression window) be βLQD(t), βHYG-LQD(t), and βTLT-IEI(t) respectively. The beta is the sum of the coefficients multiplied by the relevant variable (divided by the ETF change) as follows:
β
LQD
(
t
)
=
∑
j
=
1
8
β
j
(
t
)
f
j
(
s
)
s
>
t
f
1
(
s
)
s
>
t
(
3.7
)
β
HYG
-
LQD
(
t
)
=
∑
j
=
9
16
β
j
(
t
)
f
j
(
s
)
s
>
t
f
9
(
s
)
s
>
t
(
3.8
)
βTLT-IEI(t)=β18(t)×YTM20(s)s>t×RA(s)s>t, for all bonds rated better than A and in 20 years of YTM, βTLT-IEL(t)=0 otherwise. (3.9)
The betas are then used out-of-sample to construct predicted market adjustments from one trade to the next from month t-24 to t-1. Then the out-of-sample market adjustment at t is calculated as follows:
Mo(t,s)=βLQD(t)×(1n(LQD(s))1n(LQD(s−1))) +βHYG-LQD(t)×(1n(HYG(s))−1n(LQD(s))−1n(HYG(s−1))+1n(LQD(s−1)))+, s>t βTLT-IEI(ln(TLT(s))−1n(IEI(s))−1n(TLT(s−1))+1n(IEI(s−1))) (3.10)
3.2.2 Regression 2 for Agency Bonds
3.2.2.1. Basis Functions for Agency Bonds
For agencies, the model in 3.2.1.1. may lose some terms that involved credit and becomes a 11 parameter model, also by using LQD and HYG-LQD take AGZ and IEI-AGZ instead as the following:
g1(ti, . . . )=1n(AGZ), f1(ti, . . . )=g1(ti, . . . )−g1(ti−1, . . . )
f2(ti, . . . )=f1×YTM10(ti)
f3(ti, . . . )=f1×H(ti)
f4(ti, . . . )=f3×YTM10(ti)
g5(ti, . . . )=1n(IEI)−1n(AGZ), f5(ti, . . . )=g5(ti, . . . )−g5(ti−1, . . . )
f6(ti, . . . )=f5×YTM10(ti)
f7(ti, . . . )=f5×H(ti
f8(ti, . . . )=f7×YTM10(ti)
3.2.2.2. The Right-hand-side for Agency Bonds
The same as in 3.2.1.2, right-hand-side for Agency bonds includes 1st differences of prices.
3.2.2.3. Outputs for Agency Bonds
Keep the rest the same as in 3.2.1.3., and change equations (3.7), (3.8) and (3.9) into the following:
β
AGZ
(
t
)
=
∑
j
=
1
4
β
j
(
t
)
f
j
(
s
)
s
>
t
f
1
(
s
)
s
>
t
(
3.11
)
β
IEI
-
AGZ
(
t
)
=
∑
j
=
5
8
β
j
(
t
)
f
j
(
s
)
s
>
t
f
5
(
s
)
s
>
t
(
3.12
)
βTLT-IEI(t)=β9(t)×YTM20(s)s>t, for all bonds in 20 years of YTM, it is 0 other-wise. (3.13)
And the calculation of out-of-sample market adjustment changes into the following:
MO_agy(t,s)=βAGZ(t)×(1n(AGZ(s))−1n(AGZ(s−1)))+βIEI-AGZ(t)×(1n(IEI(s))−1n(AGZ(s))−1n(IEI(s−1))+1n(AGZ(s−1)))+βTLT-IEI(t)×(1n(TLT(s))−1n(IEI(s))1n(TLT(s−1))+1n(IEI(s−1))) (3.14)
This section is to run regressions that estimate transaction cost and beta multipliers for each of 30 maturity* credit cells. For each of the 30 cells and each of the rolling windows, three regressions below are run.
3.3.1 Regression 3: Calculate In-sample Predicted Value
3.3.1.1. Basis Function: Changes in Out-of-sample Predicted Transaction Costs from Regression 1
3.3.1.2. Regression Equation
The first regression is a regression of trade-to-trade price changes on changes in out-of-sample predicted transaction costs from Regression 1. Therefore, this regression is a weighted line-fit calculated as follows:
Δp=β0P+β1P·ΔCO (3.15)
3.3.2 Regression 4: Calculate In-sample Beta
3.3.2.1. Basis Function: Trade-to-trade Change in Ln(LQD)
3.3.2.2. Regression Equation
The second regression is a regression of trade-to-trade price changes (less the in-sample predicted value from Regression 3) on the trade-to-trade change in Ln(LQD).
This regression is weighted line-fit calculated as follows:
Δp−β1P=β0l+β1l·Δ1n(LQD) (3.16)
3.3.3 Regression 5: Calculate CO and SE for a Bond's Cell
3.3.3.1. Basis Function: Trade-to-trade change in ETFs and In-sample Beta
3.3.3.2. Regression Equation
The third regression is a regression using the dependent variable from Regression 4, less the trade-to-trade in LQD times the average of the in-sample beta from the second regression and the LQD beta estimated in 3.2.1.3. This regression is the weighted line-fit calculated as follows:
Δp−β1PΔCO−0.5·βLQD·Δ1n(LQD)−0.5·β1l·Δ1n(LQD)=β0h+β1h·[Δ1n(HYG)−Δ1n(LQD)] (3.17)
3.3.3.3. Outputs: Standard Error for Bond's Cell
The details on standard error for coefficients are included in Appendix E. In addition, both coefficients and standard errors from the above three regressions are recorded for each cell and rolling window. Once the transaction cost and market adjustments are calculated in step 3.4. for time period T, the coefficients from the rolling window T-24 to T-1 can be discarded. All the coefficients for all 30 cells and ˜40 rolling windows may be calculated, and then all the adjustments may be calculated. All 30 cell's coefficients for window T-24 to T-1 may also be calculated along with the adjustments for T, and then move onto the next rolling window. New rolling windows are determined every day, and thus 50 sets of coefficients instead of 24 are calculated over a 24-month past history.
3.3.4 Regression 3, 4, 5 for Agency Bonds
3.3.4.1. Regression 3 for Agency Bonds
Steps and equations are the same as in section 3.3.1.
3.3.4.2. Regression 4 for Agency Bonds
Change ETF LQD into AGZ in each equation of section 3.3.2., and keep other calculations the same.
3.3.4.3. Regression 5 for Agency Bonds
Replace HYG-LQD by IEI-AGZ in each equation of section 3.3.3., and also use βAGZ instead of βLQD in related calculations.
In this section, estimated transaction costs and credit market betas from 3.1. and 3.2. are blended with those estimated in 3.3.
3.4.1 Blend of the CO for Bond's Cell
Cell-average transaction cost, cell-average betas, and cell-average standard error are calculated and then blended with outputs from TC model and Market Adjustment Model to produce blended transaction cost and blended betas. Let (ytm,R) be maturity-rating pair. For each calculation, the performance of this step occurs as follows:
This step is just for smoothing each cell-dependent quantity.
Calculate the global cell-average coefficients and standard errors over all 30 cells (averaging the results from the 3rd step). Since the 3rd step may not been implemented, this step is simply averaging “simple” results of cell-restricted regressions. For saving typing, we use the same notations for surrounding-cell-averages.
The three outputs are calculated as follows (using results from previous step):
The adjacent cells are identified as follows. Given a point of pair of YTM and credit rating, the first thing to do is to identify adjacent cells. This is done according to its location relative to cell midpoints. Let {Ri}i=16 be the set of credit ratings. Currently R1 represents CCC or below, R6 represents AA and above. Let {YTMi}i=06 be the set of midpoints of time-to-maturity ranges. Currently YTM0=0, YTM1=1, YTM2=3.5, YTM3=6.5, . . . , YTM6 represents 20+years. Given a point P=(R,Y) rating bounds and maturity bounds are determined for P i.e. Ri and Ri+1 such that Ri≤R≤Ri+1; YTMj and YTMj+1 such that YTMj≤Y≤YTMj+1. The adjacent cells for P may be the combination of rating bounds and maturity bounds. Note that either ranges [Ri,Ri+1] and [YTMj, YTMj+1] may shrink to a point, in that case the combination may have less than 4 cells.
Cell weight calculations are outlined as follows. There are two components to be calculated: YTM weight and credit rating weight. The YTM weight is calculated as
w
YTM
=
Y
-
YTM
k
YTM
j
+
1
-
YTM
j
,
given that the range └YTMj, YTMj+1┘ didn't shrink. Here Yϵ└YTMj, YTMj+1┘ and k=j or j+1 depending on which adjacent cell is calculating weight. The credit rating weight is calculated in similar manner where
w
R
=
d
(
R
,
R
k
)
n
i
,
i
+
1
,
n
i
,
i
+
1
is the distance between Ri and Ri+1 given the range didn't shrink. Here Rϵ[Ri,Ri+1] and d(R,Rk) is distance between R and Rk, k=i or i+1 depending on which adjacent cell we are calculating weight. Distance between two credit ratings means the number upgrades (downgrades) needed traveling from one rating to the other. The cell weight is then the product of credit rating weight and YTM weight:
wC=wYTM×wR.
3.4.2 Blend of the CO for Agency Bonds
For agencies, 6 cells for the different maturities may be used and the coefficients from the 2 cells with nearest midpoints are blended.
3.4.3 Blend the Average of the Cell CO
For transaction costs, the out-of-sample predicted transaction cost from 3.1. is transformed into the rescaled transaction cost by the following equation:
tc=Co·(1+(β1P−1)*(0.8−0.3* Max(0,Min(1,ĒP* 100−100)))) (3.18)
If the standard error is: ĒP>0.1 or |β1P−1|>0.5, then the cell-average coefficient COAis discarded and the out-of-sample transaction cost from 3.1., CO, is used instead.
3.4.4 Calculate New Betas
3.4.4.1. Calculate the new LQD Beta
βl=Max(5,βLQD*0.4+B1l*0.4) (3.19)
For agencies, slightly change equation (3.19) into:
βα=Max(5,βAGZ*0.4+β1l* 0.4) (3.20)
Calculate the new HYG-LQD Beta
βh=βHYG-LQD * 0.8+0.8 *(β1h−βHYG-LQD) * (1−0.2 * max(0, min(4, Ēh))) (3.21)
For agencies, slightly change equation (3.21) into:
βi=βIEI-AGZ * 0.8+0.8 * (β1h−βIEI-AGZ) * (1−0.2* max(0, min(4, Ēh))) (3.22)
3.4.4.2. Calculate the new TLT-IEI Beta
The TLT-IEI beta is simply retained from 3.2.1.3., formula (3.9):
β m = β TLT - IEI = { β 17 * YTM 20 * R A , for all bonds rated better than A - and in 20 years of maturity 0 , for all bonds rated less than A - or within 10 years of maturity
For agencies, use formula (3.13) instead.
3.4.5 Calculate New Market Adjustment
etf2(t, s)=βl(t)×(1n(LQD(s))−1n(LQD(s−1)))+βh(t)×(1n(HYG(s))−1n(LQD(s))−1n(HYG(s−1))+1n(LQD(s−1)))+βm(t)×(1n(TLT(s))−1n(IEI(s)) l−1n(TLT(s−1))+1n(IEI(s−1))) (3.23)
And for agency bonds, change equation (3.23) into:
etf2(t, s)=β1_agy(t)×(1n(AGZ(s))−1n(AGZ(s−1)))+βh_agy(t)×(1n(IEI(s))−1n(AGZ(s))−1n(IEI(s−1))+1n(AGZ(s−1))) βm(t)×(1n(TLT(s))−1n(IEI(s))−1n(TLT9s−1))+1n(IEI(s−1))) (3.24)
3.5.1.1. Basis Functions: Trade-to-trade Price Change, Trade-to-trade Change in Estimated TC and MktA
3.5.1.2. Regression Equation
Rolling window regressions are run for each issue. Regressions are only run for 24-month windows with at least 20 trades. The trade-to-trade price change is regressed on the trade-to-trade change in estimated transaction costs and the trade-to-trade market adjustment.
This regression is the weighted line-fit:
Δp={tilde over (β)}0+{tilde over (β)}1 * w * Δtc+{tilde over (β)}2* w * etf2 (3.25)
3.5.1.3. Outputs: TCA and MktA Coefficients and Standard Errors
Coefficients and standard errors are recorded for the transaction cost and market adjustments as COTCA, COMktA and SETCA, SEMktA. Let {tilde over (β)}1 and {tilde over (β)}2 be the two coefficients:
COTCA(t)={tilde over (β)}1(t) (3.26)
COMktA(t)={tilde over (β)}2(t) (3.27)
3.5.2 Calculate Final Transaction Cost Adjustment (TCA)
The final transaction cost adjustment is calculated as the step 12 adjustment tc multiplied by the factor as:
tc
3
=
tc
*
(
1
+
(
β
1
~
-
1
)
*
max
(
0
,
min
(
1
,
0.5
-
0.25
*
ln
(
8
*
σ
2
(
β
1
~
)
)
)
)
)
(
3.28
)
3.5.3 Calculate Final Market Adjustment (MktA)
Similarly, the final market adjustment is calculated using the step 12 betas multiplied by the factor as:
etf 23 = etf 2 * ( 0.9 * ( 1 + ( β 2 ~ - 1 ) * max ( 0 , min ( 1 , 1 - 3 * σ 2 ( β 2 ~ ) ) ) ) ) ( 3.29 )
FIG. 4 depicts an exemplary flow chart of value estimation. In general, value estimation occurs in three steps:
3.6.1.1. Calculate TCA and MktA for Each Trade
For each trade, calculate a transaction cost adjustment by using formula (3.28), and a trade-to-trade market adjustment, using betas from Regression 6 in 3.5. multiplied by changes since the last trade. Cumulate the trade-to-trade market adjustments into a cumulative index. Transaction cost adjustment can be obtained by following steps below:
β1p, Ēp are coefficients from Regression 3-5
tc
3
=
tc
*
(
1
+
(
β
1
~
-
1
)
*
max
(
0
,
min
(
1
,
0.5
-
0.25
*
ln
(
8
*
σ
2
(
β
1
~
)
)
)
)
)
tc is from Section 3.4.3.
β
1
~
,
σ
2
(
β
1
~
)
are coefficients from Regression 6
Market adjustments are calculated using betas generated from overnight regression—Regression 2. Using these betas times, the ETF price changes and sums them up as the following steps shows:
etf2(t, s)=βl×(1n(LQD(t))−1n(LQD(s)))+βh×(1n(HYG(t))−1n(LQD(t))−1n(HYG(s))+1n(LQD(s)))+βm×(1n(TLT(t))−1n(IEI(t))−1n(TLT(s))+1n(IEI(s))) i.
where t is the time when a new trade comes in and triggers the model to update, while s is last model updated time
etf 23 = etf 2 * ( 0.9 * ( 1 + ( β 2 ~ - 1 ) * max ( 0 , min ( 1 , 1 - 3 * σ 2 ( β 2 ~ ) ) ) ) )
β
2
~
,
σ
2
(
β
2
~
)
are coefficients from Regression 6
3.6.1.2. Weight Trades by Executed Second
Trades are weighted by log trade size. Use
ln
(
Lotsize
100
)
,
where lotsize is par value in dollars or use variable MAquantityindicator to weight the trades. For each CUSIP * second, a weighted average of data is determined for all trades executed that second, including the replace or cancelled ones.
Variables to be averaged:
3.6.2.1. Construct a Baseline Price
For a bond with trades at {ti, i=1,2, . . . , k} during the 6 month window, use tc3 and etf23 developed above from Section 3.5.2. and 3.5.3., after weighted average if necessary, calculated as follows: Padj(ti)=P(ti)−tc3(ti), i=1,2, . . . , k. Use the average of transaction cost and market adjusted prices from the last 5 CUSIP * seconds with trades.
Define the baseline price as:
P
5
adj
(
t
i
)
=
P
adj
(
t
i
)
+
P
adj
(
t
i
-
1
)
+
P
adj
(
t
i
-
2
)
+
P
adj
(
t
i
-
3
)
+
P
adj
(
t
i
-
4
)
5
(
3.30
)
Define Y=Padj(ti+1)−P5adj(ti−1)−MktA(ti−5,ti)−etf23(ti+1) (3.31)
And: X=Padj(ti)−P5adj(ti−1)−MktA(ti−5, ti) (3.32)
where:
MktA(ti−5, ti)=etf23(ti)+0.8 * etf23(ti−2)+0.6 * etf23(ti−2)+0.4 * etf23(ti−3)+0.2 * etf23(ti−4) (3.33)
For Y only, trades that are eventually cancelled or replaced may not be considered.
3.6.2.2. Regression 7: Calculate the Prediction of the Next Trade Price
Y
=
A
·
β
=
∑
j
=
1
9
β
j
×
a
j
(
3.34
)
Where:
This regression produces one month ahead out-of-sample estimate, which is calculated as
Y
^
=
∑
j
=
1
9
β
*
x
,
as well as one month ahead out-of-sample estimate is obtained as PredPrice(ti)=P5adj(ti−1)+MktA(ti−6, ti−1)+Ŷ. During daily real-time evaluation, when new trades come in, the above calculation is repeated and the process is shown in Section 4.6.4., PredPrice(ti) is one way of mixing tc3 and etf23 to produce a model evaluation for time ti.
3.6.2.3. Construct Prediction of the Next Trade Price
The coefficients from the above regression are used out of sample to construct a prediction of the next trade price as of each trade. Also, let Δt, the difference between t+1 and t, equal to one second. And save the coefficients from the last rolling window for use out-of-sample.
In this step, 3.6.2. is repeated. For each iteration, the new baseline price is the predicted next-trade price as of trade t−1. And Y is the difference between the baseline price and trade t+1's transaction cost and market-adjusted prices in formula (3.31), and X is the difference between the baseline price and the predicted next-trade price as of trade t as in formula (3.32). Regression 7 is run to generate predicted next-trade prices as in formula (3.34), and save coefficients from the last rolling window for real-time use.
3.6.3.2. Average the Predicted Next-trade Price
When the predicted next-trade price is averaged from the first and second iterations, a 50-50 ratio is used out-of sample as a measure of current value, adjusted for market movements since the last trade using the betas.
3.6.4 Outputs of Value Estimation
To take into the real time model, outputs from the above steps of value estimation are determined as follows:
Table 6 is a summary of outputs which are used in Section 4 for real time value estimation; Table 7 is the mapping of variable names used for calculation in real-time process in Section 4.
Contents in each column are listed below:
| TABLE 6 |
| Outputs from Section 3 |
| Variable Name | Output (in | Regression | Data | Related Sections |
| Objective | (in model) | Stata code) | No./Function | Coefficient Name | Identity | TC | MA | VE | RT |
| Original | CO_original | py3 (then | Regression 1 | Reg1_Coef_tt, | Market | √ | √ | ||
| out-of- | replaced | (3.2) | Reg1_Coef_dtt, | ||||||
| sample | by the | Reg1_Coef_ttfq, | |||||||
| predicted | truncated | Reg1_Coef_dttfq, | |||||||
| transaction | transaction | Reg1_Coef_fq, | |||||||
| costs | cost py3 | Reg1_Coef_ttpos, | |||||||
| without | below) | Reg1_Coef_dttpos, | |||||||
| truncated | Reg1_Coef_ttposfq, | ||||||||
| Reg1_Coef_dttposfq, | |||||||||
| Reg1_Coef_ttrat, | |||||||||
| Reg1_Coef_ttmat15, | |||||||||
| Reg1_Coef_ttposrat, | |||||||||
| Reg1_Coef_ttposmat | |||||||||
| 15, | |||||||||
| Reg1_Coef_ttfqrat, | |||||||||
| Reg1_Coef_ttfqmat15, | |||||||||
| Reg1_Coef_ttfqmat15 | |||||||||
| rat, | |||||||||
| Reg1_Coef_dttfqrat, | |||||||||
| Reg1_Coef_dttfqmat | |||||||||
| 15, | |||||||||
| Reg1_Coef_dttfqmat | |||||||||
| 15rat, | |||||||||
| Reg1_Coef_ttposfqrat, | |||||||||
| Reg1_Coef_ttposfqmat | |||||||||
| 15, | |||||||||
| Reg1_Coef_ttposfqmat | |||||||||
| 15rat, | |||||||||
| Reg1_Coef_dttposfqrat, | |||||||||
| Reg1_Coef_dttposfqm | |||||||||
| at15 | |||||||||
| For Agency: | CO_original_agy | Regression 1 | Reg1agy_Coef_tt, | Market | √ | √ | |||
| Original | (3.6) | Reg1agy_Coef_dtt, | |||||||
| out-of- | Reg1agy_Coef_ttfq, | ||||||||
| sample | Reg1agy_Coef_dttfq, | ||||||||
| predicted | Reg1agy_Coef_fq, | ||||||||
| transaction | Reg1agy_Coef_ttpos, | ||||||||
| costs | Reg1agy_Coef_dttpos, | ||||||||
| without | Reg1agy_Coef_ttposf | ||||||||
| truncated | q, | ||||||||
| Reg1agy_Coef_dttpos | |||||||||
| fq, | |||||||||
| Reg1agy_Coef_ttmat | |||||||||
| 15, | |||||||||
| Reg1agy_Coef_ttpos | |||||||||
| mat15, | |||||||||
| Reg1agy_Coef_ttfqm | |||||||||
| at15, | |||||||||
| Reg1agy_Coef_dttfqm | |||||||||
| at15, | |||||||||
| Reg1agy_Coef_ttposfq | |||||||||
| mat15, | |||||||||
| Reg1agy_Coef_dttpos | |||||||||
| fqmat15 | |||||||||
| Truncated | CO | Py3 | Regression 1 | Reg1_Coef9_ttfq | Market | √ | √ | ||
| out-of | (3.3) | ||||||||
| sample | |||||||||
| transaction | |||||||||
| cost | |||||||||
| Cell- | β1p | BldReg3_ | BldReg3_Coef_spy3 | Bond | |||||
| average | Coef_spy3 | ||||||||
| coefficient | |||||||||
| CO | |||||||||
| Cell- | Εp | BldReg3_ | BldReg3_Se_spy3 | Bond | |||||
| average | Se_spy3 | ||||||||
| standard | |||||||||
| error SE | |||||||||
| Final LQD | βl | beta_l | Regression 2 | βLQD is generated from | Bond | √ | |||
| Beta | (3.7) | Regression 2 (betaL1): | |||||||
| calculated | Regression 4 | Reg2_Coef_sLQD, | |||||||
| by using | (3.16) | Reg2_Coef_sLQDmat | |||||||
| βLQD and | (3.19) | 10, | |||||||
| the cell- | Reg2_Coef_sLQDrat, | ||||||||
| average | Reg2_Coef_sLQDmat | ||||||||
| coefficient | 10rat, | ||||||||
| β1l | Reg2_Coef_sLQDhy, | ||||||||
| Reg2_Coef_sLQDhy | |||||||||
| rat, | |||||||||
| Reg2_Coef_sLQDmat | |||||||||
| 10hy, | |||||||||
| Reg2_Coef_sLQDmat | |||||||||
| 10hyrat, | |||||||||
| β1l is generated from | |||||||||
| Regression 4(col): | |||||||||
| Reg4_Coef_sLQD | |||||||||
| For Agency: | βa | beta_a | Regression 2 | βAGZ is generated from | Bond | √ | |||
| Final AGZ | (3.11) | Regression 2: | |||||||
| Beta | Regression 4 | Reg2agy_Coef_sAGZ, | |||||||
| calculated | (3.20) | Reg2agy_Coef_sAGZ | |||||||
| by using | mat10, | ||||||||
| βAGZ and | Reg2agy_Coef_sAGZ | ||||||||
| the cell- | hy, | ||||||||
| average | Reg2agy_Coef_sAGZ | ||||||||
| coefficient | mat10hy, | ||||||||
| β1a | β1l is generated from | ||||||||
| Regression 4: | |||||||||
| Reg4agy_Coef_sAGZ | |||||||||
| Final | βh | beta_h | Regression 2 | βHYG-LQD is generated | Bond | √ | |||
| HYG-LQD | (3.8) | from Regression 2 | |||||||
| Beta | Regression 5 | (betaH1): | |||||||
| calculated | (3.17) | Reg2_Coef_sHL, | |||||||
| by using | (3.21) | Reg2_Coef_sHLhy, | |||||||
| βHYG-LQD | Reg2_Coef_sHLrat, | ||||||||
| and the cell- | Reg2_Coef_sHLhyrat, | ||||||||
| average | Reg2_Coef_sHLmat | ||||||||
| coefficient | 10, | ||||||||
| β1h | Reg2_Coef_sHLmat | ||||||||
| 10hy, | |||||||||
| Reg2_Coef_sHLmat | |||||||||
| 10hyrat | |||||||||
| β1h is generated from | |||||||||
| Regression 5 (coh): | |||||||||
| Reg4_Coef_sHL | |||||||||
| For Agency: | βi | beta_i | Regression 2 | Reg2agy_Coef_sIA, | Bond | √ | |||
| Final IEI- | (3.12) | Reg2agy_Coef_sIAhy, | |||||||
| AGZ Beta | Regression 5 | Reg2agy_Coef_sIAm | |||||||
| calculated | (3.22) | at10, | |||||||
| by using | Reg2agy_Coef_sIAm | ||||||||
| βIEI-AGZ | at10hy | ||||||||
| and the cell- | |||||||||
| average | |||||||||
| coefficient | |||||||||
| β1i | |||||||||
| Final TLT- | βm | beta_m | Regression 2 | Reg2_Coef_sLM10a | Bond | √ | |||
| IEI Beta, | (3.9) | ||||||||
| remained | |||||||||
| as the same | |||||||||
| as the | |||||||||
| original | |||||||||
| TLT-IEI | |||||||||
| Beta | |||||||||
| For Agency: | βm_agy | beta_m | Regression 2 | Reg2agy_Coef_sLM | Bond | √ | |||
| Final TLT- | (3.13) | 10a | |||||||
| IEI Beta, | |||||||||
| remained | |||||||||
| as the same | |||||||||
| as the | |||||||||
| original | |||||||||
| TLT-IEI | |||||||||
| Beta | |||||||||
| Issue-level | copi | Regression 6 | Reg6_Coef_stc | Bond | √ | ||||
| transaction | (3.25) | ||||||||
| cost | |||||||||
| coefficient | |||||||||
| Issue-level | sepi | Regression 6 | Reg6_Se_stc | Bond | √ | ||||
| transaction | (3.25) | ||||||||
| cost | |||||||||
| standard | |||||||||
| error | |||||||||
| Issue-level | coe | Regression 6 | Reg6_Coef_seft2 | Bond | √ | ||||
| market | (3.25) | ||||||||
| adjustment | |||||||||
| coefficient | |||||||||
| Issue-level | see | Regression 6 | Reg6_Se_etf2 | Bond | √ | ||||
| market | (3.25) | ||||||||
| adjustment | |||||||||
| standard | |||||||||
| error | |||||||||
| Market | (0.9 * (1 + ( − 1) * | emult | (3.29) | coe, see | Bond | √ | √ | ||
| adjustment | max(0, min(1,1 − 3 * | ||||||||
| multiplier | ))) | ||||||||
| estimated | |||||||||
| from COE | |||||||||
| Estimated | Ŷ | py | Regression 7 | Reg7_Coef_x, | Trade | √ | √ | ||
| value of Υ | (4.5) | Reg7_Coef_udx, | |||||||
| by using the | Reg7_Coef_dx, | ||||||||
| coefficients | Reg7_Coef_xLnft, | ||||||||
| times | Reg7_Coef_xLnt, | ||||||||
| variables | Reg7_Coef_xfq, | ||||||||
| coming with | Reg7_Coef_xig, | ||||||||
| the trades | Reg7_Coef_xsame, | ||||||||
| Reg7_Coef_xpos | |||||||||
| New | Ŷ2 | py | Regression 7 | Reg72-Coef_x2, | Trade | √ | √ | ||
| estimated | (4.8) | Reg72-Coef_x2ud, | |||||||
| value of Υ2 | Reg72-Coef_x2Lnft, | ||||||||
| by using the | Reg72-Coef_x2Lnt, | ||||||||
| overnight | Reg72-Coef_x2fq, | ||||||||
| coefficients | Reg72-Coef_x2ig, | ||||||||
| times | Reg72-Coef_x2pos | ||||||||
| variables | |||||||||
| coming with | |||||||||
| the trades | |||||||||
| TABLE 7 |
| Variables Mapping for Section 4 |
| Variable Name | Output | Regression | Data | Related Sections |
| Objective | (in model) | (in Stata code) | No./Function | Coefficient Name | Identity | TC | MA | VE | RT |
| Large dealer | ldb | ldb | py3, cop, sep | Trade | √ | √ | |||
| buy | |||||||||
| transaction | |||||||||
| cost | |||||||||
| Issue-level | ldb2 | ldb2 | tc, copi, sep | Trade | √ | √ | |||
| large dealer | |||||||||
| buy | |||||||||
| transaction | |||||||||
| cost | |||||||||
| Rescaled | tc | tc | Regression 5 | py3, cop, sep | Trade | √ | √ | ||
| transaction | (3.18) | ||||||||
| cost | |||||||||
| Final | tc3 | tc3 | (3.28) | tc, copi, sep | Trade | √ | √ | ||
| transaction | |||||||||
| costs | |||||||||
| adjustment | |||||||||
| Rescaled | etf2 | etf2 | Regression 5 | beta_1, sLQD, | Bond | √ | √ | ||
| market | (3.23) | beta_h, sHL, | |||||||
| adjustment | beta_m, sLM10a | ||||||||
| Final market | eft23 | etf23 | (3.29) | etf2, emult | Bond | √ | √ | ||
| adjustment | |||||||||
| Adjusted | Padj | adjp | adjp = price − tpred2 | ||||||
| price | |||||||||
| Baseline | P5adj | adjp5 | Regression 7 | adjp5 = (adjp + | Trade | √ | |||
| price | (3.30) | l.adjp +l2.adjp + | |||||||
| 13.adjp + 14.ajdp)/5 | |||||||||
| Interdealer | Id | dealer | Regression 7 | dx = x * dealer | Trade | √ | |||
| indicator | (3.34) | Reg7_Coef_dx | |||||||
| Unpaired | Ud | udealer | udx = x * udealer | Trade | √ | ||||
| interdealer | Reg7_Coef_udx | ||||||||
| indicator | |||||||||
| Log | Td1 | ln(fs.dt/1000) | Regression 7 | xlnft = x * | Trade | √ | |||
| differences | (3.34) | ln(fs.dt/1000) | |||||||
| in time | Reg7_Coef_xLnft | ||||||||
| between | |||||||||
| trade t + 1 | |||||||||
| and t | |||||||||
| Log | Td2 | ln(s.dt/1000) | Regression 7 | xlnft = x * | Trade | √ | |||
| differences | (3.34) | ln(s.dt/1000) | |||||||
| in time | Reg7_Coef_xLnt | ||||||||
| between | |||||||||
| t and t − 1 | |||||||||
| Investment | IGd | Sprat > 10 | Regression 7 | xig = x * (Sprat > 10) | Trade | √ | |||
| grade | (3.34) | Reg7_Doef_xig | |||||||
| indicator | |||||||||
| Average | Ts | w/trades | Regression 7 | xfq = X * w/trades | Trade | √ | |||
| trade size | (3.34) | Reg7_Coef_xfq | |||||||
| The | I | dofc(dt)==dofc(l.dt)) | Regression 7 | xsame = x * | Trade | √ | |||
| indicator | (3.34) | (dofc(dt)==dofc(l.dt)) | |||||||
| variable for | Reg7_Coef_xsame | ||||||||
| trade t and | |||||||||
| t − 1 | |||||||||
| occurring | |||||||||
| on the same | |||||||||
| calendar | |||||||||
| day | |||||||||
| Sum of Slide | Sum | pos | Regression 7 | xpos = x * pos | Trade | √ | |||
| and Paired | (3.34) | Reg7_Coef_xpos | Trade | √ | |||||
| Difference | X | x | Regression 7 | adjp, etfpred2, adjp5, | |||||
| between the | (3.32) | cetfpred2 | |||||||
| baseline | |||||||||
| price and the | |||||||||
| predicted | |||||||||
| next-trade | |||||||||
| price as of | |||||||||
| trade t | |||||||||
| Difference | Y | y | Regression 7 | Reg7_Coef_x, | Trade | √ | |||
| between the | (3.31) | Reg7_Coef_udx | |||||||
| baseline | Reg7_Coef_dx | ||||||||
| price and | Reg7_Coef_xLnft | ||||||||
| trade t + 1's | Reg7_Coef_xfq | ||||||||
| transaction | Reg7_Coef_xig | ||||||||
| cost and | Reg7_Coef_xsame | ||||||||
| market- | Reg7_Coef_xpos | ||||||||
| adjusted | |||||||||
| prices | |||||||||
| Estimated | Ŷ | py | Regression 7 | Trade | √ | √ | |||
| value of Y | (4.5) | ||||||||
| by using the | |||||||||
| coefficients | |||||||||
| times | |||||||||
| variables | |||||||||
| coming with | |||||||||
| the trades | |||||||||
| Prediction | PredPrice(t) | pprice | Regression 7 | adjp5, etfpred2 | Trade | √ | √ | ||
| of | (4.6) | ||||||||
| transaction | |||||||||
| cost and | |||||||||
| market | |||||||||
| adjusted | |||||||||
| price | |||||||||
| New | X2 | x2 | Regression 7 | pprice | Trade | √ | √ | ||
| difference | (4.7) | ||||||||
| between the | |||||||||
| baseline | |||||||||
| price and the | |||||||||
| predicted | |||||||||
| next-trade | |||||||||
| price | |||||||||
| New | Y2 | y2 | Regression 7 | Note: adjp, pprice, | Trade | √ | √ | ||
| difference | etfpred2 | ||||||||
| between the | Reg72_Coef_x2, | ||||||||
| baseline | Reg72_Coef-x2ud, | ||||||||
| price and | Reg72_Coef-x2Lnft, | ||||||||
| trade t + 1's | Reg72_Coef-x2fq, | ||||||||
| transaction | Reg72_Coef-x2ig | ||||||||
| cost and | Reg72_Coef-x2pos | ||||||||
| market- | |||||||||
| adjusted | |||||||||
| prices | |||||||||
| New | Ŷ2 | py2 | Regression 7 | Trade | √ | √ | |||
| estimated | (4.8) | ||||||||
| calue of Y2 | |||||||||
| by using the | |||||||||
| overnight | |||||||||
| coefficients | |||||||||
| times | |||||||||
| variables | |||||||||
| coming with | |||||||||
| the new | |||||||||
| trades | |||||||||
| New | PredPrice2 | pprice2 | Regression 7 | pprice, etfpred2, py2 | Trade | √ | √ | ||
| prediction of | (4.9) | ||||||||
| transaction | |||||||||
| cost and | |||||||||
| market- | |||||||||
| adjusted | |||||||||
| prices | |||||||||
| Model Bid | Model Bid Price | mbid | (4.11) | Model Mid Price, | Trade | √ | √ | ||
| Price | (this variable may | ldb (or ldb2 or ldb3) | |||||||
| not be included in | |||||||||
| coding) | |||||||||
| Model Mid | Model Mid Price | mmid | (4.10) | pprice, pprice 2 | Trade | √ | √ | ||
| Price | (this variable may | ||||||||
| not be included) | |||||||||
| Model Ask | Model Ask Price | mask | (4.12) | Model Mid Price, | Trade | √ | √ | ||
| Price | (this variable may | Model Bid Price | |||||||
| not be included) | |||||||||
4. Daily Real-Time Process
The real time model value estimation may be run in response to three triggers—new trades, cancelled/replaced trades, or in response to ETF price changes. FIG. 5 depicts an exemplary workflow for the real model value estimation.
The logic of the above process is as the following:
Intraday Model prices are to be calculated for the universe of bonds which:
Overnight regression includes matured securities which have TRACE trades within the TRADE-WINDOW (where the window is currently 4 years). To calculate the first model price, at least six trades may be used to run the overnight regression. And to generate model price at real-time, besides these six trades, the seventh trade may need to happen the next day to trigger the intraday calculation on model price. For example, there are several possible cases:
Trades are reduced to the CUSIP*second level. Calculate the average characteristics of trades executed each second, for each CUSIP. For each CUSIP*second, take a weighted average of data for all trades executed that second (including those that are eventually replaced or cancelled). Trades are weighted by
ln
(
Lotsize
$100
)
.
The variables to be averaged are:
As shown above, trades are reduced to the CUSIP*second level. If multiple trades occurred in one second, results of aggregated trade are published within that second, i.e., weight-averaged aggregation of all trades in that second. Here is the list of the aggregated trade variables:
There are seven additional parameters used an exemplary overnight regression code, which are based on input variable “yq”:
ldb and ldb2 may only be updated once daily, i.e., ldb and ldb2 may be calculated at the beginning of each day and keep them the same the rest of the day regardless of whether a new trade is obtained during the day or whether there is large dealer buy trade intraday. ldb and ldb2 can be generated by the following sections. ldb and ldb2 are special case for tc and tc3, i.e., they are tc and tc3 only for large dealer buy trades. So the base calculation and formula used are the same as to tc and tc3, for large dealer buy trades, some of the terms may be zero and cancelled in the calculation.
4.4.1 Calculate Out-of sample Transaction Cost
From overnight regression—Regression 1, 24 coefficients have been saved:
βj, j=1, . . . , 24. Set the values of all trade feature variables in the regression equation as:
4.4.1.1. Truncate Out-of-sample Transaction Cost
Keep the trade feature variables constant as:
4.4.1.2. Blend the Cell Coefficients (Calculate ldb)
For each bond, by using the maturity * credit cells, blend the truncated out-of-sample predicted transaction costs generated above with cell coefficients from Regression 3:
ldb=CO * (1+(BldReg3_Coef_spy3−1) * (0.8−0.3 * Max(0,Min(1,BldReg3_Se_spy3 * 100 −100 ))))
CO is from the above, Section 4.4.2.
BldReg3_Coef_spy3 and BldReg3Se_spy3 are cell-average coefficient and standard error blended with Regression 3 Coefficient/Standard Error and the bond's cell weightings.
4.4.1.3. Calculate Final Transaction Cost Adjustment (Calculate Idb2)
For each bond, use tc from the above times the issue-level multiplier to obtain the final transaction cost adjustment tc3:
ldb2=Idb * (1+(Reg6_Coef_stc−1) * max(0, min(1,0.5−0.25 * 1n(8 * Reg6_Se_stc)))) ldb is from the above, Section 4.4.3.
Reg6_Coef_stc and Reg6_Se_stc are coefficient and standard error from Regression 6.
From overnight regression—Regression 2, 18 coefficients have been saved:
βj, j=1, . . . , 18. Use these coefficients to calculate out-of-sample betas at the beginning of each day, and keep them consistent on intraday trades. Please see Appendix F for calculation details, ETF betas may be generated overnight. These Bond Betas may be used to calculate market adjustments, i.e., etf2 and etf23, in Section 4.6. and Section 4.7.. Bond Betas (beta_1, beta_m, beta_h) may also be needed in Model Pricing Phase Two for calculation of squared change of etf2 and etf23.
After a new trade or group of new trades occurs, the prices are transaction cost adjusted using the coefficients from the transaction cost model, i.e., Regression 1. Calculate the transaction cost adjustment by using the coefficients from overnight regression, multiplying the new trade features and summing them up. The process is similar as ldb and ldb2 calculation in Section 4.4., and the only difference is new trade feature variables are used in the calculation, instead of setting their values into constants.
4.6.2 Calculate Out-of-sample Transaction Cost
From overnight regression—Regression 1, saved 24 coefficients have been saved: βj, j=1, . . . , 24. When a new trade comes in, using each coefficient times its related trade/bond feature variable, and then sums them up as:
COoriginal=Reg1_Coef_tt * Sd +Reg1_Coef_dtt * P +Reg1_Coef_ttfq * Sd * Sz +Reg1_Coef_dttfq * P * Sz +Reg1_Coef_fq * SZ +Reg1_Coef_ttpos * I1S +Reg1_Coef_dttpos * I1P +Reg1_Coef_ttposfq * Sz * I1S +Reg1_Coef_dttposfq * Sz * I1P +Reg1_Coef_ttrat * Sd * R +Reg1_Coef_ttmat15 * Sd * YTM15 +Reg1_Coef_ttposrat * I1S* R +Reg1_Coef_ttposmat15 * I1S *YTM15 +Reg1_Coef_ttfqrat * Sd * Sz* R +Reg1_Coef_ttfqmat15 * Sd*Sz*YTM15 +Reg1_Coef_ttfqmat15rat * Sd*Sz* R * YTM15 +Reg1_Coef_dttfqrat * P * Sz * R +Reg1_Coef_dttfqmat15 * P * Sz * YTM15 +Reg1_Coef_dttfqmat15rat * P * Sz * R * YTM15 +Reg1_Coef_ttposfqrat * I1S* Sz * R +Reg1_Coef_ttposfqmat15 * I1S* Sz * YTM15 +Reg1_Coef_ttposfqmat15rat * I1S * Sz * R * YTM15 +Reg1_Coef_dttposfqrat * I1P * Sz * R +Reg1_Coef_dttposfqmat15 * I1P * Sz * YTM15
4.6.3 For Agencies: Calculate Out-of-sample Transaction Cost
For Agencies, the 15 parameter regression model is used in Regression 1, instead of the 24 parameter in IG/HY as above, i.e., βj, j=1, . . . , 15. The 15 parameter regression model may only remove terms with rating variable R from the 24 parameter regression model in Section 3.1..1.1., thus, coefficients from the 15 parameter overnight regression model may be used and do the arithmetic calculation as:
COoriginal=Reg1agy_Coef_tt * Sd +Reg1agy_Coef_dtt * P +Reg1agy_Coef_ttfq * Sd * Sz +Reg1agy_Coef_dttfq * P * Sz +Reg1agy_Coef_fq * Sz +Reg1agy_Coef_ttpos * I1S +Reg1agy_Coef_dttpos * I1P * If +Reg1agy_Coef_ttposfq * Sz * I1P +Reg1agy_Coef_dttposfq * Sz * I1P +Reg1agy_Coef_ttmat15 * Sd * YTM15 +Reg1agy_Coef_ttposmat15 * I1S * YTM15 +Reg1ag_Coef_ttfqmat15 * Sd * Sz * YTM15 +Reg1agy_Coef_dttfqmat15 * P * Sz * YTM15 +Reg1agy_Coef_ttposfqmat15 * I1S * Sz * YTM15 +Reg1agy_Coef_dttposfqmat15 * I1P * Sz * YTM15
4.6.4 Truncate Out-of-sample Transaction Cost
By using the same trade feature variables, calculate the truncation of out-of-sample predicted transaction costs by the following equation:
Co=Sign(Sd+P) * max(0.05,min(2.5 * Reg1_Coef9_ttfq,Sign(Sd+P) * CO_original)), if ABS (Sd+P)=1
where Reg1_Coef9_ttfq is from the nine-parameter TC regression in Regression 1(Take regression of the first nine independent variables, and use the coefficient on Side * Size)
If ABS(Sd+P)≠1, truncation may not need to be performed to the out-of-sample transaction cost, Co=CO_original.
4.6.5 Blend the Cell Coefficients (Calculate tc)
For each bond, by using the maturity * credit cells, blend the truncated out-of-sample predicted transaction costs generated above with cell coefficients from Regression 3-5:
tc=CO·(1+(BldReg3_Coef_spy3−1) * (0.8−0.3 * Max(0,Min(1,BldReg3_Se_spy3 * 100−100))))
CO is from the above, Section 4.6.1.3.
BldReg3_Coef_spy3 and BldReg3_Se_spy3 are cell-average coefficient and standard error blended with Regression 3 Coefficient/Standard Error and the bond's cell weightings.
4.6.6 Calculate Final Transaction Cost Adjustment (Calculate tc3)
For each bond, use tc from the above times the issue-level multiplier to obtain the final transaction cost adjustment tc3:
tc3=tc * (1+(Reg6_Coef_stc−1) * max(0,min(1,0.5−0.25 * 1n(8 * Reg6_Se_stc))))
tc is from the above, Section 4.6.1.4.
Reg6_Coef_stc and Reg6_Se_stc are coefficient and standard error from Regression 6
4.6.6.1. Assumption: Paired Clients Trades are dropped in real time
Paired clients trades are dropped as 2.3.2. defined as the following: an interdealer trade is identified as paired if it shares the same CUSIP, with execution time in the same second, and lot size with a client trade. Then client trades that are paired with interdealer trades are dropped, but the interdealer trade is retained.
4.6.6.2. Calculate Market Adjustment for the Trade
After calculated transaction cost adjustment has been calculated when a new trade occurs, market adjustment is calculated by using ETF price changes (ETF price differences between current ETFs and ETFs at last trade time).
4.6.7 Calculate Market Adjustments Using Betas from Regression 2
Market adjustments are calculated by using betas generated from overnight regression, i.e., βl, βh, βm. Using these betas times the ETF price changes and sums them up as the following equation shows:
etf2(s,s−1)=βl×(1n(LQD(s))−1n(LQD(s−1))) +βh×(1n(HYG(s))−1n(LQD(s))−1n(HYG(s−1))+1n(LQD(s−1))) +βm×(1n(TLT(s))−1n(IEI(s))−1n(TLT(s−1))+1n(IEI(s−1)))
where s is the time when new trade occurs, and s−1 is the time when last trade occurs.
4.6.8 For Agencies: Calculate Market Adjustments Using Betas from Regression 2
Similarly as Section 4.6.3.1. above, for agencies, only replace ETF tickers in the equation as:
etf2agy(s, s−1)=βa×(1n(AGZ(s))1n(AGZ(s−1))) +βi×(1n(IEI(s))−1n(AGZ (s))−1n((s−1))+1n(AGZ(s−1))) +βm×(1n(TLT(s))−1n(IEI(s))−1n(TLT(s−1))+1n(IEI(s−1)))
where s is the time the new trade occurs, and s−1 is the time the last trade occurs.
4.6.9 Calculate Issue-Level Market Adjustments
Market adjustments are adjusted by issue-level multiplier as:
etf23(s,s−1)=etf2(s,s−1) * (0.9 * (1+(Reg6_Coef_etf2(t)−1) * max(0, min(1,1−3 * Reg6_Se_etf2(t)))))
where t is the time when overnight regression runs, s is the time when new trade occurs, and s−1 is the time when last trade occurs etf2 is from the above, Section 4.6.3.1. Reg6_Coef_etf2,Reg6_Se_etf2 are coefficient and standard error from Regression 6
4.6.9.1. Update Value Estimation for the Trade
For a bond with trades at {s, s−1,s−2,s−3,s−4,s−5} during the 6 month window, tc3 and etf23 are generated as above to calculate transaction cost and market adjusted prices in value estimation process. Please see Section 3.6.2.2. for the definition of 6 month window in Regression 7.
In value estimation, all trades are reduced to the CUSIP*second level. In other words, the log differences in time below are set to seconds.
4.6.10 Collapse Multiple Trades at CUSIP*Second
As Section 4.2. shows, when new trades come in, multiple trades are collapsed at CUSIP*second level in the first step. This implies that there may be only one adjusted price for each CUSIP*second level. For each atomic trade, the adjusted price can be calculated as:
Padj(s)=p(s)−tc3(s)
If multiple trades occurred in the same second, they may be collapsed in the same second into an average price. For example, assuming there are i trades occurred at the same second s, then the calculation of adjusted price at time s shown as above may be:
P
adj
(
s
)
=
ln
(
lotisize
(
1
)
$100
)
*
(
p
(
1
)
-
tc
3
(
1
)
)
+
ln
(
lotisize
(
2
)
$100
)
*
(
p
(
2
)
-
tc
3
(
2
)
)
+
…
+
ln
(
lotisize
(
i
)
$100
)
*
(
p
(
i
)
-
tc
3
(
i
)
)
ln
(
lotisize
(
1
)
$100
)
+
ln
(
lotsize
(
2
)
$100
)
+
…
+
ln
(
lotsize
(
i
)
$100
)
(
4.2
)
4.6.11 Define Adjusted Price and Baseline Price
A baseline price is calculated as the simple average of transaction cost and market adjusted prices from the last 5 CUSIP*seconds with trades:
P
5
adj
(
s
)
=
P
adj
(
s
)
+
P
adj
(
s
-
1
)
+
P
adj
(
s
-
2
)
+
P
adj
(
s
-
3
)
+
P
adj
(
s
-
4
)
5
,
(
4.3
)
where adjusted price Padj(s) are obtained as Section 4.6.4.1. above. Adjusted price may be saved for all observed trades for the use of calculating a baseline price.
4.6.12 Define Price Difference X
Define a variable X as the difference between trade t′s transaction cost and market-adjust price and the baseline price. X is calculated as:
X=Padj(s)−P5adj(s−1)−MktA(s−5,s) (4.4)
Where:
MktA(s=5,s)=etf23(s,s−1) +0.8 * etf23(s−1, s−2) +0.6 * etf23(s2, s3) +0.4 * etf23(s−3, s−4) +0.2 * etf23(s−4, s−5) (4.5)
4.6.13 Calculate Estimated Value of Predicted Price Difference Y
Define a variable Y as the difference between trade t+1's transaction cost and market-adjusted price and the baseline price. Y is estimated by running Regression 7 on a set of independent variables. After a new trade occurs, using coefficients from overnight regression—Regression 7 multiplies related variables as the estimated value of Y (Note coefficients are saved from last night and held constant throughout each day, which is the same as other coefficients from Regression 1-6), denoted as
Y
^
=
∑
j
=
1
9
β
^
j
×
a
j
.
The detailed equation is as the following:
Ŷ=Reg7_Coef_x * X +Reg7_Coef_dx * X * Id +Reg7_Coef_udx * X * Ud +Reg7_Coef_xLnft * X * Td1 +Reg7_Coef_xLnt * X * Td2 +Reg7_Coef_xig * X * IGd +Reg7_Coef_xfq * X * Ts +Reg7_Coef_xsame * X * I +Reg7_Coef_xpos * X * Sum (4.6)
where the independent variables in the above regression are defined as:
I d - Interdealer trade indicator variable = { 1 , if the trade is an interdealer trade 0 , otherwise U d - Unpaired interdealer trade indicator variable = { 1 , if the trade is an unpaired interdealer trade 0 , otherwise
Note: Td1 is the log differences between next trade t+1 and the current trade t, except for the last row when (t+1) is current “calculation time” presented in the file as timestamp.
FIG. 6 depicts an exemplary timeline for when model price is triggered to be updated at some time T, and all the previous trades may be collapsed to CUSIP*seconds level to obtain the aggregated trades happened at t1, . . . , tN (tN<T).
First model price is available from the seventh trade at t7. So Td1 for t7 is defined as log(t8−t7), . . . Td1 for tN−1 is log(tN−tN−1). And for tN, Td1 is defined as log(T−tN), where T is the current “calculation time”. And this is defined as what the bond price would be if there was a trade at the current calculation time T. In addition, model price at T equals to model price tN+market adjustment from tN to T, i.e., 1n(ETF(T)−1nETF(tN)). For example, there is a trade occurred at 9:55:00, then model price gets updated at 9:55:01. At the evaluation time, say 10:00:00, the new model price may be the updated model price at 9:55:01 plus market adjustment between 9:55:01 and 10:00:00.
Implementation Note: Td1 is set to be zero for all trades including the last one, which may use the following formula:
Td1_t=1n((t+1)−t)=1n(1)=0(hardcoded to be 0) Td2 =1n(−s)
IG d - Investment Grade indicator variable = { 1 , if the trade is an investmetn grade trade 0 , otherwise
T
s
=
∑
w
i
n
,
where n equals the number of trades occurred in the same CUSIP*second, and
w
=
ln
(
lotsize
100
)
,
and
w
=
ln
(
lotsize
100
)
+
ln
(
2
)
if
lotsize
=
5000000
or
lotsize
=
1000000
,
and MAquantityindicator=“E” (this is defined in Section 2.5., MAquantityindicator indicates if the reported TRACE quantity is truncated, and “E” for estimated if truncated) Note: lotsize may be truncated at $5M and $1M, and weighted it as if it really was twice that size. The Stata code for this process is:
/* Log linear weight with a bonus for truncated values */
I - Indicator variable for trade t and t - 1 occurring on the same calendar day = { 1 , if trade t and t - 1 occurring on the same calendar day 0 , otherwise
Now, since the estimated value Y was calculated in previous section 4.6.4.4., the predicted price can be obtained:
PredPrice(s)P5adj(s, s−1)+MktA(s−5s)+Ŷ (4.7)
Where:
MktA(s5,s)=etf23(s, s−1) +0.8 * etf23(s−1, s−2) +0.6 * etf23(s−2, s−3) +0.4 * etf23(s−3, s−4) +0.2 * etf23(s−4, s−5)
Note: For Y only, trades that are eventually cancelled or replaced are not considered.
4.6.14 Calculate New Price Difference X2 and New Predicted Price
Construct a new baseline price and average the predicted next-trade price as the following:
X2=PredPrice(s)−PredPrice(s−1), predicted price PredPrice(s) is obtained from the above, Section 4.6.4.3. (4.8)
Then this new price difference X2, and the coefficients from overnight regression are used in Regression 7 to generate a new estimated value of Y, denoted as Ŷ2. The detailed equation is as the following:
Ŷ2=Reg72Coef_x2 * X2 +Reg72_Coef_x2ud * X2 * Ud +Reg72_ x2Lnft * X2 * Td1 +Reg72_Coef_x2Lnt * X2 * Td2 +Reg72_Coef_x2ig * X2 * IGd +Reg72_Coef_x2fq * X2 * Ts +Reg72_Coef_x2pos * X2* Sum (4.9)
where the independent variables in the above regression are defined as:
U d - Unpaired interdealer trade indicator variable = { 1 , if the trade is an unpaired interdealer trade 0 , otherwise
IG d - Investment Grade indicator variable = { 1 , if the trade is an investmetn grade trade 0 , otherwise
A new predicted price, denoted as PredPrice2(s) is obtained in the following:
PredPrice2(s)=PredPrice(s−1)+etf23(s−1,s)Ŷ2(s) (4.10)
4.6.15 Calculate Model Mid Price
Model Mid price equals to the average of the predicted next-trade price. A 50-50 ratio is used out-of-sample as a measure of current value for prediction of as the formulae shows:
Model Mid Price=0.5 * PredPrice(s)+0.5 * PredPrice2(s) (4.11)
4.6.16 Calculate Model Bid Price
Model Bid Price=Model Mid Price+ldb3 (ldb3<0) (4.12)
ldb and ldb2 have calculated in previous section, Section 4.4.. In (4.12), and Idb3=max(−0.26,min(−0.035,ldb)). ldb3 is used in Model Bid Price calculation. 4.6.17 Calculate Model Ask Price
Model Ask Price=2 * Model Mid Price—Model Bid Price (4.13)
Another trigger for updating the value estimation in model pricing is ETF price changes. In an exemplary embodiment, ETF data sampled every 15 minutes or more frequent by tick may be used during regular equity trading hours (this may be configurable). If no new trade occurred, but only ETF price differs between different time stamps when the ETF prices are checked, only market adjustment is required to update in this case, i.e., use the same transaction cost adjustment from the most recent trade to update the value estimation in model pricing. In an embodiment, ETF data sample time every 15 minutes may be used, this may be switched to every 5 minutes. As frequent as practical may be used for the production version. In Omega, ETF price may be sampled every 15 minutes. In addition, this quantity is calculated whenever a new trade is observed. To differentiate it from the model bid/mid price generated in Section 4.6. above, where model prices are triggered by new trades, it may be denoted as Model Pred Bid/Mid Price. This may be used in Model Pricing Phase Two as well as in back testing. To do so, view the trade time as a new ETF price change time, denoted as s below.
4.7.1.1. ETF Price Time Window
If the ETF price corresponding to trade time s is not available, use the following default rules to decide which ETF may be used, as also discussed in Section 2, Input Data Preparation:
4.7.1.2. Calculate Market Adjustments Using Betas from Regression 2
This follows the same steps in Section 4.6.3.1.-4.6.3.3., using ETF price changes to calculate market adjustments. Market adjustments are calculated by using betas generated from overnight regression—Regression 2 and blended with issue-level betas. Using these betas times the ETF price changes and sums them up as the following equation shows:
etf2(s,s−1)=βl×(1n(LQD(s))−1n(LQD(s−1))) +βh×(1n(HYG(s))1n(LQD(s))1n(HYG(s−1))+1n(LQD (s−1))) +βm×(1n(TLT(s))−1n(IEI(s))−1n(TLT(s−1))+1n(IEI(s−1)))
where s is the time when the new ETF prices are checked which triggers the model to update,
while s−1 is the last time ETF prices were checked.
4.7.1.3. For Agencies: Calculate Market Adjustments Using Betas from Regression 2
For agencies, only replace ETF tickers in the above equation as:
etf2agy(s,s−1)=βa×(1n(AGZ(s))−1n(AGZ(s−1))) +βi×(1n(IEI(s))−1n(AGZ(s))−1n(IEI(s−1))+1n(AGZ(s−1))) +βm×(1n(TLT(s))−1n(IEI(s))31 1n(TLT(s−1))+1n(IEI(s−1)))
where s is the time when the new ETF prices were checked, which triggers the model to update, while s−1 is the last time ETF prices were checked.
4.7.1.4. Update Value Estimation for ETF Price Change
If the model is updated by ETF price changes, only market adjustments may be added that have been calculated above to model mid price (obtained and saved from Section 4.6.) of the most recent trade as:
Model Pred Bid Price(s)=Model Bid Price(t)+etf2(s,t) =Model Bid Price(t)+beta * (lnETF(s)−lnETF(t)) (4.14)
Model Pred Mid Price(s)=Model Mid Price(t)+etf2(s,t) =Model Mid Price(t)+beta * (lnETF(s)−lnETF(t)) (4.15)
where s is the time when we check the new ETF prices, and t is the most recent value estimation. etf2 is calculated by using three betas and its matched ETF prices, shown as in Section 4.6.3.
When value estimation is updated by new trades or ETF price changes at real time, calculate the log time difference between current time (t+1) and the most recent trade time (t). When running regressions using historical data, the log time difference can be defined as the next trade time (t+1) and the most recent trade time (t), since the next trade time (t+1) in the history data is known. For example, for real-time calculation, if the most recent trade was at 10:00:00 and it is now 10:00:01, the log may be set to a difference between t+1 and t as log(1) in this case. If the model at 10:00:03 is updated, it may be changed to log(3). And so on.
After a cancellation or replacement as stated in 2.3.3., the value estimate may be reconstructed without the cancelled trade or with the new data for the replaced trade (trades are sorted using execution time). This requires going back to the last trade before the cancelled/replaced trade, and then recalculating the value estimates.
5. GUI Design and Functionality
FIG. 7 depicts an exemplary menu. From the top menu of Omega, the user can choose Eval and then find US Model Pricing. Under Model Pricing, there are four submenus priced separately: agencies, investment grade, and high yield bonds; also, Model Pricing Configurations (sectors can be chosen on configuration screens). More options may be added to the sub-menu under each category at Phase Two, for example, Notifications, Inbox, Confidence Interval (Quality Checks), if necessary.
In Worksheet Enhancements, new fields are added into the existing bond-level worksheet under Sector in IG and HY or Ticker in Agencies. This may be applied to real-time pricing and 3PM/4PM snap pricing.
New Fields: Model Bid/Mid Spread, Model Bid Price, Model Mid Price, Model/Eval Diff,
New fields in the screen are defined by the fields in the table below:
| Model Variable | ||||
| Field | GUI Name | Name | Data Range | Example |
| Model | Model Bid | |||
| Bid/Mid | Spread | |||
| Spread | Model Mid | |||
| Spread | ||||
| Model Bid | Model Bid | Model Bid Price | Positive floating | |
| Price | Price | = Model Mid | number | |
| Price + ldb (or | ||||
| ldb2 or ldb3), ldb | ||||
| is the large dealer | ||||
| buy transaction | ||||
| cost estimated by | ||||
| the model (ldb2 is | ||||
| the large dealer | ||||
| buy transaction | ||||
| cost predicted | ||||
| from the TC | ||||
| model with the | ||||
| issue-level | ||||
| multiplier, and | ||||
| ldb3 = min (0, | ||||
| ldb2) | ||||
| Model Mid | Model Mid | Model Mid Price | Positive floating | |
| Price | Price | = 0.5 | number | |
| * PredPrice(s) | ||||
| + 0.5 | ||||
| * PredPrice2(s) | ||||
| Model/Eval | Model/Eval | This is the | ||
| Diff | Diff | difference | ||
| between Model | ||||
| Mid Price and | ||||
| Evaluation Mid | ||||
| Price | ||||
| Model 3PM | Model 3PM | |||
| Bid/Mid Price | Bid Price, | |||
| Model 3PM | ||||
| Mid Price, | ||||
| Model 4PM | Model 4PM | |||
| Bid/Mid Price | Bid Price, | |||
| Model 4PM | ||||
| Mid Price, | ||||
| Model | Model 3PM | |||
| 3PM/4PM | Bid Spread | |||
| Bid/Mid | Model 3PM | |||
| Spread | Mid Spread | |||
| Model 4PM | ||||
| Bid Spread | ||||
| Model 4PM | ||||
| Mid Spread | ||||
Note: Model 3 PM/4 PM price/spread is the model price/spread under the mode 3 PM or 4 PM. The model price may be copied at 3 pm and 4 pm to this field. No evaluator action is required for this.
5.2.1.1. IG/HY Worksheet Enhancements
FIG. 8 depicts an exemplary Investment Grade Worksheet Enhancements screen and a High Yield Worksheet Enhancements screen, which are the same.
5.2.1.2. Agency Worksheet Enhancements
FIG. 9 depicts an Agency Worksheet screen. Similarly as USIG Worksheet, new fields in Section 5.2. are added onto Agency Worksheet screen. There are three modes on Dashboard: Real Time, 3 PM, and 4 PM. In each mode, there are one set of fields to show model price:
In Trade Data Enhancements, new fields are added into the existing trade-level grids for each security in IG and HY or each Identifier in Agencies. This is applied to real-time pricing (3 pm/4 pm snap pricing is acceptable but not required). New Fields: Model Side Indicator, Model Paired Indicator, Model Paired, Model Trade-to-trade Change in Price Ap, Model Updated Time, Model Bid/Mid/Ask Price, Model Observation Weights, Model Out-of-sample TC, Model Truncated Out-of-sample TC, Model Rescaled TC, Model Final TC
New fields in the screen are defined by the fields in the table below:
| Model Variable | Data | |||
| Field | GUI Name | Name | Range | Example |
| Model Side | Model Side | I1S (Sd) | 0 or 1 | 1 |
| Indicator | Indicator | |||
| Model Paired | Model Paired | I1P (P) | 0 or 1 | 0 |
| Indicator | Indicator | |||
| Model Paired | Model Paired | P | −1, 0 or 1 | −1 |
| Reported Time | Trade | dt_report | Date and | 11/10/ |
| Reported | time | 2008 | ||
| Time | (mm/dd/ | 14:46:00 | ||
| yyyy | ||||
| hh:mm:ss) | ||||
| Model | Mdl. | w (calculation | Positive | 4.86E−05 |
| Observation | Observation | is defined in | floating | |
| Weights | Weights | Section 2.4.3.) | number | |
| Note: this is | ||||
| weight | ||||
| adjustments | ||||
| defined in | ||||
| Table 5 | ||||
| Model Out-of- | Mdl. Out-of- | CO_original | ||
| sample TC | sample TC | |||
| Model | Mdl. | CO | ||
| Truncated | Truncated | |||
| Out-of-sample | Out-of-sample | |||
| TC | TC | |||
| Model Rescaled | Mdl. Rescaled | tc | Floating | 0.644615 |
| TC | TC | number | ||
| Model Final TC | Mdl. Final TC | tc3 | Floating | 0.666422 |
| number | ||||
When collapsing trade level data to CUSIP*second, atomic trade level data may be published in the above fields. Trades occurred in the same second may share the same executed time (or reported time), and the same transaction costs as used in aggregated values in the calculation of transaction costs. However, they may show their individual Side Indicator, Paired
Indicator, Weights, etc.
5.3.1.1. IG/HY Trade Data Enhancements
FIG. 10 depicts exemplary Investment Grade and High Yield screens, which have the same Trade Data Enhancements screen.
5.3.1.2. Agency Trade Data Enhancements
FIG. 11 depicts an exemplary trade data enhancement screen.
Configuration screens described herein work under the whole model.
5.4.1.1. Data Preparation
FIG. 12 depicts an exemplary model pricing configuration screen for data preparation. On the top of the screen, sectors can be switched between: Corp (which includes IG and HY), and Agencies (shown as AGY in the dropdown box).
5.4.1.2. Transaction Cost Adjustment
FIG. 13 depicts an exemplary model pricing configuration screen for transaction cost adjustment. Similarly, on the top of the screen, sectors can be switched between: Corp (which includes IG and HY), and Agencies (shown as AGY in the dropdown box).
5.4.1.3. Market Adjustment
FIGS. 14 and 15 depict exemplary model pricing configuration screens for market adjustment. The tab of market adjustment configurations are applied to each of the three pricing methods, i.e., IG, HY and Agency. On the top of the screen, sectors can be switched between: Corp (which includes IG and HY), and Agencies (shown as AGY in the dropdown box).
6. Output Files
The output files in this section provide data analysis for Model Pricing, especially supporting Methodology to check the performance of the model. At 10 am, 12 pm, 3 pm and 4 pm each day, it may publish out two files (in Excel.csv format): one is the bond-level output file, and the other is the trade-level output file.
The bond-level output file may contain all the statistics data for each certain security: Model Price (Bid/Mid/Ask Price), New Price (Bid/Mid/Ask Price), Difference in Prices, Last 5 Trades' Price, Last 5 Transaction Cost Adjustments, Transaction Cost Coefficients, Market Adjustment Coefficients, Value Estimate Coefficients. This file includes all the regression results generated while running the model. Table 8 shows all the available fields in the bond-level output file.
| TABLE 8 |
| Available Fields of Bond-level Output File |
| Available Fields |
| Sector | Security ID | Security Description |
| Model Bid Price | Model Mid Price | Model Ask Price |
| New Bid Price | New Mid Price | New Ask Price |
| Diff in Bid Price | Diff in Mid Price | Diff in Ask Price |
| Last Trade Price | Last Second Trade Price | Last Third Trade Price |
| Last Fourth Trade Price | Last Fifth Trade Price | Last Transaction Cost Adj |
| Last Second Transaction | Last Third Transaction Cost Adj | Last Fourth Transaction Cost |
| Cost Adj | Adj | |
| Last Fifth Transaction Cost | Reg1_Coef_tt | Reg1_Coef_dtt |
| Adj | ||
| Reg1_Coef_ttfq | Reg1_Coef_dttfq | Reg1_Coef_fq |
| Reg1_Coef_ttpos | Reg1_Coef_dttpos | Reg1_Coef_ttposfq |
| Reg1_Coef_dttposfq | Reg1_Coef_ttrat | Reg1_Coef_ttmat15 |
| Reg1_Coef_ttposrat | Reg1_Coef_ttposmat15 | Reg1_Coef_ttfqrat |
| Reg1_Coef_ttfqmat15 | Reg1_Coef_ttfqmat15rat | Reg1_Coef_dttfqrat |
| Reg1_Coef_dttfqmat15 | Reg1_Coef_dttfqmat15rat | Reg1_Coef_ttposfqrat |
| Reg1_Coef_ttposfqmat15 | Reg1_Coef_ttposfqmat15rat | Reg1_Coef_dttposfqrat |
| Reg1_Coef_ ttposfqmat15 | Reg2_Coef_sLQD | Reg2_Coef_sLQDmat10 |
| Reg2_Coef_sLQDrat | Reg2_Coef_sLQDmat10rat | Reg2_Coef_sLQDhy |
| Reg2_Coef_sLQDhyrat | Reg2_Coef_sLQDmat10hy | Reg2_Coef_sLQDmat10hyrat |
| Reg2_Coef_sHL | Reg2_Coef_sHLmat10 | Reg2_Coef_sHLrat |
| Reg2_Coef_sHLmat10rat | Reg2_Coef_sHLhy | Reg2_Coef_sHLhyrat |
| Reg2_Coef_sHLmat10hy | Reg2_Coef_sHLmat10hyrat | Reg2_Coef_sLM10a |
| Reg3_Coef_spy3 | Reg3_Se_spy3 | Reg4_Coef_col |
| Reg4_Se_sel | Reg5_Coef_coh | Reg5_Se_seh |
| Reg6_Coef_stc | Reg6_Se_stc | Reg6_Coef_etf2 |
| Reg6_Se_etf2 | Reg7_Coef_x | Reg7_Coef_dx |
| Reg7_Coef_udx | Reg7_Coef_xLnft | Reg7_Coef_xLnt |
| Reg7_Coef_xig | Reg7_Coef_xfq | Reg7_Coef_xsame |
| Reg7_Coef_xpos | Reg72_Coef_x2 | Reg72_Coef_x2ud |
| Reg72_Coef_x2Lnft | Reg72_Coef_x2Lnt | Reg72_Coef_x2ig |
| Reg72_Coef_x2fq | Reg72_Coef_x2pos | Years-To-Maturity |
| Last Trade Adjusted Price | Last Second Trade Adjusted | Last Third Trade Adjusted |
| Padj1 | Price Padj2 | Price Padj3 |
| Last Fourth Trade Adjusted | Last Fifth Trade Adjusted Price | Last 5 Average TCMA Price |
| Price Padj4 | Padj5 | P5adj |
| X | X2 | PredPrice |
| PredPrice2 | ||
Last Trade Price is the most recent aggregated trade price, i.e., if there are multiple trade occurred in one second, Last Trade Price may display the weight-averaged aggregation of all trades in that 1 second. Years-To-Maturity may be calculated based on the most recent trade. In addition, all the coefficients from overnight regressions keep the same for each day.
Each trade-level output file may include all the trades' data processed by the model in one day by the published time, and fields in this file are the same as columns shown in Trade Data Enhancements for IG/HY and Agencies, respectively. Table 9 shows all the available fields in the trade-level output file:
| TABLE 9 |
| Available Fields of Trade-level Output File |
| Available Fields |
| Side | Size | Trade Spread |
| Trade BM | Trade Time | Time Applied |
| Model Side Indicator | Model Paired Indicator | Matched Trade ID |
| Model Updated Time | Trade Yield | Trade Price |
| LQD Price | HYG Price | TLT Price |
| IEI Price | Model Paired | |
7. Data Dependencies
TRACE data with the reporting party side variable is available back to November, 2008, and for agencies available from 2010, and these are the dates when the data start. To count the maximum years' of historical data estimates are used by working backwards through the code as the following:
The above shows that if an estimation of everything with the maximum possible data is desired, 7 years of data, which will be available in early 2016, is needed. However, the minimum requirement on the length of historical data required for real time model is 3 years (including calculation of transaction cost from Regression 1) in order to generate all regression coefficients. But the more data we have, the better quality the model has. So Omega may be programmed to discard data that is 7+ years old.
Bond reference data for investment grade and high yield bonds may be required, including the bond attributes of maturity date, currency, the flag of TRACE eligible data, etc. Also, it may identify that the bond is not convertibles, convertible preferreds, preferreds, or index-linked notes.
The TRACE trades data with 3 years history may be available in Omega as the rolling window of the regressions in Section 3.
During the day, the real-time TRACE trade feed may also be available in Omega for the real-time value estimation process.
Also, three-year daily ETF prices in real-time ticking may be available, and the tickers that are used in the model are LQD, HYG, IEI, and TLT.
During the day, the real-time ticking feeds for the above four ETFs may also be needed in Omega for real-time value estimation process.
As stated herein, this length of historical data may be sufficient to run the model and generate all regression coefficients.
8. Configurations
The following table shows what is configured at model level:
| Description/Functions with configurable | Data | |||
| Name | parameters | Object | Section | Default |
| Minimum | The minimum number of trades for a bond to | Integer | 1.2. | 6 |
| Trades for | calculate the averages in the model | at least | ||
| A Bond | equals | |||
| to 6 | ||||
| Weights Adjustment | Function (2.2) Adjusted Weights = Weight 0.8 + 0.3 * S Z * ( 1 - ABS ( S d + P ) 2 ) + 0.25 * ABS ( S d ) - 0.15 * ( S d + P ) | 2.4.3. | 0.8, 0.3, 0.25, 0.15 | |
| Truncated | Functions (3.3) and (3.4) | 3.1.1.3. | 0.05, | |
| In-sample | Co(t + 1) = Sign(Sd(t + 1) + P(t + 1)) * | 2.5 | ||
| and Out-of- | max(0.05, min(2.5 * coef (t),Sign(Sd(t + 1) + | |||
| sample | P(t + 1)) * CO_original(t + 1))) , if ABS (Sd(t + | |||
| Predicted | 1) + P(t + 1)) = 1 | |||
| Transaction | CI(t + 1) = Sign(Sd(t + 1) + P(t + 1)) * | |||
| Costs | max(0.05, min(2.5 * coef(t), Sign(Sd(t + 1) + | |||
| P(t + 1)) * CI_original(t + 1))), if ABS(Sd(t + | ||||
| 1) + P(t + 1)) = 1 | ||||
| Rescaled | Function (3.18) | 3.4.3. | 0.8, 0.3 | |
| Transaction | tc = | |||
| Cost | CO · (1 + (β1p− 1) * | |||
| (0.8 − 0.3 * Max (0, Min(1, Ēp* 100 − 100)))) | ||||
| New LQD | Function (3.19) | 3.4.4.1. | 5, 0.4 | |
| Beta | βl = Max(5, βLQD * 0.4 + β1l * 0.4) | |||
| New HYG- | Function (3.21) | 3.4.4.2. | 0.8, | |
| LQD Beta | βh = βHYG-LQD * 0.8 + 0.8 * (β1h = βHYG-LQD) * | 0.2, 4 | ||
| (1 − 0.2 * max (0, min (4, Ēh))) | ||||
| Final | Function (3.28) | 3.5.2. | 0.5, | |
| Transaction | tc3 = | 0.2, 8 | ||
| Cost | tc * (1 + ( − 1) * max(0, min(1, 0.5 − 0.25 * | |||
| Adjustment | ln (8 * Ēp)))) | |||
| Final Market Adjustment | Function (3.29) etf 23 = eft 2 * ( 0.9 * ( 1 + ( - 1 ) * max ( 0 , min ( 1 , 1 - 3 * σ 2 ( ) ) ) ) ) | 3.5.3. | 0.9, 3 | |
9. Notifications
No notifications may be required for Phase One. Once the confidence measure is implemented in Phase Two, notifications may be performed.
10. Appendix A: Ratings Mapping Between Agencies and IDC Bucket
| IDC Ratings | S&P | ||||||
| Bucket | S&P | Numerical | intSP | R (rat) | Moody's | Fitch | Description |
| AA or Higher | AAA | 20 | 6 | 0 | Aaa | AAA | Prime |
| AA or Higher | AA+ | 19 | 6 | 0 | Aa1 | AA+ | High grade |
| AA or Higher | AA | 18 | 6 | 0.0625 | Aa2 | AA | |
| AA or Higher | AA- | 17 | 6 | 0.125 | Aa3 | AA− | |
| A | A+ | 16 | 5 | 0.1875 | A1 | A+ | Upper |
| A | A | 15 | 5 | 0.25 | A2 | A | medium |
| A | A− | 14 | 5 | 0.3125 | A3 | A− | grade |
| BBB | BBB+ | 13 | 4 | 0.375 | Baa1 | BBB+ | Lower |
| BBB | BBB | 12 | 4 | 0.4375 | Baa2 | BBB | medium |
| BBB | BBB− | 11 | 4 | 0.5 | Baa3 | BBB− | grade |
| BB | BB+ | 10 | 3 | 0.5625 | Ba1 | BB+ | Non- |
| BB | BB | 9 | 3 | 0.625 | Ba2 | BB | investment |
| BB | BB− | 8 | 3 | 0.6875 | Ba3 | BB− | grade |
| speculative | |||||||
| B | B+ | 7 | 2 | 0.75 | B1 | B+ | Highly |
| B | B | 6 | 2 | 0.8125 | B2 | B | speculative |
| B | B− | 5 | 2 | 0.875 | B3 | B− | |
| CCC or Lower | CCC+ | 4 | 1 | 0.9375 | Caa1 | CCC | Substantial |
| risks | |||||||
| CCC or Lower | CCC | 3 | 1 | 1 | Caa2 | Extremely | |
| speculative | |||||||
| CCC or Lower | CCC− | 2 | 1 | 1 | Caa3 | In default | |
| CCC or Lower | CC | 1 | 1 | 1 | Ca | with little | |
| CCC or Lower | C | 0 | 1 | 1 | prospect for | ||
| recovery | |||||||
| CCC or Lower | D | −12 | 1 | 1 | C | DDD | In default |
| NR | 0 | 1 | 1 | Not rated | |||
In an exemplary embodiment, if there are 2 or more ratings that do not map into the same bucket, take the median rating if all 3 ratings from the rating agencies are present; and if there are ratings from 2 rating agencies, use the rule S&P>Moodys>Fitch to predict transaction costs in this model. For Fitch's CCC, use numerical value 4, and for Moody's Ca use numerical value 1, which means the higher numerical rating is used for ratings that have more than one numerical values.
For unrated bonds, currently they are getting SPrat=0. However, in an exemplary embodiment, an approximate rating may be calculated from the spread to Treasures, on a fairly infrequent basis, e.g. once a month or so. If there are no ratings, the user may choose from the issue's yields. In an exemplary embodiment, with no ratings the user could infer a rating from the spread to Treasures. Each day the user could calculate, for example, a kernel smoothed median rating as a function of yield spreads, created cutoffs, and classify the unrated bonds accordingly.
11. Appendix B: Getting TRACE Data
This section provides how the user obtains TRACE data as a reference, however, it is not required. The user may merge two files to get TRACE data—one that includes all variables disseminated by TRACE and use the name “Fat TRACE” for this file, and one that includes additional variables created by MarketAxess, and this is called as “Skinny”. Variables are created and used as the follows from the files in the parenthesis:
12. Appendix C: Variable Dictionary
| Variables in GCAT files |
| price | double | %9.0 g | Price in points (par = 100) |
| lotsize | long | %12.0 g | lotsize in $ |
| spread | double | %8.0 g | Spread to treasuries as calculated by Market Axess |
| (not used) | |||
| yield | double | %9.0 g | Yield as calculated by Market Axess (not used) |
| dt | double | % tc | Execution Date-Time variable (in Stata, milliseconds |
| since Jan. 1, 1960, but should be outputted in | |||
| CSYs in a textual format) | |||
| cusip | str8 | %9 s | 8-digit CUSIP |
| piid | long | %12.0 g | Categorical variable: aggregated a few cases of CUSIP |
| or instrumentID changes into a common identifier | |||
| ytm | float | %9.0 g | Years to Maturity from c |
| yld | float | %9.0 g | Not used |
| sprat | str4 | %9 s | S&P credit rating (or rating estimated from |
| Moodys/Fitch rating) in text | |||
| SPrat | byte | %8.0 g | Numerical version of S&P rating (AAA = 20, |
| AA+ = 19, BB+ = 10, CCC+ = 4, | |||
| CCC = 3, CC = 0, D = −12 | |||
| bigsubset | str4 | %9 s | Aggregation of the subset variable provided by |
| IDC (not used) | |||
| InHYG | float | %9.0 g | Most recent In(HYG total return index) as of |
| execution time | |||
| InIEF | float | %9.0 g | Most recent In(IEF total return index) as of |
| execution time | |||
| InIEI | float | %9.0 g | Most recent In(IEI total return index) as of |
| execution time | |||
| InLQD | float | %9.0 g | Most recent In(LQD total return index) as of |
| execution time | |||
| InTLT | float | %9.0 g | Most recent In(TLT total return index) as of |
| execution time | |||
| n1 | float | %9.0 g | Numbers trades within values of PIIDA, in order of |
| execution time (with ties broken by values of n) | |||
| yrmo | long | %8.0 g | Year month variable (January 2009 = 200901) |
| benchiagt | float | %9.0 g | Not used |
| tt | float | %9.0 g | =+1 for dealer sells; −1 for dealer buys; 0 for |
| interdealer | |||
| dtt | byte | %8.0 g | =0 for client trades and unpaired interdealer trades; |
| +1 for ID trades paired with dealer sell; −1 for paired | |||
| with dealer buy (paired = same CUSIP, second, | |||
| lotsize) | |||
| fq | float | %9.0 g | Truncated log-linear function of lotsize |
| (=0 for <=$50k, =1 for >=$1M, log-linear | |||
| in between) | |||
| ttfq | Float | %9.0 g | TT*FQ |
| dttfq | float | %9.0 g | DTT*FQ |
| by | float | %9.0 g | Not used |
| spr | float | %9.0 g | Not used |
| n | long | %12.0 g | Trade identifier (created by me; used for disassembling |
| and reassembling datasets) | |||
| a | float | %9.0 g | =1 If ultimately cancelled |
| piida | float | %9.0 g | Grouping of combinations of PIID and A (in TC |
| model, all A = 1 observations are dropped, so this | |||
| maps one-to-one to PIID) | |||
| m | float | %9.0 g | 1 to N numbering of months appearing in data |
| (November 2008 = 1, January 2012 = 44) | |||
| Variables in TPBED5 files |
| price | double | %9.0 g | As above |
| dt | double | %tc | As above |
| cusip | str8 | %9 s | As above |
| piid | long | %12.0 g | As above |
| ytm | float | %9.0 g | As above |
| SPrat | byte | %8.0 g | As above |
| InHYG | float | %9.0 g | As above |
| InIEF | float | %9.0 g | As above |
| inIEI | float | %9.0 g | As above |
| inLQD | float | %9.0 g | As above |
| inTLT | float | %9.0 g | As above |
| n1 | float | %9.0 g | As above |
| tt | byte | %9.0 g | As above |
| dtt | byte | %8.0 g | As above |
| fq | float | %9.0 g | As above |
| n | long | %12.0 g | As above |
| a | byte | %9.0 g | As above |
| piida | int | %9.0 g | As above |
| betam | float | %9.0 g | Beta estimated for TLT-IEI factor |
| tc | float | %9.0 g | Trading cost estimated from weighted average of |
| market-level and cell-level models | |||
| betal | float | %9.0 g | Beta estimated for LQD factor |
| betah | float | %9.0 g | Beta estimated for HYG-LQD factor |
| etf2 | float | %9.0 g | Market adjustment from last trade calculated using |
| betam, betah, betal | |||
| yq | float | %9.0 g | A variable that groups months in the data |
| (November 2008 = 107, June 2012 = 150) | |||
| w | float | %9.0 g | Weight used in regressions |
| p | float | %9.0 g | Counter of unique values of PIID (also used as |
| a counter of unique values of gcat | |||
| (credit* maturity ceil) earlier in code) | |||
| copi | float | %9.0 g | Issue-level transaction cost coefficient |
| sepi | float | %9.0 g | Issue-level transaction cost standard error |
| coe | float | %9.0 g | Issue-level market adjustment coefficient |
| see | float | %9.0 g | Issue-level market adjustment standard error |
| tc3 | float | %9.0 g | Trading cost estimated from TC and COPI |
| emult | float | %9.0 g | Market adjustment multiplier estimated from COE |
| etf23 | float | %9.0 g | ETF2*EMULT |
| Other important variables |
| TTPOS | =1 if dealer sell | ||
| DTTPOS | =1 if paired with dealer sell | ||
| TTPOSFQ | TIPOS*FQ | ||
| DTTPOSFQ | DTTPOS*FQ | ||
| PY0 | Out of sample predicted transaction cost from 9 | ||
| parameter market-level model | |||
| PY3 | Out of sample predicted transaction cost from 24 | ||
| parameter market-level model | |||
| PY3b | Partly in-sample predicted transaction cost from 24 | ||
| parameter market-level model | |||
| The other variables should be obvious from the code (e.g., interaction terms), but feel free to ask any questions |
13. Appendix D: Regression Framework and Formulae
In this Appendix regression framework is described in general and regression formulae applied to TC model and Market Adjustment in specific. Note that all regressions involved may be weighted regressions. Also note that the design matrix and the right-hand-side of regressions include 1st differences, except for the constant term in design matrix.
13.1 Assumptions and General Settings
A few assumptions as basis of framework are made and describe general settings for TC model and Market Adjustment applications. Regressions are run in rolling windows. The generic form of a rolling window is [t−24,t] with t being a time unit in month. Observations come with execution times {ti}. The execution times are also used to calculate 1st differences. Let pt denote the price at execution time t. Then the 1st difference for price is calculated according to the follows:
pti−pti−1=ΔpiϵΔp⇔ti−1<ti;ti,ti−1ϵ[t−24,t];(tt−1, ti)∩[t−24,t]=0 (12.1)
(ti−1, ti)∩[t−24,t]=0 means there is no execution between ti−1 and ti, 1st differences for other quantities are also calculated according to rules above. The 1st difference calculations are based on grouping according to certain id's.
The following notations are defined:
Let fj(ti, . . . ) be the jth basis function at time ti.
Let qk(ti, . . . ) be the kth function that constitute the right-hand-side of the regression, k=1, . . . ,K
Let ck be constants, k=1, . . . ,K
Let M be the number of basis functions.
Let N be the number of observations.
Let A be the design matrix of regression.
Let H be the right-hand-side of regression.
Let W be the weight-matrix.
Let Ω be the inverse of W.
Generic element in A is in the following form:
ai,j=fj(ti, . . . ), i=1, . . . ,N, j=1, . . . M
Generic element in H is in the following form:
h
i
=
∑
k
=
1
K
c
k
q
k
(
t
i
,
…
)
Generic element in W is in the following form:
wi=w(ti)
The coefficients of regression, β, an M-vector is given by the solution of the following linear equations:
[DTD]·β=DTH, where D=W·A (12.2)
A constant term in basis functions fj was not included but it may be included in (12.2).
Standard error for non-constant coefficient can be calculated in terms of design matrix and the weight matrix. The formula of standard error calculation is:
σ
2
(
β
j
)
=
∑
i
=
1
N
σ
i
2
(
∂
β
j
∂
h
i
)
2
,
with
w
=
1
σ
(
12.3
)
This formula reduces to
14. Appendix E: Derive Y Estimated Value
Define a variable Y as the difference between trade t+1's transaction cost and market-adjusted price and the baseline price. Y is estimated by running Regression 7 on a set of independent variables. After a new trade occurs, using coefficients from overnight regression—Regression 7 multiplies related variables as the estimated value of Y, denoted as Ŷ=
∑
j
=
1
9
β
^
j
×
a
j
.
The detailed equation is as the following:
Ŷ=Reg7_Coef_x * X+Reg7_Coef_dx* X * Id+Reg7_Coef_udx* X * Ud+Reg7_Coef_xlnft* X * Td1+Reg7_Coef_xlnt* X * Td2+Reg7_Coef_xig* X * IGd+Reg7_Coef_xfq* X * Ts+Reg7_Coef_xsame* X * I +Reg7_Coef_xpos* X * Sum
14.2 Calculate Predicted Price
Variable Y is defined as the difference between trade t+1's transaction cost and market-adjusted price and the baseline price, which can be expressed in equation as:
Y=Padj(ti+1)−P5adj(ti−1)−MktA(ti−5,ti)−etf23(ti+1)
Now, since the estimated value Y in previous section 4.4.1.3. has been calculated, the predicted price can be obtained according to the following:
PredPrice(ti)=Padj(ti+1)−etf23(ti+1)=P5adj(ti−1)+MktA(ti−6,ti−1)+Ŷ
where:
MktA(ti−5, ti)=etf23(ti)+0.8 * etf23(ti−1)+0.6* etf23(ti−2)+0.4* etf23(ti−3)+0.2* etf23(ti÷4)
For Y only, trades that are eventually cancelled or replaced are not considered.
Construct a new baseline price and average the predicted next-trade price as the following:
X2=PredPrice(ti)−PredPrice(ti−1), predicted price PredPrice(ti) is obtained from 4.4.1.4. as above
Use this new price difference X2, and the coefficients from overnight regression—Regression 7 to generate a new estimated value of Y, denoted as Ŷ2. The detailed equation is as the following:
Ŷ2=Reg72_Coef_x2* X2+Reg72_Coef_x2ud* X2* Ud+Reg72_Coef_x21nft* X2* Td1+Reg72_Coef_x21nt* X2* Td2+Reg72_Coef_x2ig* X2* IGd+Reg72_Coef_x2fq* X2* Ts+Reg72_Coef_x2pos* X2 * Sum
Y2 in the following equation is defined as:
Y2=Padj(ti+1)−PredPrice(ti−1)−etf23(ti+1)
A new predicted price, denoted as PredPrice2(ti) is determined in the following:
PredPrice2(ti)=PredPrice(ti−1)+etf23(ti)+Ŷ2(ti)
15. Appendix F: Calculate ETF Betas
From overnight regression—Regression 2, saved 18 coefficients have been saved:
βj, j=1, . . . , 18. Use these coefficients to calculate out-of-sample betas at the beginning of each day, and keep them consistent on intraday trades.
βLQD=Reg2_Coef_sLQD +Reg2_Coef_sLQDmat10 * YTM10+Reg2_Coef_sLQDrat * R +Reg2_Coef_sLQDmat10rat * YTM10+Reg2_Coef_sLQDhy * H +Reg2_Coef_sLQDhyrat * H * R +Reg2_Coef_sLQDmat10hy * H * YTM10+Reg2_Coef_sLQDmat10hyrat * H * YTM10* R
βHYG-LQD=Reg2_Coef_sHL +Reg2_Coef_sHLmat10 * YTM10+Reg2_Coef_sHLrat * R+Reg2_Coef_sHLmat10rat * YTM10+Reg2_Coef_sHLhy * H+Reg2_Coef_sHLhyrat * H * R+Reg2_Coef_sHLmat10hy* H * YTM10+Reg2_Coef_sHLmat10hyrat* H * YTM10
β TLT - IEI - Reg 2 _Coef _sLM10a * min ( 20 , max ( 0 , ytm - 10 ) ) 20 * ( SPrat ≥ 14 & SPrat ∼ =. )
Use the above out-of-sample betas and cell-level betas from Regression 4 and Regression 5 to calculate the new betas as:
βl=Max(5,βLQD * 0.4+Reg4_Coef_sLQD * 0.4)
βh=βHYG−LQD * 0.8+0.8 * (Reg5_Coef_sHL−βHYG−LQD) *(1−0.2 * max(0−0.2 * max(0, Reg5_Se_sHL)))
β m = β TLT - IEI = { Reg2_Coef _sLM10a * min ( 20 , max ( 0 , ytm - 10 ) ) 20 * ( SPrat ≥ 14 SPrat ∼ =. ) 0 , for all bonds rated less than A - or within 10 years of maturity
1. Phase Two Overview
Exemplary embodiments described herein provide the business requirements for implementing Phase Two of the Model Pricing. Except as otherwise stated, section numbers and appendices referred to within Phase Two refer to Phase Two section numbers and appendices. Model Pricing Phase Two embodiments may include:
Phase Two covers products that produced a trade-based model price in Phase One, namely US Agency (AGN), Investment Grade (IG) and High Yield (HY) bonds. As described herein, Phase Two securities may have the same scope as implemented in Phase One, and may:
The number of bonds covered at least one embodiment described herein regarding Model Pricing Phase Two is 11,917 in total, as shown in Table 10. In an exemplary embodiment, separate quotes-based and issuer-level models may be integrated into this functionality.
| TABLE 100 |
| Model Pricing Phase Two Scope |
| IG | HY | Total | ||
| Universe* | 22,951 | 5,316 | 28,267 | |
| Traded on TRACE | 11,097 | 1,528 | 12,625 | |
| Trade model prices | 10,527 | 1,390 | 11,917 | |
| No trade model, but either quote | 6,726 | 2,089 | 8,815 | |
| model or trade model for issuer | ||||
| Quote model | 2,355 | 870 | 3,225 | |
| Trade model for issuer | 5,074 | 1,623 | 6,697 | |
| Quote model only for issuer | 2,601 | 990 | 3,591 | |
| No models for any issue | 4,057 | 1,159 | 5,216 | |
Universe includes all corporate bonds with attribute data that, during 2013H1, were evaluated by IDC. Agencies, CBOs, CDs, Converts, Discount Notes, Equities, Index-linked Notes, Preferred Stock, Par Bonds, Treasuries may be excluded.
In an exemplary embodiment, an estimate of a 25-75 confidence interval surrounding an estimate of a bond's value is provided. This interval may be defined as a symmetric interval around the value estimate such that 50 percent of future trades are going to fall into. In other words, an estimate of 50% quantile through regression and an estimate 25% and 75% based on the 50% quantile estimate is provided. See Section 3 and Section 4 for calculation details.
FIG. 16 depicts an exemplary graph of a 75-25 confidence interval. The 25 and 75 graph-lines lines in FIG. 16 are the configurable values and we can alter their values in later step.
The output of confidence/quality measure below may generate a confidence interval width. Narrow intervals express greater confidence in the model price than wider intervals. The graph below illustrates the relationship between the confidence interval range and trade activity. From the graph, confidence interval is narrower at the point where trading volume is active. This is because the model has more trading information when the security is liquid, and the user is confident at this model price with more trading information and activities.
After running the overnight regression each day, the width of the confidence interval over next trade is provided in the table below:
| Time since | 75-25 | 90-10 | 95-5 | |
| last trade | interval | interval | interval | Ratios |
| <1 min | +/−9 cents | +/−27 cents | +/−44 cents | 3× | 5× |
| 2 hours | +/−22 cents | +/−58 cents | +/−89 cents | 2.6× | 4× |
| 2 weeks | +/−80 cents | +/−180 cents | +/−400 cents | 2.3× | 5× |
| Normal dist | 1.9× | 2.4× | |||
This describes, for example at time since last trade is less than 1 minute, if model price is $100, then the 75-25 confidence interval may be 100±0.09, i.e., [99.91, 100.09]. The 90-10 and 95-5 confidence intervals are much wider than 75-25, due to fat tails. In an exemplary embodiment, using 75-25 may be preferred if confidence interval is over next trade price.
Confidence intervals may be estimated at the same frequency as value estimates. In particular, a series of rolling window regressions may be run each evening and the betas from these regressions are used next day to calculate a pre-trade value estimate and confidence interval as of the time each trade. The betas from the last rolling window are stored and used to create value estimates that can be updated in response to new trades or the passing of time without a new trade. Like value estimates, confidence intervals may depend on the elapsed time since the last trade and on market movements since the last trade, as captured by ETF movements. In particular, confidence intervals generally widen as time passes without a trade, both in response to the passage of time and in response to cumulative changes in ETFs.
2.1.1 Logic Flowchart of Model Pricing Phase One & Phase Two
FIG. 17 depicts an exemplary flowchart showing the logic of real-time process of model pricing Phase One and Phase Two, and the connection between the two phases.
This section describes data needed in order to run overnight regressions and to update real-time confidence intervals in Model Pricing Phase Two. Some of them have been calculated and obtained in Model Pricing Phase One.
2.2.1 Data Dependencies
The sample includes up to two years of past data (this much data is really necessary—quantile regressions need large samples). Similar as Data Dependencies of Phase One in section 7, two-year data of the following may be needed:
Table 11 shows variable names in regression functions, their variable names. There are two types of trades, defined as CUSIP * Second level, current trade and previous trade. The previous trade can be any type of trades, which includes small size trades. During out data time frame, the previous trade for the first trade of any CUSIP is defined as NULL.
For calculation of input data preparation, one way is to calculate these values for all trades on CUSIP * Second level first, aggregated multiple trades at each second. And then create two subsets: one for large dealer buy trades and the other for large interdealer trades. The previous trade of such a large trade can be either a large or a small size aggregated trade. To find the previous trade, one may go back one data element in time in the sorted data set with all trades. The current trade is the trade from to calculate surprise (calculation details in Section 2.2.3.4.), i.e., the dependent variable in quantile regression.
| TABLE 11 |
| Variable Definition |
| Variable Names | Variable Names | Data | ||
| Objective | (in model) | (in Stata code) | Coefficient Name | Description |
| Transaction-cost- | Padj | f.adjp | Not | |
| and-market- | Directly | |||
| adjusted future | Used | |||
| trade price (this is | ||||
| calculated in | ||||
| Model Pricing I) | ||||
| Estimated value | For Current | |||
| (Model Pred | Trade | |||
| Bid/Mid Price, this | ||||
| is calculated in | ||||
| Model Pricing I) | ||||
| Surprise for large | Sid | e2 | For Current | |
| interdealer trades | Trade | |||
| Surprise for large | Sdb | ebid2 | For Current | |
| dealer buy trades, | Trade | |||
| The integer for | d | bday | Between | |
| each business day | Current and | |||
| Previous | ||||
| Trade | ||||
| The execution time | dbt | adjtime | Not | |
| of each trade in | Directly | |||
| “business time” | Used | |||
| The difference in | Δt | fsadjt | CIQRegID_Coef_dt | Between |
| business time | CIQRegDB_Coef_dt | Current and | ||
| between the next | Previous | |||
| trade and the most | Trade | |||
| recent trade | ||||
| The log difference | ln(Δt) | lnfsadjt | CIQRegID_Coef_lndt | Between |
| in business time | CIQRegDB_Coef_lndt | Current and | ||
| between the next | Previous | |||
| and most recent | Trade | |||
| trade | ||||
| The log of one | ln(1 + Δd) | lnsbday | CIQRegID_Coef_lndbday | Between |
| plus the difference | CIQRegDB_Coef_lndbday | Current and | ||
| in business day | Previous | |||
| between the next | Trade | |||
| and the most | ||||
| recent trade | ||||
| The squared | (Δln(LQD))∧2 | fsLQD | CIQRegID_Coef_lnLQD | Between |
| change in the log | CIQRegDB_Coef_lnLQD | Current and | ||
| LQD price | Previous | |||
| between the next | Trade | |||
| and most recent | ||||
| trade | ||||
| The squared | (Δln(AGZ))∧2 | fsAGZ | CIQRegID_Coef_lnAGZ | Between |
| change in the log | CIQRegDB_Coef_lnAGZ | Current and | ||
| AGZ price | Previous | |||
| between the next | Trade | |||
| and most recent | ||||
| trade (only for | ||||
| Agency) | ||||
| The squared | (Δln(HYG))∧2 | fsHYG | CIQRegID_Coef_lnHYG | Between |
| change in the log | CIQRegDB_Coef_lnHYG | Current and | ||
| HYG price | Previous | |||
| between the next | Trade | |||
| and most recent | ||||
| trade | ||||
| The squared | (Δln(IEI))∧2 | fsIEI | CIQRegID_Coef_lnIEI | Between |
| change in the log | CIQRegDB_Coef_lnIEI | Current and | ||
| IEI price between | Previous | |||
| the next and most | Trade | |||
| recent trade (only | ||||
| for Agency) | ||||
| The square of the | (Δetfpred2)∧2 | fetf22 | CIQRegID_Coef_etf23 | Between |
| market adjustment | CIQRegDB_Coef_etf23 | Current and | ||
| component used to | Previous | |||
| update for market | Trade | |||
| movements | ||||
| between the next | ||||
| and most recent | ||||
| trades | ||||
| The square of the | (Δetf2)∧2 | etf22 | CIQRegID_Coef_etf2 | Between |
| market adjustment | CIQRegDB_Coef_etf2 | Current and | ||
| component used to | Previous | |||
| update for market | Trade | |||
| movements | ||||
| between the two | ||||
| most recent trades | ||||
| Indicator variable | Id | abstt | CIQRegID_Coef_indD | For |
| for the most recent | CIQRegDB_Coef_indD | Previous | ||
| trade having been | Trade | |||
| a dealer buy or | ||||
| sell; | ||||
| Indicator variable | ||||
| for the most recent | ||||
| trade having been | ||||
| a client trade | ||||
| Indicator variable | Ip | absdtt | CIQRegID_Coef_indP | For |
| for the most recent | CIQRegDB_Coef_indP | Previous | ||
| trade having been | Trade | |||
| a paired interdealer | ||||
| trade | ||||
| The average value | w | fq | CIQRegID_Coef_w | For |
| of the weight for | CIQRegDB_Coef_w | Previous | ||
| the trades in the | Trade | |||
| most recent | ||||
| CUSIP*second | ||||
| with a trade | ||||
| The number of | Nt | trades | CIQRegID_Coef_Nt | For |
| trades in the most | CIQRegDB_Coef_Nt | Previous | ||
| recent | Trade | |||
| CUSIP*second | ||||
| with a trade | ||||
| The square of the | (P5adj(t) − | s5a5 | CIQRegID_Coef_P5adj | For |
| change in the | P5adj(t-5))∧2 | CIQRegDB_Coef_P5adj | Previous | |
| baseline price Pb | Trade and 5 | |||
| for the most recent | Trades | |||
| trade and for 5 | Before It | |||
| trades ago | ||||
| YTM30 | YTM30 | ytm | CIQRegID_Coef_ytm | Bond |
| CIQRegDB_Coef_ytm | ||||
| Sum of | w5 | fq5 | CIQRegID_Coef_w5 | For |
| w variable for last | CIQRegDB_Coef_w5 | Previous | ||
| 5 CUSIP*seconds | Trade and 4 | |||
| with trades (t-1 to | Trades | |||
| t-5) | Before It | |||
| The rating variable | R | rat | CIQRegID_Coef_R | Bond |
| R | CIQRegDB_Coef_R | |||
| The model- | ldb3 (or ldb, if | ldb3 | CIQRegID_Coef_ldb3 | For |
| estimated | ldb2 is not | CIQRegDB_Coef_ldb3 | Previous | |
| transaction cost | available) | Trade | ||
| from the most | ldb3 = min(0, | Valid ldb3 | ||
| recent large dealer | ldb2) | at Previous | ||
| buy (for large | Trade Time | |||
| dealer buy trade, | ||||
| tc3 is denoted as | ||||
| ldb3; for large | ||||
| interdealer trade, | ||||
| tc3 is set as zero) | ||||
| Intercept term of | CIQRegID_beta0 | |||
| quantile regression | CIQRegDB_beta0 | |||
| in Section 3 | ||||
All input data passed to quantile regression (Section 3) may be aggregated trades but not atomic trades, on CUSIP*second level. It is acceptable if they are not real integers but with decimal points. For example, it is okay to have 0.667 under the column of indicator variable. In addition, when the input data compares two most recent trades, there is no requirement for the trade type, which means the trades are not only large dealer buy or interdealer trades, and they can be any size and type of trades.
2.2.3 Input Data Definition
This section defines input data in the table above in detail, and describes their calculations. Specifically, overnight regressions are run separately for two types of trades—large interdealer trades and large dealer buy trades. “Large” is defined as trades with size over $1,000,000. And two separate datasets are needed—one of large interdealer vs. model mid surprises, and one of large dealer buy vs. model bid surprises. Therefore, data and calculation results from Phase One of these two trades may be prepared and obtained before overnight regressions.
When a large interdealer trade or a large dealer buy trade comes in, store values of all the independent variables may be updated (required for overnight regressions in Section 3) of this trade. And set these values as a dataset of matrix, X, in the regression equation. To calculate the dependent variable, i.e., the surprise, only large interdealer and large dealer buy trade may be needed, thus, the dataset both for dependent variable and independent based on large interdealer and large dealer buy trade is set up. However, the confidence interval may be updated whenever a trade comes in at real time, regardless of large interdealer or large dealer buy trade. This means variables below may also be stored and used in real time calculation for the purpose of updating confidence intervals. But definition of distance in time may be different between data definition for overnight regression and data definition for real time calculation: all the time difference defined below for the purpose of overnight regression is the passage of time between two large interdealer trades (or two large dealer buy trades); while in real-time process, the passage of time may be defined as time distance between two any trades (regardless of large interdealer or large dealer buy trades). Also, the definition of indicator variable at real time for all trades may be different than the below: at real-time, it is defined the way as the table at Section 2.2.2.
In summary, here is the list of data needed to update and store when a large interdealer trade or a large dealer buy trade arrives (data of these two types of trades may be stored separately):
In the above items, from Δt to ldb3 together with the bond's rating variable R, all these variables may be included in the dataset as matrix X working as independent variables for the overnight regression at the end of the day. For agency, replace ETF tickers LQD with AGZ, HYG with IEI both in overnight regressions and in real-time calculation process.
2.2.3.1. Collapse Multiple Trades at CUSIP*Second
Similarly as Model Pricing Phase One, the data is collapsed to the CUSIP*second level in Phase Two as well. This means if multiple trades occurred in the same second, they are collapsed in the same second into an average price. For example, there is one model bid/mid price or average adjusted trade price for an executed second with a trade or multiple trades. Same as Phase One, trades are ordered within each issue based on execution time. For cases with multiple trades executed in a given second, trades are ordered by IssuePriceID. This is also the reason that in output files at Section 6, columns such as model prices, adjusted trade prices, etc., are displayed in bond-level output file but not trade-level output file. The result of these columns is aggregated trade result if multiple trades occurred in the execution second. In other words, a model price or adjusted price is not calculated for each trade but for per second.
2.2.3.2. Model Bid/Mid Prices
In Phase One, when new trade comes in or ETF price changes, model price is updated triggered by these two factors, and thus new model bid/mid price is produced. Model bid/mid price is stored whenever the model updates. To calculate the dependent variable for overnight regression, the model bid/mid price is sued right before the large interdealer trade or large dealer buy trade occurred, i.e., the last updated model bid/mid price before the large interdealer trade or large dealer buy trade comes in.
2.2.3.3. Average Adjusted Trade Price
Whenever a large interdealer trade or large dealer buy trade comes in, this average adjusted trade price is calculated by using the equation below. At real time, the average transaction-cost-adjusted price is within each second with a trade. For each CUSIP*second, take a weighted average of data for all large interdealer trades or large dealer buy trades executed that second. For example, at time t, there are T large interdealer trades at the executed second t denoted as tii=1,2, . . . T, the calculation is done as the following:
P
adj
=
ln
(
lotsize
(
t
1
)
100
)
*
(
p
(
t
1
)
-
tc
3
(
t
1
)
)
+
ln
(
lotsize
(
t
2
)
100
)
*
(
p
(
t
2
)
-
tc
3
(
t
2
)
)
+
…
+
ln
(
lotsize
(
t
T
)
100
)
*
(
p
(
t
T
)
-
t
c
3
(
t
T
)
)
ln
(
lotsize
(
t
1
)
100
)
+
ln
(
lotsize
(
t
2
)
100
)
+
…
+
ln
(
lotsize
(
t
T
)
100
)
(
2.1
)
where lotsize(ti) is the size of large interdealer trade i, P(ti) is the trade price of trade i, tc3(t1) is the transaction cost of trade i.
In an exemplary embodiment, use ln(lotsize/100) weight averaging consistently for any aggregation in Phase One and Phase Two. Save this average adjusted trade price for the purpose of calculating dependent variable, i.e., the surprise, for overnight regression.
2.2.3.4. Surprise
After the average adjusted trade price is obtained for each large interdealer trade or large dealer buy trade, the difference is calculated between this average adjusted trade price and model price on CUSIP*second level, i.e., the surprise. Save all the values of surprise on CUSIP*second level during the day, and set up a dataset for it as matrix, Y, in the regression equation. This is used as the dependent variable in the quantile regression in Section 3.
For large interdealer trades, model mid price is used to calculate the surprise as the squared difference between the average large interdealer trade price at CUSIP * second t+1 and the mid model price after CUSIP*second t, updated for the market change between t and t+1. t+1 is current time if a large interdealer trade arrives now, and t is the most recent model mid price updated by t+1.
For large dealer buy trades, model bid price is used to calculate the surprise as the squared difference between the average large client trade price at CUSIP * second t+1 and the bid model price after CUSIP*second t, updated for the market change between t and t+1. t+1 is current time if a large dealer buy trade arrives now, and t is the most recent model bid price updated by t+1.
Model mid price and model bid price are calculated in Model pricing Phase One Section 4, and this price is updated whenever a new trade comes in, regardless of whether it is large interdealer trade or dealer buy trade or not. Then calculate the difference between the average adjusted trade price (in Section 2.2.3.3.) and the estimated value (model bid/mid price). Call this the surprise, and calculate its square as the following equation shows:
Sid(t+1)2=(Pavg(t+1)−Model Pred Mid Price(t+1))2 (2.2)
Sdb(t+1)2=(Pavg(t+1)−Model Pred Bid Price(t+1))2 (2.3)
Thus, Sid—the surprise of all interdealer trades is difference between next price and mid model; Sdb—the surprise of all dealer buys is the difference between next price and bid model. Model Pred Bid/Mid Prices are calculated in Model Pricing Phase One.
2.2.3.5. Execution Time
The time stamp of each trade, regardless of large interdealer or large dealer buy trade or not, of their execution time is used. Business time and business day may be calculated from this execution time.
2.2.3.6. Business Day and Business Time
The execution time of each trade, regardless of large interdealer or large dealer buy trade or not, is converted into “business time” in Model Pricing Phase Two. In order to calculate business time, business days (i.e., weekdays excluding bond market holidays) are numbered consecutively since the beginning of the sample. Then, business time equals to the integer for each business day added to
max ( 0 , min ( 1 , [ seconds since 8 AM NY time / 3600 / 9 ) ] ) ) .
Business time is denoted as t, and business day is denoted as d. Business time can be decimal, while business day can only be integer.
For example:
2.2.3.7. ETF Prices at Executed Time
In an exemplary embodiment, data is sampled every 15 minutes during regular equity trading hours to check ETF price changes, and this frequency could be increased in real time process. If ETF price changes from the previous 15 minutes when checked, the new ETF price is stored, at the same time model price from Phase One may be updated as market adjustments update between last updated time and now (triggered by ETF price changes).
In addition, current execution time is stored when with new ETF prices, and this execution time is converted into business time. Then the real time confidence interval can be updated based on this ETF price changes and the new business time.
2.2.3.8. Number of Trades
Count and save the number of trades, regardless of large interdealer or large dealer buy trade, in the most recent CUSIP*second with a large interdealer trade or large dealer buy trade, and this variable is denoted as Nt.
2.2.3.9. Average Weight
Calculate and save the average value of the weight for the trades in the most recent CUSIP * second (if multiple trades occurred at this executed second) with a large interdealer or large dealer buy trade as:
w
_
=
∑
w
∑
N
t
(
2.4
)
where
w
=
ln
(
Lotsize
$100
)
,
and Nt is defined as above.
2.2.3.10. Sum of Last 5 Average Weights
Calculate and save the sum of w variable for last 5 CUSIP*seconds with trades (t−1 to t−5) as:
w5=w(t−1)+w(t−2)+w(t−3)+w(t−4)+w(t−5) (2.5)
2.2.3.11. Years To Maturity
Use YTM30 in confidence interval calculations. It is defined as:
YTM30=max(0,min(30,ytm)) (2.6)
where ytm is the years to maturity from Model Pricing Phase One. This calculation also equals to 10*YTM10+20 * YTM20, where YTM10 and YTM20 are defined in Model Pricing Phase One (YTM20=min(20,max(0,ytm−10))/10).
3. Quantile Regressions for Confidence Interval Calculation
This section describes the methodology of running quantile regressions for confidence intervals. The confidence interval overnight regression only considers two types of trades: large interdealer trades and large dealer buy trades. However, at real time updates of confidence interval model is triggered by any types of trades.
Once squared surprise is calculated for each CUSIP*second with large interdealer and or large dealer buy trades during the day as section 2.2.3.4. shows, a quantile regression is run with squared surprise as the matched dependent variable and the variables listed above in section 2.2.2. as the independent variables. Both the dependent variables and independent variables are dataset, i.e., two matrix (Y and X) including intraday data on CUSIP*second level. Two regressions may be needed here: one regression is run for large interdealer trades vs. model mid surprises and another for large dealer buys vs. model bid surprises.
Observations are weighted by
w
=
e
-
[
today
-
day
of
trade
3652.5
]
(
3.1
)
Weighted observations in his quantile regression code may be used, though there is minimal difference and impact between weighted and unweighted observations in quantile regression.
Currently, there is a “weight” column in QRegression API code, but whether to implement it internally or not is pending. The quantile predicted by the regression is the 50th percentile.
3.1.1 Regression 1: Calculate Betas and Predicted Values
3.1.1.1. Basis functions: Variables Designed to Capture Confidence Intervals in Regression 1
Input data including datasets of dependent variable and independent variables can be obtained from Section 2. Regressions are run separately by using two different datasets—one of large interdealer vs. model mid surprises, and one of large dealer buy vs. model bid surprises. The following independent variables are defined as for two consecutive trades of the same type, and time difference between two consecutive trades of the same type.
Excluding constant term, the number of basis functions is 16 (M=16, see Appendix A). Basis functions are identified as follows:
g1(ti, . . . )=Δt, days apart in decimal, for two consecutive trades of the same type, Δt and Δd are different
g2(ti, . . . )=1n(Δt)
g3(ti, . . . )=1n(1+Δd) , days apart in integer
g4(ti, . . . )=(Δ1n(LQD))2, log change in price, squared
g4(ti, . . . )=(Δ1n(AGZ))2, log change in price, squared, for Agency use AGZ instead of LQD
g5(ti, . . . )=(Δ1n(HYG))2
g5(ti, . . . )=(Δ1n(IEI))2, for Agency use IEI instead of HYG
g6(ti, . . . )=(etf23)2, etf23 change, squared (between current large interdealer/dealer buy trade and the most recent trade of the same type)
g7(ti, . . . )=(etf2)2, etf2 change, squared (between two previous trades of current large interdealer/dealer buy trade, the same type as the current large interdealer/dealer buy trade)
g8(ti, . . . )=Id, equals to 1 if trade t−1 is a large dealer buy trade; otherwise 0
g9(ti, . . . )=Ip, equals to 1 if trade t−1 is a large paired interdealer trade; otherwise 0
g10(ti, . . .)=Nt, this is an output from Section 2.2.3.8.
g11(ti, . . . )=w, this is an output from Section 2.2.3.9.
g12(ti, . . . )=w5, this is an output from Section 2.2.3.10.
g13(ti, . . . )=YTM30, this is an output from Section 2.2.3.11.
g14(ti)=R, same as Model Pricing Phase One
g15(ti)=(P5adj(t)−P5adj(t−5))2, baseline price is defined in the most recent Model Pricing Phase One Section 4.6.4.1.
g16(ti, . . . )=ldb3, this is min(0, ldb2), where ldb2 is obtained from Model Pricing Phase One for large dealer buy trades
f(ti, . . . )=(Sid)2 or (Sdb)2, dependent variable Y
3.1.1.2. The left-hand-side of the regression
The left-hand-side for this regression includes the squared surprise for large interdealer/dealer buy trades. Similarly as regression in Phase One, this regression is run on rolling 24-month windows of data. Coefficients from the regression run using data from t−24 months to t are applied to the variables from trades from month t+1 to yield and out-of-sample predicted value, see section for predicted value calculation below.
3.1.1.3. Outputs: Betas and Out-of-sample Predicted Value
The output from this regression is the betas and predicted values calculated out of sample.
V pred = β 0 + ∑ j = 1 16 β j ( t ) × g j ( s ) s > t ( 3.2 )
These predicted values are truncated at the 1st and 99th percentiles from the most recent month. A minimum of (0.05 points){circumflex over (0)}2 is also applied, i.e., replace the value with 0.052 if it is less than that. The square root of this predicted value, √{square root over (Vpred)}, is the width of the 75-25 confidence interval around each value estimate (this square root of the predicted value is one-half of the confidence interval).
3.1.1.4. Intercept term of the regression
For quantile regression, the default may be in Stata, which use_const term. When doing prediction, include the intercept term, but use default method for prediction. So intercept term is included in quantile regression analysis. In an exemplary embodiment, the following codes from Stata .do file are used:
Table 12 below is the summary of outputs from Section 3 quantile regression, which are used in Section 4 for real time confidence interval update.
| TABLE 12 |
| Output Summary from Quantile Regressions |
| Regression | ||
| Objective | No./Function | Coefficient Name |
| Calculate predicted value and | Large | CIQRegID_beta0 |
| confidence interval for model | Interdealer | CIQRegID_Coef_dt |
| mid price | Trade | CIQRegID_Coef_lndt |
| Regression | CIQRegID_Coef_lndbday | |
| CIQRegID_Coef_lnLQD | ||
| CIQRegID_Coef_lnHYG | ||
| CIQRegID_Coef_etf23 | ||
| CIQRegID_Coef_etf2 | ||
| CIQRegID_Coef_indD | ||
| CIQRegID_Coef_indP | ||
| CIQRegID_Coef_w | ||
| CIQRegID_Coef_w5 | ||
| CIQRegID_Coef_Nt | ||
| CIQRegID_Coef_P5adj | ||
| CIQRegID_Coef_ytm | ||
| CIQRegID_Coef_R | ||
| CIQRegID_Coef_ldb3 | ||
| Calculate predicted value and | Large Dealer | CIQRegDB_beta0 |
| confidence interval for model | Buy Trade | CIQRegDB_Coef_dt |
| bid price | Regression | CIQRegDB_Coef_lndt |
| CIQRegDB_Coef_lndbday | ||
| CIQRegDB_Coef_lnLQD | ||
| CIQRegDB_Coef_lnHYG | ||
| CIQRegDB_Coef_etf23 | ||
| CIQRegDB_Coef_etf2 | ||
| CIQRegDB_Coef_indD | ||
| CIQRegDB_Coef_indP | ||
| CIQRegDB_Coef_w | ||
| CIQRegDB_Coef_w5 | ||
| CIQRegDB_Coef_Nt | ||
| CIQRegDB_Coef_P5adj | ||
| CIQRegDB_Coef_ytm | ||
| CIQRegDB_Coef_R | ||
| CIQRegDB_Coef_ldb3 | ||
4. Update Confidence Intervals in Real-Time
When new trades come in or ETF price changes, value estimates are updated as described at Section 4 in the Model Pricing Phase One, new values of the dependent and independent variables of the regression in 3.1.1.1. are calculated if necessary for new betas calculation, and the updated betas estimated from the prior evening are used to calculate the new confidence intervals as shown in 3.1.. Triggered by new trades or ETF price changes, both model price (value estimation) in the most recent Model Pricing Phase One at Section 4 and confidence interval may be updated. The new trade information may be used and new ETF prices may be used to re-calculate new model mid/bid price and new confidence interval. If the new trade is large interdealer or large dealer buy trades, then new values of the dependent and independent variables of the regression may be updated and stored for the overnight regression at the end of the day. Coefficient names are defined in Section 2.2.2.. Also, variable mapping between model and Stata coding are listed in the table at Section 2.2.2..
After the coefficients from overnight regression at Section 3 are obtained, confidence interval is updated with new betas when new trades arrive or ETF price changes at real time.
4.1.1 Collapse Multiple Trades at CUSIP*Second
Similarly as Model Pricing Phase One, the data is collapsed to the CUSIP*second level in Phase Two real-time calculation as well. This means if multiple trades occurred in the same second, they are collapsed in the same second into an average price. For example, there may be only one model bid/mid price or average adjusted trade price for an executed second with a trade or multiple trades. This is also the reason that in output files at Section 6, columns such as model prices, adjusted trade prices, etc. are displayed in bond-level output file but not trade-level output file. The result of these columns is aggregated trade result if multiples trades occurred in the execution second. In other words, a model price or adjusted price is not calculated for each trade but for per second.
4.1.2 RT Input Data
Similarly as the list at Section 2.2.3., at real-time whenever new trades come in or ETF price changes, all independent variables are updated and the new confidence interval are re-calculated by using coefficients from overnight regressions.
In summary, here is the list of data that may be needed to update and store when new trade arrives:
When new trade arrives or each ETF price changes, the intraday calculation is done by using the updated independent variables of the new trade (defined as above in 4.1.2.) or change of the ETF price
Vpred=+CIQRegID_Coef_beta0+CIQRegID_Coef_dt * Δt +CIQRegID_Coef_lndt * 1n(Δt) +CIQRegID_Coef_lndbday * 1n(1+Δd) +CIQRegID_Coef_InLQD * (Δ1n(LQD))2, use +CIQRegID_Coef_lnAGZ * (Δ1n(AGZ))2 in Agency +CIQRegID_Coef_lnHYG * (Δ1n(HYG))2, use +CIQRegID_Coef_lnIEI * (Δ1n(IEI))2 in Agency +CIQRegID_Coef_etf23 * (etf23)2+CIQRegID_Coef_etf2 * (etf2)2+CIQRegID_Coef_indD * Id+CIQRegID_Coef_indP * Ip+CIQRegID_Coef_w * w+CIQRegID_Coef_w5 * w+CIQRegID_Coef_Nt * Nt+CIQRegID_Coef_P5adj * (P5adj(t)−P5adj(t−5))2+CIQRegID_Coef_ytm * YTM30+CIQRegID_Coef_R * R+CIQRegID_Coef_Idb3 * ldb3 (4.1) where baseline price is defined as
P
5
adj
(
t
)
=
P
adj
(
t
)
+
P
adj
(
t
-
1
)
+
P
adj
(
t
-
2
)
+
P
adj
(
t
-
3
)
+
P
adj
(
t
-
4
)
5
,
and all the independent variables are defined in Section 2.2.2. , Table 11.
4.1.4 Calculate the Width of CI
These predicted values are truncated at the 1st and 99th percentiles from the most recent month. A minimum of (0.05 points){circumflex over (0)}2 is also applied, i.e., replace the value with 0.052 if it is less than that. The square root of this predicted value, √{square root over (Vpred)}, is the width of the 75-25 confidence interval around each value estimate (this square root of the predicted value is one-half of the confidence interval). For interdealer trades, value estimate is the model mid price; and for dealer buy trades, value estimate is the model bid price.
5. Model Output Files
Similarly as in Model Pricing Phase One, at four times of each trading day (i.e. 10 am, 12 pm, 3 pm and 4 pm), two output files may be generated (in Excel .csv format): bond-level output file and trade-level output file. The output files provide data analysis for Model Pricing, especially supporting Methodology to check the performance of the model. New fields are added at the end of the existing tables from Model Pricing Phase One Section 6, and are highlighted below.
The bond-level output file may contain all the statistics data for each certain security, for Phase One it has: Model Price (Bid/Mid/Ask Price), New Price (Bid/Mid/Ask Price), Difference in Prices, Last 5 Trades' Price, Last 5 Transaction Cost Adjustments, Transaction Cost Coefficients, Market Adjustment Coefficients, Value Estimate Coefficients; for Phase Two it may add new columns as: Business Day, Confidence Intervals Coefficients. This file includes all the regression results generated while running the model. Table 13 below shows all the available fields in the bond-level output file:
| TABLE 13 |
| Available Fields of Bond-level Output File |
| Available Fields |
| Sector | Security ID | Security Description |
| Model Bid Price | Model Mid Price | Model Ask Price |
| New Bid Price | New Mid Price | New Ask Price |
| Diff in Bid Price | Diff in Mid Price | Diff in Ask Price |
| Last Trade Price | Last Second Trade Price | Last Third Trade Price |
| Last Fourth Trade Price | Last Fifth Trade Price | Last Transaction Cost Adj |
| Last Second Transaction Cost Adj | Last Third Transaction Cost Adj | Last Fourth Transaction Cost Adj |
| Last Fifth Transaction Cost Adj | Reg1_Coef_tt | Reg1_Coef_dtt |
| Reg1_Coef_ttfq | Reg1_Coef_dttfq | Reg1_Coef_fq |
| Reg1_Coef_ttpos | Reg1_Coef_dttpos | Reg1_Coef_ttposfq |
| Reg1_Coef_dttposfq | Reg1_Coef_ttrat | Reg1_Coef_ttmat15 |
| Reg1_Coef_ttposrat | Reg1_Coef_ttposmat15 | Reg1_Coef_ttfqrat |
| Reg1_Coef_ttfqmat15 | Reg1_Coef_ttfqmat15rat | Reg1_Coef_dttfqrat |
| Reg1_Coef_dttfqmat15 | Reg1_Coef_dttfqmat15rat | Reg1_Coef_ttposfqrat |
| Reg1_Coef_ttposfqmat15 | Reg1_Coef_ttposfqmat15rat | Reg1_Coef_dttposfqrat |
| Reg1_Coef_ttposfqmat15 | Reg2_Coef_sLQD | Reg2_Coef_sLQDmat10 |
| Reg2_Coef_sLQDrat | Reg2_Coef_sLQDmat10rat | Reg2_Coef_sLQDhy |
| Reg2_Coef_sLQDhyrat | Reg2_Coef_sLQDmat10hy | Reg2_Coef_sLQDmat10hyrat |
| Reg2_Coef_sHL | Reg2_Coef_sHLmat10 | Reg2_Coef_sHLrat |
| Reg2_Coef_sHLma10rat | Reg2_Coef_sHLhy | Reg2_Coef_sHLhyrat |
| Reg2_Coef_sHLmat10hy | Reg2_Coef_sHLmat10hyrat | Reg2_Coef_sLM10a |
| Reg3_Coef_spy3 | Reg3_Coef_spy3 | Reg4_Coef_col |
| Reg4_Se_sel | Reg5_Coef_coh | Reg5_Se_seh |
| Reg6_Coef_stc | Reg6_Se_stc | Reg6_Coef_etf2 |
| Reg6_Se_etf2 | Reg7_Coef_x | Reg7_Coef_dx |
| Reg7_Coef_udx | Reg7_Coef_xLnft | Reg7_Coef_xLnt |
| Reg7_Coef_xig | Reg7_Coef_xfq | Reg7_Coef_xsame |
| Reg7_Coef_xpos | Reg72_Coef_x2 | Reg72_Coef_x2ud |
| Reg72_Coef_x2Lnft | Reg72_Coef_x2Lnt | Reg72_Coef_x2ig |
| Reg72_Coef_x2fq | Reg72_Coef_x2pos | Years-To-Maturity |
| Last Trade Adjusted Price | Last Second Trade Adjusted | Last Third Trade Adjusted |
| Padj1 | Price Padj2 | Price Padj3 |
| Last Fourth Trade Adjusted | Last Fifth Trade Adjusted Price | Last 5 Average TCMA Price |
| Price Padj4 | Padj5 | P5adj |
| X | X2 | PredPrice |
| PredPrice2 | Business Day | CIReg1id_Coef_fsadjt |
| CIReg1id_Coef_Lnfsadjt | CIReg1id_Coef_Lnsbday | CIReg1id_Coef_fsLQD |
| CIReg1id_Coef_fsAGZ | CIReg1id_Coef_fsHYG | CIReg1id_Coef_fsIEI |
| CIReg1id_Coef_fetf22 | CIReg1id_Coef_etf22 | CIReg1id_Coef_abstt |
| CIReg1id_Coef_absdtt | CIReg1id_Coef_fq | CIReg1id_Coef_trades |
| CIReg1id_Coef_s5a5 | CIReg1id_Coef_ytm | CIReg1id_Coef_fq5 |
| CIReg1id_Coef_rat | CIReg1id_Coef_ldb3 | CIReg2db_Coef_fsadjt |
| CIReg2db_Coef_Lnfsadjt | CIReg2db_Coef_Lnsbday | CIReg2db_Coef_fsLQD |
| CIReg2db_Coef_fsAGZ | CIReg2db_Coef_fsHYG | CIReg2db_Coef_fsIEI |
| CIReg2db_Coef_fetf22 | CIReg2db_Coef_etf22 | CIReg2db_Coef_abstt |
| CIReg2db_Coef_absdtt | CIReg2db_Coef_fq | CIReg2db_Coef_trades |
| CIReg2db_Coef_s5a5 | CIReg2db_Coef_ytm | CIReg2db_Coef_fq5 |
| CIReg2db_Coef_rat | CIReg2db_Coef_ldb3 | |
| LID Surprise | ||
| LDB Surprise | Trade Execution Time | Trade Execution Time |
| Difference | ||
| Trade Execution Time Log | Business Day Log Difference | Squared Change of Log LQD Price |
| Difference | ||
| Squared Change of Log AGZ Price | Squared Change of Log HYG Price | Squared Change of Log IEI Price |
| Pred Squared Change of | Squared Change of Market | Weight Average |
| Market Adjustment | Adjustment | |
| Trade Counts | Squared Change of Baseline Price | YTM30 |
| Sum of Weight Average for | Rating | Transaction Cost |
| Last 5 Trades | ||
| Note: | ||
| Last Trade Price is the most recent aggregated trade price, i.e., if there are multiple trade occurred in one second, Last Trade Price may display the weight-averaged aggregation of all trades in that 1 second. Years-To-Maturity may be calculated based on the most recent trade. | ||
| Trade Execution Time, Trade Execution Time Difference, Trade Execution Time Log Difference are in the format of business time (conversion method is at Section 2). | ||
| If the field is an aggregated trade variable, it may show the result after the most recent trade is occurred and averaged. |
The daily trade-level output file includes all the trades' data processed by the model in one day, and fields in this file are the same as columns shown in Trade Data Enhancements for IG/HY and Agencies respectively. Table 14 below shows all the available fields in the trade-level output file:
| TABLE 14 |
| Available Fields of Trade-level Output File |
| Available Fields |
| Side | Size | Trade Spread |
| Trade BM | Trade Time | Time Applied |
| Model Side Indicator | Model Paired Indicator | Matched Trade ID |
| Model Updated Time | Trade Yield | Trade Price |
| LQD Price | HYG Price | TLT Price |
| IEI Price | Model Paired | Trade Execution Time |
| Client Trade Indicator | Paired Trade Indicator | |
Trade Execution Time is in the format of business time (method of conversion is in Section 2), and it is different from the format of Trade Time, which has the format as mm/dd/yyyy hh:mm:ss.
6. Pricing Modes
Model Price may be used as a source of market data to produce the Continuous Price, and if model price is chosen as the market data, notifications of model price status may have an impact on continuous price and may be managed by the evaluator. Testing of model price may be independent, like testing of trade outliers. There may be three market data types of model price, added to the Market Data Ranking screen:
FIG. 18 depicts an exemplary flow chart of a high level workflow of how to use model price in Market Data Ranking. The general strategy for using the alternative plan may be:
7. Status Handling
Status may be implemented both on Dashboard and Worksheet. There is no screen or GUI specifically for Model Pricing, but notifications and status may be enhanced into Dashboard and Worksheet in different sectors, i.e., IG, HY and AGY.
8. Model Confidence Group
According to model performance by confidence interval, the model confidence group is divided into three sub-groups: High, Medium, and Low. Confidence interval is calculated by using predicted model price over the next trade price. After the overnight regression is run in Section 3, the width of confidence interval may be calculated. Rank the width from small to large and fill model price into the following three model confidence groups based on cutoff threshold values. Narrow CIs predict better relative performance by the model, which means model price lies in CI percentile of 0-25th has high confidence. For example, the table below is shown Model Mid Price performance by confidence interval.
| Model | Eval | |||||
| Confidence | CI | Prior | Model | Eval | % of | % of |
| Group | percentile | MSE | MSE | MSE | Prior | Prior |
| High | 0-25th | 0.15 | 0.10 | 0.27 | 65 | 176 |
| Medium | 25th-50th | 0.31 | 0.17 | 0.35 | 55 | 112 |
| 50th-75th | 0.41 | 0.23 | 0.49 | 57 | 120 | |
| 75th-90th | 0.60 | 0.40 | 0.92 | 66 | 152 | |
| 90th-95th | 0.89 | 0.55 | 0.84 | 62 | 94 | |
| Low | 95th-100 | 2.68 | 0.97 | 2.32 | 36 | 86 |
| No Model | NA | NA | NA | NA | NA | |
In the above table, CI percentile in 0-25th may be considered as top group, 25th-95th is medium group, and the bottom group is in 95th-100 CI percentile. In addition, there are some descriptions of some fields in the above table:
The boundaries between the confidence groups (High, Medium, Low) may be defined by configurable threshold levels.
In addition to the thresholds themselves, a range is defined around the threshold to control and stabilize movement between the groups. A price only moves into a new group when it crosses the furthest point in the range. For example, if the High/Medium Group Threshold=12c, a range is defined around this of ±2c. A High Confidence price becomes a Medium Confidence price when its CI widens to 14 c, while a Medium Confidence price becomes a High Confidence price when its CI narrows to 10c. By using this range, the movement between the groups is smoothed, and price oscillation from one group to another is avoided when their CIs are close to the threshold.
For each pricing method, i.e., IG, HY and Agency, there are two sets of threshold range on configuration screen. Each of them has both an upper level value and a lower level value. The previous rules of switching between pricing modes have been removed, however, the definition of the three model price confidence groups and the threshold may keep the same as examples below.
For example, there are current configuration cutoff values and threshold values for High-Medium group as [13, +2, −3]. If at Day 1, the start confidence interval value is 9, then there are the following examples:
There are three more examples on Day 1 and comparing the first CI value and the cutoff value (keep the same assumption that the cutoff and threshold values for High-Medium group are [13, +2, −3], for Medium-Low group are [80, +20, −30]:
Additionally, it is possible that confidence group may jump from high confidence group directly to low confidence group, or from low confidence group to high confidence group.
On the screen, the user is able to edit the cutoff threshold and also the upper and lower level of the range, so the range of the threshold equals to: cutoffs±upper/lower level value. Please see Section 10.2.1. Model Pricing Configurations under the tab of Confidence Group. Behavior of the groups are described below in Section 8.2.-8.4..
Model Pricing in this group may be considered as high confidence. There may be a warning notification if bond moves out of top group, under such circumstance, the evaluator may actively manage their continuous pricing evaluation, and choose if they want to choose model price medium confidence group as market data source. There may also be a warning notification if bond moves into the top group, under this case, the evaluator may consider using model price high confidence group as one of market data sources.
Model Pricing in medium group may be considered as medium confidence.
Model Pricing in bottom group may be considered as very low confidence or no model price.
9. Model Price Enrichment (Calculate Model Evaluations Value)
Full calculation of model evaluations may be performed and these evaluation values may be displayed on the Quote screen:
| Bid/Ask Config (Type, Value) | |
| Bid Px | Mean Px | Ask Px | |
| Bid Yield | Mean Yield | Ask Yield | Price To config (Mat, |
| Call, Worst) | |||
| Redemption configs | |||
| Calculation configs | |||
| Bid Spread | Mean Spread | Ask Spread | Benchmark Config (Curve) |
Bid Px and Mean Px are inputs, and the rest of the grids are the outputs. By using the rules above, ask Px and yield, spread can be calculated and converted from price. Note that that model price may not tick with the Treasury curve. Model price may tick with ETFs (also new trades), and ETFs ticking is more frequent than that of the Treasury curve. Additionally, model pricing is price based, when the Spread/Yield is calculated, the current value of the curve is used, but it is not necessary to tick with the curve at real time.
The final pricing output file that gets published from the pricing methods (Agencies, HY, IG) includes the Published Evaluation values. The calculation rules above may ensure that the Published evaluation fields for all securities based on a model price are complete.
All the changes specified in Model Pricing Phase Two are applied to US IG, US HY and Agency screens. All the fields displayed on Worksheet, Quote Market screen, Quote History screen and Model Details Screen are defined in the spreadsheet, which is in Appendix E.
Model Pricing Phase One has introduced all the fields on the Worksheet, including the following:
In Phase Two, there may be no new fields added onto the Worksheet. However, one or more model variables may be displayed on a new screen, e.g., Model Details screen. Model Details screen may show all the important variables from Model Pricing Phase One and Phase Two. This screen may be found in each of the three systems, i.e., IG, HY and Agency, under the submenu of Market Data. The user can flip the pricing mode on Dashboard or Worksheet to show the evaluations at Real Time, 3 PM, or 4 PM. FIG. 19 depicts an exemplary pricing mode displayed on a Model Details screen. Provided below is a list of fields on Model Details screen:
| Field | GUI Name | Data Range | Example |
| Model | Model Rating | Variable R in Model | 0.25 |
| Rating Score | Score | Pricing Phase One | |
| [0, 1] | |||
| Rating = 0 for bonds | |||
| rated AA+ or above, | |||
| 1 for bonds rated CC | |||
| or below, and is linear | |||
| in credit rating | |||
| between as (S&P | |||
| numerical −3)/16, | |||
| i.e., rat = 1 − max | |||
| (0,min(1, | |||
| (SPrat −3)/16)). | |||
| R may be set to 0 in | |||
| calculation of | |||
| Agencies. | |||
| Model YTM | Model YTM | ytm = (maturity_date- | 3.0061601642710474 |
| execution_date)/ | |||
| 365.25 (using the | |||
| most recent | |||
| trade execution time | |||
| as the execution_date | |||
| in calculation) | |||
| Model | Model | Date and time | 09/04/2014 08:33:47 |
| Updated | Updated | (mm/dd/yyyy | |
| Time | Time | hh:mm:ss) | |
| Model | Model Bid | Positive floating | 99.81561 |
| Bid/Mid/Ask | Price | number | 99.86360 |
| Price | Model Mid | 99.91159 | |
| Price | |||
| Model Ask | |||
| Price | |||
| Model | Model Bid | Positive floating | |
| Bid/Mid/Ask | Spread | number | |
| Spread | Model Mid | ||
| Spread | |||
| Model Ask | |||
| Spread | |||
| Model | Model Bid | Positive floating | |
| Bid/Mid/Ask | Yield | number | |
| Yield | Model Mid | ||
| Yield | |||
| Model Ask | |||
| Yield | |||
| Model/Eval | Model/Eval | Floating number | |
| Diff | Diff | ||
| Model | Model Mkt | Positive floating | |
| Market | Adj. | number | |
| Adjustment | |||
| Model | Model Px | Positive floating | |
| Trade-to- | Change | number | |
| trade Change | |||
| in Price | |||
| Model Price | Model Price | Good, Failed, | Suspect |
| Status | Status | Suspect, Warning | |
| Model 3PM | Model Bid | Positive floating | |
| Bid/Mid/Ask | Price | number | |
| Price | Model Mid | ||
| Price | |||
| Model Ask | |||
| Price | |||
| Model 3PM | Model Bid | Positive floating | |
| Bid/Mid/Ask | Spread | number | |
| Spread | Model Mid | ||
| Spread | |||
| Model Ask | |||
| Spread | |||
| Model 3PM | Model Bid | Positive floating | |
| Bid/Mid/Ask | Yield | number | |
| Yield | Model Mid | ||
| Yield | |||
| Model Ask | |||
| Yield | |||
| Model 4PM | Model Bid | Positive floating | |
| Bid/Mid/Ask | Price | number | |
| Price | Model Mid | ||
| Price | |||
| Model Ask | |||
| Price | |||
| Model 4PM | Model Bid | Positive floating | |
| Bid/Mid/Ask | Spread | number | |
| Spread | Model Mid | ||
| Spread | |||
| Model Ask | |||
| Spread | |||
| Model 4PM | Model Bid | Positive floating | |
| Bid/Mid/Ask | Yield | number | |
| Yield | Model Mid | ||
| Yield | |||
| Model Ask | |||
| Yield | |||
| Model | Model CIs | Positive Integers | 15 |
| Confidence | |||
| Intervals | |||
| Model | Model | High, Medium, Low | Medium |
| Confidence | Confidence | ||
| Group | Group | ||
| Model 3PM | Model CIs | Positive Integers | |
| Confidence | |||
| Intervals | |||
| Model 3PM | Model | High, Medium, Low | |
| Confidence | Confidence | ||
| Group | Group | ||
| Model 4PM | Model CIs | Positive Integers | |
| Confidence | |||
| Intervals | |||
| Model 4PM | Model | High, Medium, Low | |
| Confidence | Confidence | ||
| Group | Group | ||
Descriptions and functionality of these fields are provided in the following sub-sections.
10.1.1 Model Rating Score:
Model Rating Score is defined and calculated in Model Pricing Phase One, which converts S&P Rating (or Moody's or Fitch Rating) to a numerical value between 0 and 1. Rating =0 for bonds rated AA+ or above, 1 for bonds rated CC or below, and is linear in credit rating between as (S&P numerical−3)/16, i.e., rat=1-max(0,min(1,(SPrat-3)/16)). R may be set to 0 in calculation of Agencies.
10.1.2 Model YTM:
Model YTM is defined and calculated in Model Pricing Phase One. ytm=(maturity_date-execution_date)/365.25(using the most recent trade execution time as the execution_date in calculation).
10.1.3 Model Updated Time:
Model Updated Time is defined in Model Pricing Phase One. Model Updated Time shows the time when model price is updated. The format of this field is defined as Date and Time (mm/dd/yyyy hh:mm:ss).
10.1.4 Model Bid/Mid/Ask Price/Spread Yield:
Model/Eval Diff is defined as the difference between model price and evaluation price at real time.
10.1.6 Model Market Adjustment:
Model Market Adjustment is defined and calculated in Model Pricing Phase One, which is denoted as etf23. And the calculation is described in Model Pricing Phase One Section 4.6.3..
10.1.7 Model Trade-to-trade Change in Price:
Model Trade-to-trade Change in Price is defined and calculated in Model Pricing Phase One, which is denoted as Δp.
10.1.8 Model Price Status:
Model Price Status is defined in Model Pricing Phase Two Section 11.1.3. with four values to show the status of model pricing: Good, Failed, Suspect and Warning.
10.1.9 Model 3 PM Bid/Mid/Ask Price/Spread/Yield:
Model 3 PM Bid/Mid/Ask Price/Spread/Yield is defined as Model Bid/Mid/Ask Price/Spread/Yield at 3 pm mode.
10.1.10 Model 4 PM Bid/Mid/Ask Price/Spread/Yield:
Model 4 PM Bid/Mid/Ask Price/Spread/Yield is defined as Model Bid/Mid/Ask Price/Spread/Yield at 4 pm mode.
10.1.11 Model Confidence Intervals:
Model Confidence Intervals show the results from regressions at Section 2 at real time, the confidence interval width:
Model Confidence Group shows which confidence group the bond may be located, based on confidence interval width calculated from Section 2 and confidence threshold in Section 4 at real time, which is defined on the screen as:
New fields may include:
FIG. 20 depicts an exemplary Quotes Market Data screen for each system, i.e., IG, HY and AGY for display of model price and model evaluations. In an exemplary embodiment, only the most recent model price may be displayed on the Quote Screen and positioned at the top row on the screen. There may be no display of model price ticks. The following fields may be displayed for each model price:
Accept: Accepts the most recent model price, clearing and dismissing any notification on the security due to the selected market data.
Reject: Rejects the most recent model price, clearing any notification on the security due to the selected market data and going back to the last good model price.
Apply as Eval: The evaluator may select a line that may be used for the evaluation and click Apply as Eval. Particularly, model price may be automatically ticking with each institutional trade, and the evaluator can use this button to apply model price as the evaluation. Note that this may behave the same way as any manually applied trade or quote, in the sense that the market data ranking may only consider data that comes in after the apply time of the model price, when deciding whether new data may replace the manually applied model price.
The rest of the buttons on the screen, i.e., Cancel, Set Default Source, Unset Default Source, Quote Entry, may be grayed out when a model price is selected. Note Model Price sensitivity condition may last until it's accepted/rejected or the next institutional trade occurs. The maximum time of Model Price sensitivity condition may last until the end of the day.
10.2.2 Market Data Ranking Profile
FIG. 21 depicts an exemplary investment grade data ranking profile screen. The evaluator can set up model pricing as one of the market data sources on Market Data Ranking Profiles screen in each system, i.e., IG, HY and AGY. Model Price High Confidence Group, Model Price
Medium Confidence Group, and Model Price Low Confidence Group may be shown under “Unused Data Types” and can be selected to Data Ranking tab as a source of market data. The configuration of the three Model Price Confidence Groups can be done on the configuration screen at sector level, which is shown in Section 10.3.1.2.
FIG. 22 depicts an exemplary Quote History screen for each system, i.e., IG, HY and AGY, displaying model price and model evaluations. Similarly defined as the Quote screen, only the most recent model price may be displayed on the Quote History Screen and positioned at the top row on the screen. There may be no display of model price ticks.
FIG. 23 depicts an exemplary event log. One row is added in the event log each time an institutional trade causes model price ticking, and meanwhile model price is the driver of the evaluation (i.e., model price is selected as the market data source). In addition, capture the price once an hour and display as “Hour (10 AM) Price”. The purpose of this record is to show the hourly price between institutional trades, which may occur hours away with each other. This hourly price is recorded regardless of whether model price is selected as market data source.
There are two types of configuration screens: Model Pricing Configurations, which is added to the existing tabs from Phase One and this is on model level; and Model Notifications Configurations, which is added to the existing tabs on the existing Configuration screen in each system, i.e., IG, HY and AGY.
10.5.1 Model Pricing Configurations
Configurations on this screen are all model level and are sectors of CORP, AGENCY and INACTIVE. Values are configurable under each sector. There are two new tabs added to the existing Model Pricing Configurations screen from Phase One, which are Confidence Interval and Confidence Group.
Confidence Interval:
FIG. 24 depicts an exemplary model pricing configuration screen for a confidence interval. This screen enables Methodology to configure definition of large trade's size, quantile regression type, truncation requirements, and minimum points requirements.
Confidence Group
FIG. 25 depicts an exemplary model pricing configuration screen for a confidence group. On this screen, Methodology and evaluator can change the cutoff values and threshold range of the three confidence groups, i.e., High, Medium and Low. Definition and examples of confidence groups are described in Section 9. In an exemplary embodiment, all the margin values of the range are inclusive; in other words, if the confidence interval equals the margin value of the range or on the border, then it may belong to the lower confidence group.
10.5.2 Model Notifications Configurations
FIG. 26 depicts an exemplary sector configuration screen for model notifications. Configurations on this screen may be added to the existing tabs in each system, i.e., IG, HY and AGY under sectors. This new tab enables Methodology and the evaluator to change the default tolerance of Model Notifications. For example, FIG. 26 is a screenshot to add the Model Notifications tab onto the existing USIG Sector Configuration screen.
11. Notifications
In an exemplary embodiment, none of the existing notifications applied to trades or quotes may be applied to model price. Notification details may be displayed on Inbox of each pricing system, i.e., IG, HY and Agency. Model Price may be tested independently, and notifications may only be applied if model price is chosen as the market data.
There is one Model Price Notification. If the test is failed, it may generate a suspect notification. If the notification is acknowledged, then the evaluator may not get a new notification until a new institutional trade comes in.
11.1.1 Model Sensitivity to Δ Institutional Trade Px
There may be a Large Change in Model Sensitivity suspect notification if:
In this case, the evaluator may be able to verify model price and the cause of this large difference. When comparing the changes of model mid price and changes of institutional trade price, the same time period may be used. For example, if our new trade happens at time t, and the last institutional trade time is at t−1, then the changes of trade price may be Δp=P(t)−P(t−1). And model bid price at t and t−1 may be used to calculate the changes in the model, i.e., ΔM=M(t)−M(t−1). M(t) and M(t−1) are model mid prices triggered by trade at t and t−1. The sensitivity test passes if the difference between changes of model mid price and changes of institutional trade price is less than X. For example, at time t, ΔP(t)−ΔM(t)>X have been tested (when test fails, notification is issued). The suspect notification is cleared automatically when a new institutional trade arrives, causing the test to be run again, and the test passes. For example, at time t+1, the differences are again calculated as ΔP(t+1)=P(t+1)−P(t), and ΔM(t+1)=M(t+1)−M(t). If ΔP(t+1)−ΔM(t+1)<X, then the suspect notification may be cleared. Alternatively, the evaluator can accept the suspect model price manually to clear the notification. Model Price sensitivity condition may last until it's accepted/rejected or the next institutional trade occurs. The maximum time of Model Price sensitivity condition may last until the end of the day.
If confidence interval moves sharply, the evaluator may receive a warning notification if:
There may be a warning notification when the first model price is available. This is for new issued bonds, which have had at least six trades. No action is required for this warning notification. And the purpose of this notification is to let the evaluator know that model price is available and good to use from today. This warning notification may be cleared automatically at the end of the day. This is in the Model Pricing Phase One's spec, Section 4.1., Minimum Requirements of Intraday Calculation. To calculate the first model price, at least six trades may be needed to run the overnight regression. And to generate model price at real-time, besides these six trades, the seventh trade may be needed to happen the next day to trigger the intraday calculation on model price. For example, there are several possible cases:
Calculation Failure may be applied to model price. Rules of handling calculation failure notifications are:
There is a Model Price Status column on Model Details screen with four possible values to show the status of model pricing: Good, Failed, Warning, and Suspect. The status of each model price may be maintained, but (like outliers in trades and quotes), notifications may only be generated if the model price is chosen to be applied by the Market Data Ranking rules. If this model price is suspect, it generates the notification, and the Continuous Price is suspect until the notification is accepted or rejected. The evaluator may clear all notifications before release.
| Description | |||||
| (headline) | Type | Reason (details) | Cause | Actions | Screen |
| Large | Suspect: | [security ID] [security | During the same | The | Worksheet |
| Change in | Worksheet | description] has a | time period, the | evaluator | |
| Model | large difference | changes of model | may be | ||
| Sensitivity | between changes of | price (use mid price) | able to | ||
| model price and changes | and changes of | verify | |||
| of institutional trade | institutional trade | model | |||
| price and the difference | price has a large | price and | |||
| is more than [X]. | difference and break | the cause | |||
| the default | of this | ||||
| tolerance. | large | ||||
| difference. | |||||
| Calc Failure | Calc | [security ID] [security | The system is | The | Worksheet |
| Failure: | description] has calc | unable to calculate | evaluator | ||
| Worksheet | failure. | a security and the | may either | ||
| calculation library | correct the | ||||
| may return a failure. | security's | ||||
| The possible reasons | configuration, | ||||
| of calc failure may | modify | ||||
| be the same as | underlying | ||||
| defined in IG. | assumptions, or | ||||
| enter a manual | |||||
| price only | |||||
| quote for the | |||||
| security. | |||||
| Big Change | Warning: | [security ID] [security | Model Price is more | The evaluator | Worksheet |
| in | Worksheet | description] has moved | confident as new | may reevaluate | |
| Confidence | from [X] confidence | trades come in or | whether to | ||
| Interval | group to [Y] | less confident as | use model | ||
| confidence | time passed without | price as a | |||
| group. | any trade, i.e., the | market data | |||
| confidence interval | source | ||||
| is widen out. | |||||
| First Model | Warning: | [security ID] [security | This is for new | No action | Worksheet |
| Price | Worksheet | description] has the | issued bond with at | required. | |
| first model | least six trades. This | The evaluator | |||
| price available. | warning notification | can go to market | |||
| may alert the user | data ranking | ||||
| that the first model | profile to set | ||||
| price is available to | model price as | ||||
| be considered in | the driver of the | ||||
| market data source. | evaluation. | ||||
12. Configurations
Configurations in this section are applied to all the three pricing systems—IG, HY and Agency. For each system, there may be one configuration screen.
FIG. 27 depicts an exemplary model pricing configuration screen for a confidence interval.
FIG. 28 depicts an exemplary sector configuration screen for model notifications.
13. Appendix A: Regression Framework and Formulae
In this Appendix address regression frameworks are addressed in general and regression formulae applied to TC model and Market Adjustment. Note that all regressions involved may be weighted regressions. Also note that the design matrix and the right-hand-side of regressions include 1st differences, except for the constant term in design matrix.
A few assumptions are made as basis of framework and general settings for TC model and Market Adjustment applications are provided. Regressions are run in rolling windows. The generic form of a rolling window is [t−24, t] with t being a time unit in month. Assuming that observations come with execution times {ti}. The execution times are also used to calculate 1st differences. Let pt denote the price at execution time t. Then the 1st difference for price is calculated according to the following:
pti−pti−1=ΔpiϵΔp↦ti−1<ti;ti,ti−1ϵ[t−24,t];(ti−1,ti)∩[t−24,t]=0 (10.1)
(ti−1,ti)∩[t−24,t]=0 means there is no execution between ti−1 and ti. 1st differences for other quantities are also calculated according to rules above. Note that 1st difference calculations are based on grouping according to certain id's.
h
l
=
∑
k
=
1
K
c
k
q
k
(
t
i
,
…
)
Generic element in W is in the following form:
wi=w(ti)
The coefficients of regression, β, an M-vector is given by the solution of the following linear equations:
[DTD]·β=DTH, where D=W·A (10.2)
A constant term was not included in basis functions fj but it may be included in (10.2).
14. Appendix B: Blended Model—18 Betas Model
For mids, there are 5 primary inputs:
In addition, there may be several secondary inputs used for calculating betas in Section 15.5 below:
For each issue, the system may produce a blended mid and bid price and an updated confidence interval for each:
In an exemplary embodiment, this is the mapping of variable names in the model.
For each of blended mid and bid prices, the method may estimate 9 parameters, for mids:
BtM=EsM+β1M(MtM−MsM)+β2M(MsMEsM)+β3M(CtM−CsM)+β4M(CsM−EsM)+β5M(MtB−MsB)+β6M(MsB−EsM)+β7M(CtB−CsB)+β8M(CsB−EsM)+β9M(EsBEsM)
and for bids:
BtB=EsB+β1B(MtM−MsM)+β2B(MsM−EsB)−β3B(CtM−CsM)+β4B(CsM−EsB)+β5B(MtB−MsB)+β6B(MsBEsB)+β7B(CtB−CsB)+β8B(CsB−EsB)+β9B(EsM−EsB)
The betas may be configured by methodology by using an upload function, since the 18 betas are different bond by bond. The betas above may be estimated using a past sample of data, using a linear regression on the above equations, where the Bs may be substituted with a measure of future mid/bid prices. The betas may be modeled to be a function of the secondary inputs, and these functions may also contain parameters to be estimated.
FIG. 29 depicts an exemplary upload button. There may be an upload button for methodology to manually upload the 18 betas on bond level, as the betas are calculated and different bond by bond. This button may be available on system level, one for each of AGN, IG, HY, and the top menu option as shown in FIG. 29. Upload Blended Px Betas menu is under the Maintenance menu for each pricing system.
FIG. 30 depicts an exemplary screen of upload blended price betas. The “Import Items” button enables the user to load the file where the blended price betas have been saved.
FIG. 31 depicts an exemplary new tab added on the screen of Security Details as “Blended Px Betas” and display CUSIP with 18 betas. This is applied to all the three pricing systems, i.e., IG, HY and Agency.
15. Appendix C: Historical Data Dependencies
This section describes historical data that may be needed in order to run quantile regression for confidence intervals and linear regression for blended model.
Two-year data of the following fields may be needed to run quantile regression in Section 3.
15.1.1 Reference Data
Reference data in the model includes only the following fields:
Historical reference data is not available. For purposes of historical inputs into the regressions, current reference data may be used for all bonds. Note that the reference data at time of trade may be used.
15.1.2 TRACE Data
Two years trade data may be needed. The trade data may be transformed into the same format that the History service retrieves on a going forward basis, in order to be populated and retrieved by the service on Day 1. From Phase One, the following trade-level data may be captured—these fields are used for GUI purposes—and may be included in the history service:
In addition to the highlighted fields above (needed for linear regression), the following 4 fields may also be needed for calculating the confidence interval:
These fields may have been added to Phase One already, such that it may not be necessary to back-populate them from Phase One go-live day to Phase Two go-live day. Historical values may be included.
15.1.3 Bond Data Betas
For the first Day 1 CI regression, the bond-level ETF betas (5 per day per bond) may be needed and 2 years worth of history. The 5 bond-level ETF betas that may be needed to calculate etf2 and etf23 are:
Two-year past ETFs price history sampled every 15 minutes may be needed, for LQD and AGZ. This may be used to attach the trade data. This requirement may already be met for Phase One.
One-year data of the following fields may be needed to run linear regression in Section 5.
15.2.1 TRACE Data
One-year TRACE trade may be needed, including trade price for each large interdealer trade and each large dealer buy trade. This data may already be available. In addition, the evaluation price may be attached at time of trade to each trade. For historical purposes, there may only be 3 PM and 4 PM prices. The logic may be as follows:
One-year Model Mid/Bid Price may be used for the same large interdealer trade and large dealer buy trade. These may be captured in the history above (16.2.1)
15.2.3 Confidence Interval
One-year confidence interval at the time of each historical large interdealer and large dealer buy trade may be needed for all dates up to Go Live -1.
15.2.4 LQD (AGZ for Agencies) Price at time of evaluation
One-year LQD price may be needed at the time of each evaluation:
16. Appendix D: Downgrade List of Agency and IG Notifications
There are two downgrade lists below for Agency and IG notifications respectively. If it is a “Yes” in Downgrade column, then when model price changes, these notifications may be downgrade from suspect to warnings following rules in Section 9.5. If it is a “No” in Downgrade column, then when model price moves, these notifications may stay as suspect. If it is a “N/A” in Downgrade column, then these notifications do not relate to model price or do not have a model price, so they may not change their notifications with model price. In an exemplary embodiment, only suspect notifications may be downgraded, all the warnings may remain the same.
| Downgrade | Description | ||
| ? | (headline) | Type | Reason (details) |
| Yes | Outlier | Suspect: | Outlier [Trade Side] trade |
| Buy/IDB | Market | received for [Trade Size] of | |
| Trade | Data | [CUSIP] at [Trade | |
| Timestamp]: [IDCO | |||
| Bid Spread] to | |||
| [IDCO Benchmark] | |||
| ([IDCO Bid Spread - | |||
| New Bid Spread]) | |||
| N/A | Incomplete | Suspect: | [Curve Name] is missing |
| Curve | Curve | sufficient data for points: | |
| Notification | <List of missing CMT points> | ||
| N/A | Discount Rate | Suspect: | Rate for [Month] of [New |
| <Minimum | Rates | Rate] is less than the minimum | |
| [Minimum Rate] | |||
| N/A | Discount Rate | Suspect: | Outlier quote received from |
| Outlier | Rate | [Source]: | |
| Quotes | |||
| N/A | Insufficient | Suspect: | Insufficient market data |
| Data for | Rates | to calculate Agency | |
| Discount | Discount Rates scale | ||
| Rates Scale | |||
| Yes | Negative | Suspect: | Negative yield(s) detected for |
| Yield | Evaluation | [CUSIP]: | |
| N/A | Unchanged | Suspect: | Spread has not changed for a |
| Curve Spread | Evaluation | particular ‘curve point’ | |
| on the issuer curve. | |||
| N/A | Unchanged | Suspect: | Spread has not changed for |
| Curve Spread | a particular ‘curve point’ | ||
| on the issuer curve. | |||
| Downgrade | Description | ||
| ? | (headline) | Type | Reason (details) |
| Yes | One-Sided | Suspect: | A one-sided ask quote for security |
| Ask Quote | Market | [security ID] [security description] | |
| Data | was received from default source [default | ||
| source name]. Review the | |||
| default source and determine if it may | |||
| be changed. | |||
| Yes | Outlier | Suspect: | The incoming [market data type] for |
| Market | [security ID] [security description] has | ||
| Data | exceeded the outlier threshold of [X] | ||
| by [Y]. | |||
| Yes | Stale Default | Suspect: | The default source [source name] has |
| Source | Market | exceeded the stale threshold of [X]. | |
| Data | Currently, it has been stale for [Y] | ||
| days. | |||
| Yes | Same-level | Suspect: | Notification may indicate that the |
| Default Source | Market | market data was previously rejected | |
| Quotes | Data | source is sending unchanged level. | |
| Yes | Assign Parent | Suspect: | The market data score for security |
| Parent/Child | [security ID] [security description] has | ||
| dropped below the suspect | |||
| configurable threshold of [10] | |||
| does not have a parent assigned. | |||
| Review the security and assign it to a | |||
| parent if possible. | |||
| Yes | MD Score | Suspect: | The Market Data Score has fallen |
| Fallen Below | Configuration | below a certain threshold that is | |
| a Certain | configurable by the user. | ||
| Threshold | |||
| Yes | Child BM | Suspect: | Child [security ID] [security |
| Change | Parent/Child | description] has changed to the | |
| [benchmark] benchmark. Verify the | |||
| Parent relationship is accurate or find | |||
| a new Parent. | |||
| No | Child | Suspect: | Child [security ID] [security |
| Corporate | Parent/Child | description] has had a corporate | |
| Action | action. Verify the Parent relationship | ||
| is accurate or find a new Parent. | |||
| Yes | Child Credit | Suspect: | Child [security ID] [security description] |
| Rating Change | Parent/Child | has changed to a [rating agency]'s [rating level] | |
| rating. Verify the Parent relationship is accurate | |||
| or find a new Parent. | |||
| Yes | Child | Suspect: | Child [security ID] [security description] |
| Redemption | Parent/Child | has a change in redemption date. Verify the | |
| Date Change | Parent relationship is accurate or find a new | ||
| Parent. | |||
| Yes | Large | Suspect: | The difference in benchmark yield between |
| Parent/Child | Parent/Child | Child [security ID] [security description] and | |
| BM Change | Parent [security ID] [security description] is | ||
| now [Y], which exceeds the change of | |||
| threshold of [X]. | |||
| Yes | Parent BM | Suspect: | Parent [security ID] [security description] |
| Change | Parent/Child | has changed to the [benchmark] benchmark. | |
| Verify the dependent security relationships | |||
| are accurate or find a new Parent for the | |||
| dependent securities. | |||
| Yes | Parent Credit | Suspect: | Parent [security ID] [security description] |
| Rating Change | Parent/Child | has changed to a [rating agency]'s [rating level] | |
| rating. Verify the dependent security | |||
| relationships are accurate or find a new Parent | |||
| for the dependent securities. | |||
| Yes | Parent | Suspect: | Parent [Parent security ID] [Parent |
| Matured | Parent/Child | security description] has matured. | |
| Select another Parent for [security | |||
| ID] [security description]. | |||
| Yes | Parent | Suspect: | Parent [security ID] [security description] |
| Redemption | Parent/Child | has a change in redemption date. Verify | |
| Date Change | the dependent security relationships are | ||
| accurate or find a new Parent for the | |||
| dependent securities. | |||
| Yes | Stale Offset | Suspect: | The offset of Child [security ID] [security |
| Parent/Child | description] and Parent [security ID] | ||
| [security description] has exceeded the stale | |||
| offset threshold of [X]. It has been stale for | |||
| [Y] days. | |||
| Yes | Stale Parent | Suspect: | Parent [security ID] [security description] |
| Parent/Child | has exceeded the stale Parent threshold of | ||
| [X]. It has been stale for [Y] days. | |||
| No | Manager | Suspect: | (see details in section 18.3 and 20.3.2) |
| Approval | Configuration | ||
| Required | |||
| No | Security | Suspect: | [security ID] [security description] has |
| Called | Worksheet | been called. | |
| No | Corporate | Suspect: | [security ID] [security description] has |
| Action | Worksheet | had a corporate action. | |
| No | Defaulted | Suspect: | [security ID] [security description] has |
| Security | Worksheet | defaulted. | |
| Yes | Undefaulted | Suspect: | [security ID] [security description] has |
| Security | Worksheet | un-defaulted {security no longer in | |
| default}. | |||
| Yes | Big Mover— | Suspect: | Manual quote of [security ID] |
| Manual | Worksheet | [security description] is [Y] different | |
| Enterred | from last published price; exceeded | ||
| Quotes | the big mover tolerance [X]. | ||
| Yes | Big Mover— | Suspect: | Enterred guidance of [security ID] |
| Manual | Worksheet | [security description] is [Y] different | |
| Enterred | from last published price; exceeded | ||
| Guidance | the big mover tolerance [X]. | ||
| No | Big Mover— | Suspect: | [security ID] [security description] has |
| Jump to Par | Worksheet | moved to par or redemption price | |
| since the last published price. | |||
| Yes | Unchanged | Suspect: | [security ID] [security description] has |
| Evaluation | Worksheet | not changed for [X] days, exceeding | |
| the unchanged threshold of [Y] days. | |||
| Yes | Retail Bond: | Suspect: | The incoming [market data type] for |
| Interdealer/ | Market | [security ID] [security description] has | |
| Dealer | Data | exceeded the outlier threshold of [X] | |
| Buy/Default | by [Y]. | ||
| Source | |||
| Outliers | |||
17. Appendix E: Fields of Worksheet and Quote screens
The spreadsheet below is an exemplary list of the fields displayed on Worksheet, Main Quote Market screen, Quote History screen, and Model Details screen.
| Quote | Model | |||||
| Field | Phase | WS | Quote | History | Details | |
| Model Rating Score | 1 | x | ||||
| Model YTM | 1 | x | ||||
| Model Updated Time | 1 | x | x | x | add to Quote | |
| screen, remove | ||||||
| from WS | ||||||
| Model Bid Spread | 1 | Model | Implied Bid | x | x | keep bid/mid in |
| Bid | Spread | worksheet | ||||
| Spread | IDCO Bid | |||||
| Spread | ||||||
| Model Mid Spread | 1 | Model | Implied Mid | x | x | |
| Mid | Spread | |||||
| Spread | IDCO Mid | |||||
| Spread | ||||||
| Model Ask Spread | 1 | Implied Ask | x | x | ||
| Spread | ||||||
| IDCO Ask | ||||||
| Spread | ||||||
| Model Bid Yield | 1 | Implied Bid | x | |||
| Yield | ||||||
| IDCO Bid | ||||||
| Yield | ||||||
| Model Mid Yield | 1 | Implied Mid | x | |||
| Yield | ||||||
| IDCO Mid | ||||||
| Yield | ||||||
| Model Ask Yield | 1 | Implied Ask | x | x | remove from WS | |
| Yield | ||||||
| IDCO Ask | ||||||
| Yield | ||||||
| Model Bid Price | 1 | Model | Bid Price | x | x | |
| Bid | Implied Bid | |||||
| Price | Price | |||||
| IDCO Bid | ||||||
| Price | ||||||
| Model Mid Price | 1 | Model | Mid Price | x | x | |
| Bid | Implied Mid | |||||
| Price | Price | |||||
| IDCO Mid | ||||||
| Price | ||||||
| Model Ask Price | 1 | Ask Price | x | x | keep bid/mid in | |
| Implied Ask | worksheet | |||||
| Price | ||||||
| IDCO Ask | ||||||
| Price | ||||||
| Model/Eval Diff | 1 | x | x | keep on WS | ||
| Model Market | 1 | x | ||||
| Adjustment | ||||||
| Model Trade-to-trade | 1 | x | ||||
| Change in Price | ||||||
| Model Price Status | 1 | x | Status of model | |||
| price | ||||||
| independent of | ||||||
| whether or not | ||||||
| it's being used | ||||||
| Model 3PM | 1 | x | x | x | x | keep bid/mid in |
| Bid/Mid/Ask Price | worksheet | |||||
| Model 4PM | 1 | x | x | x | x | remove from WS |
| Bid/Mid/Ask Price | ||||||
| Model 3PM | 1 | x | x | x | x | keep bid/mid in |
| Bid/Mid/Ask Spread | worksheet | |||||
| Model 4PM | 1 | x | x | x | x | remove from WS |
| Bid/Mid/Ask Spread | ||||||
| Model 3PM | 1 | x | x | x | remove from WS | |
| Bid/Mid/Ask Yield | ||||||
| Model 4PM | 1 | x | x | x | remove from WS | |
| Bid/Mid/Ask Yield | ||||||
| Model Confidence | 2 | x | remove from WS | |||
| Intervals | ||||||
| Model Confidence | 2 | x | remove from WS | |||
| Group | ||||||
| Model 3PM | 2 | x | remove from WS | |||
| Confidence Intervals | ||||||
| Model 4PM | 2 | x | remove from WS | |||
| Confidence Intervals | ||||||
| Source Type | 2 | x | x | remove from WS | ||
| Source Feed | 2 | x | x | remove from WS | ||
| Model 3PM | 2 | x | remove from WS | |||
| Confidence Group | ||||||
| Model 4PM | 2 | x | remove from WS | |||
| Confidence Group | ||||||
Embodiments comprise computer components and computer-implemented steps that will be apparent to those skilled in the art after reviewing the description herein. For example, calculations and communications can be performed electronically, and results can be displayed using a graphical user interface.
An overview of an exemplary such system is depicted in FIG. 32. Computers 100 communicate via network 110 with a server 130. The computers 100 may be any device operable to provide the functionality disclosed herein, including communicating with the one or more servers and/or other client devices, displaying information with one or more interface screens, collecting information from users thereof, retrieving data, storing data, etc. For example, the computers 100 may be a mobile phone, a smart phone or tablet, a personal computer (PC), as well as any dedicated computer apparatus. The front-end functionality may be provided with a browser or any other network communication application, or with special purpose software or “apps” designed specifically for accessing and providing the features disclosed herein. A plurality of sources of data 120-121 also communicate via network 110 with a server 130, processor 150, and/or other components operable to calculate and/or transmit information. Server(s) 130 may be coupled to one or more storage devices 140, one or more processors 150, and software 160.
Exemplary computers 100 according to at least one embodiment are shown. In one embodiment, the computers 100 include a bus or other communication mechanism for communicating information between components of the computers 100, and the processor 150 coupled with the bus for processing the information. The computers 100 may also include a main memory, such as a random access memory (RAM) or other dynamic storage device (e.g., dynamic RAM (DRAM), static RAM (SRAM), and synchronous DRAM (SDRAM)), coupled to the bus for storing information and instructions to be executed by processor 150. In addition, the main memory may be used for storing temporary variables or other intermediate information during the execution of instructions by the processor 150. The computers 100 may further include read only memory (ROM) or other static storage device (e.g., programmable ROM (PROM), erasable PROM (EPROM), and electrically erasable PROM (EEPROM)) coupled to the bus for storing static information and instructions for the processor 150. The at least one computer readable medium or memory may have stored thereon programmed instructions and/or contain data structures, tables, records, or other data described herein.
The computers 100 may also include a disk controller coupled to the bus to control the one or more storage devices 140 for storing information and instructions, such as a hard disk, and a removable media drive (e.g., floppy disk drive, read-only compact disc drive, read/write compact disc drive, compact disc jukebox, tape drive, and removable magneto-optical drive). The storage devices 140 may be added to the computers 100 using an appropriate device interface (e.g., small computer system interface (SCSI), integrated device electronics (IDE), enhanced-IDE (E-IDE), direct memory access (DMA), or ultra-DMA).
The computers 100 may also include special purpose logic devices (e.g., application specific integrated circuits (ASICs)) or configurable logic devices (e.g., simple programmable logic devices (SPLDs), complex programmable logic devices (CPLDs), and field programmable gate arrays (FPGAs)) designed to perform as the components described herein.
The computers 100 may also include a display controller coupled to a bus to control a display, such as a liquid crystal display (LCD), for displaying information via the one or more interface screens disclosed herein to a user thereof. In one exemplary embodiment, the computers 100 include at least one input device, such as a keyboard or a pointing device, for a computer user to interact with the computers 100 and to provide information/instructions to one or more processors, e.g., the processor 150. The pointing device, for example, may be a mouse, a trackball, a pointing stick, a track pad, a touch screen, etc. In addition, a printer may provide printed listings of data stored and/or generated by the computers 100.
The computers 100 generally perform a portion or all of the processing steps disclosed herein in response to the processors, e.g., the processor 150, executing one or more sequences of one or more instructions contained in a memory, such as the main memory. Such instructions may be read into the main memory from another computer readable medium, such as a hard disk or a removable media drive. The instructions stored may be in any form, including without limitation executable code, scripts, interpretable programs, dynamic link libraries (DLLs), Java classes, application program interfaces (APIs), complete executable programs, or a combination thereof.
The computers 100 may also include a communication interface coupled to the bus. The communication interface provides a two-way data communication coupling to the network 110 that is connected to, for example, a local area network (LAN), or to another communications network, such as the Internet. For example, the communication interface may be a network interface card to attach to any packet switched LAN. As another example, the communication interface may be an asymmetrical digital subscriber line (ADSL) card, an integrated services digital network (ISDN) card, or a modem to provide a data communication connection to a corresponding type of communications line. Wireless links may also be implemented. In any such implementation, the communication interface sends and receives electrical, electromagnetic, or optical signals that carry digital data streams representing various types of information.
The network 110 typically provides data communication through one or more networks to other data devices. For example, the network 110 may provide a connection to another computer through a local network (e.g., a LAN) or through equipment operated by a service provider, which provides communication services through a communications network. The local network and the communications network use, for example, electrical, electromagnetic, or optical signals that carry digital data streams, and the associated physical layer (e.g., CAT 5 cable, coaxial cable, optical fiber, etc). Moreover, the network 110 may provide a connection through a LAN or wireless network to a mobile device, such as a personal digital assistant (PDA), smartphone, laptop computer, or any other type of client device.
The system features may generally operated or otherwise made available by one or more providers via the one or more server 130. Some of the features of the system may be provided in conjunction with a third party or parties. For example, a provider may obtain information in connection with the one or more features through third party data providers, such as from a regulatory database (e.g., as the SEC's EDGAR), a commercial data provider (e.g., Bloomberg, Reuters, etc.), or any other public or private data source (e.g., securities exchanges). The provider server or servers may be coupled to one or more third party servers 130 and/or databases 140.
The provider or a third party may also allow companies, investors, intermediaries, or other users of the system to exchange trading or pricing information regarding trades or securities on one or more electronic trading platforms, marketplaces, and/or exchanges, such as via an electronic communication network (ECN), etc. In this instance, the system may further have access to one or more exchange or marketplace servers. That is, the computers 100 may receive data regarding trade orders directly from an exchange server or indirectly from a provider server.
The system may be implemented over any type of communications network, such as a local area network (LAN), a wide area network (WAN), the Internet, a telephone network (POTS), a wireless network, including cellular and Wi-Fi networks, or combinations of wired and/or wireless networks. For example, the computers 100 may access the servers 130 directly over a LAN/WAN 110. Alternatively or additionally, computers 100 may access the servers 130 indirectly over a LAN/WAN 110. The computers 100 are preferably configured or otherwise capable of transmitting and/or receiving communications to and/or from the one or more servers 130, including any items of data discussed herein. This may be accomplished with a communication interface that enables communication with a similarly equipped server computer, wirelessly, wired, or a combination thereof. In at least one embodiment, the computers 100 generally provide the front-end functionality and one or more servers 130 provide the back-end functionality discussed herein.
Calculations described herein, and equivalents, are, in an embodiment, performed entirely electronically. Other components and combinations of components may also be used to support processing data or other calculations described herein as may be evident to one of skill in the art. Server 130 may facilitate communication of data from a storage device 140 to and from processor(s) 150, and communications to computers 100. Processor 150 may optionally include or communicate with local or networked storage (not shown) which may be used to store temporary or other information. Software 160 can be installed locally at a computer 100, processor 150 and/or centrally supported for facilitating calculations and applications.
For ease of exposition, not every step or element of the present invention is described herein as part of a computer system, but those skilled in the art will recognize that each step or element may have a corresponding computer system or software component. Such computer system and/or software components are therefore enabled by describing their corresponding steps or elements (that is, their functionality), and are within the scope of one or more embodiments of the present invention.
Moreover, where a computer system is described or claimed as having a processor for performing a particular function, it may be understood by those skilled in the art that such usage may not be interpreted to exclude systems where a single processor, for example, performs some or all of the tasks delegated to the various processors. That is, any combination of, or all of, the processors specified in the description and/or claims could be the same processor. All such combinations are within the scope of one or more embodiments of the invention.
Alternatively, or in combination, processing and decision-making may be performed by functionally equivalent circuits such as a digital signal processor circuit or an application specific integrated circuit.
Many routine program elements, such as initialization of loops and variables and the use of temporary variables, are not described herein. Moreover, it may be appreciated by those of ordinary skill in the art that unless otherwise indicated, the particular sequence of steps described is illustrative only and can generally be varied without departing from the scope of the invention. Unless otherwise stated, the processes described herein are unordered—that is, the processes can be performed in any reasonable order.
All steps described herein may be understood by those skilled in the art as being capable of implementation in one or more embodiments by software, where feasible. Moreover, such software may be understood by those skilled in the art to be storable on a non-transitory computer readable medium and implementable by one or more computer processors.
While certain exemplary aspects and embodiments have been described herein, many alternatives, modifications, and variations may be apparent to those skilled in the art. Accordingly, exemplary aspects and embodiments set forth herein are intended to be illustrative, not limiting. Various modifications may be made without departing from the spirit and scope of the disclosure.
1. A computer system comprising:
one or more computer servers communicatively coupled to one or more external data sources,
said computer servers comprising at least one processor, a non-transitory computer-readable medium storing computer-readable instructions, a receiving component, a filtering component, and a pricing valuation model, the computer-readable instructions, when executed by the at least one processor, causing the computer system to:
execute a first portion of the pricing valuation model to determine a baseline pricing estimation, said first portion comprising a transaction cost adjustment component, a market adjustment component and value estimation component, and further causing the computer system to:
receive, via the receiving component, valuation data for a security from the one or more external data sources,
filter, via the filtering component, the received valuation data by removing outlier values according to a predetermined set of parameters,
identify, via the transaction cost adjustment component, one or more characteristics of the security in the filtered valuation data,
perform, via the transaction cost adjustment component, a first transaction cost adjustment regression calculation for the security based on a first set of characteristics from among the identified one or more characteristics in the filtered valuation data,
determine, via the transaction cost adjustment component, a transaction cost adjustment coefficient for the security based on the first transaction cost adjustment regression calculation,
determine, via the transaction cost adjustment component, a final transaction cost adjustment value for the security based on the transaction cost adjustment coefficient,
perform, via the market adjustment component, a first market adjustment regression calculation based on a second set of characteristics of the security from among the identified one or more characteristics of the filtered valuation data, said first market adjustment regression calculation independent of said transaction cost adjustment regression calculation,
determine, via the market adjustment component, a market adjustment coefficient for the security based on the first market adjustment regression calculation,
determine, via the market adjustment component, a final market adjustment value for the security based on the market adjustment coefficient, and
determine, by the value estimation component, the baseline pricing estimation of the security based on the final transaction cost adjustment value of the security and the final market adjustment value of the security, and
store said baseline pricing estimation; and
execute a second portion of the pricing valuation model to determine a current pricing estimation, in real-time or near real-time, said second portion further causing the computer system to:
monitor live market data from among the one or more external data sources,
retrieve the stored baseline pricing estimation,
determine the current pricing estimation, in real-time or near real-time, in response to changes detected in the monitored live market data, said current pricing estimation based on the retrieved baseline pricing estimation and on at least a portion of the monitored live market data, and
transmit the current pricing estimation to at least one computer.
2. A system as in claim 1, wherein the baseline pricing estimation is determined by resealing prices to terms of the final transaction cost adjustment value and the final market adjustment value.
3. A system as in claim 1, further comprising a confidence interval component that calculates a confidence interval for the baseline pricing estimation.
4. A system as in claim 3, wherein the confidence interval is calculated with approximately the same frequency as the baseline pricing estimation.
5. A system as in claim 1, wherein said received valuation data comprises ETF transaction price data.
6. A system as in claim 1, wherein said received valuation data comprises bond attribute data.
7. A system as in claim 1, wherein said received valuation data comprises credit rating data.
8. A system as in claim 1, wherein said received valuation data comprises TRACE data.
9. A system as in claim 1, wherein said baseline pricing estimation is updated by applying one or more coefficient adjusted ETF data updates.
10. A system as in claim 1, wherein the one or more characteristics are based on at least one of a distance between a bid and an ask of a transaction for the security and a size of the transaction for the security.
11. A system as in claim 1, wherein said changes in the live market data comprise at least one of new trades, cancelled trades, replacement trades, and price changes.