RDP 201611: Identifying Interbank Loans from Payments Data Appendix B: Detailed Description of the Algorithm
December 2016
 Download the Paper 3.19MB
This appendix details the Furfinetype and creditfacility algorithms.
Before our algorithm begins, any transactions involving institutions that are known to not participate in the IBOC market are removed from the dataset, along with any transactions where the paying and receiving parties are the same.
Several parameters must be calibrated before running the algorithm (these are underlined in the following description).
B.1 The Furfinetype Algorithm
This part of the algorithm identifies transactions that could feasibly be considered the ‘first’ (initial payment) and ‘second’ (repayment) legs of an IBOC loan. It is implemented in Stata, using data from both RITS cash transfers and the Austraclear feeder system. There were 7,386,289 transactions between 4 January 2005 and 15 January 2016.
Step 1 Consider only rounded transactions as possible first legs of a loan (the baseline algorithm uses a minimum of $1 million, increasing in increments of $1 million). 919 687 transactions identified.
Step 2 Match up potential first legs with all possible second legs: any transaction between the same counterparties (but going in the reverse direction) occurring at any point within a set repayment period (the baseline algorithm searches over the following 15 days). 183 183 418 possible matches generated.
Step 3 Calculate a plausible range of interest payments as defined by the calibrated range of interest rates (the baseline algorithm has a range of 0 basis points around the target cash rate) and accounting for any changes in the target cash rate:^{[47]}
 singleday simple interest range = principal × [cash rate ± range]
 multipleday simple interest range = singleday simple interest range × number of days since first leg
 compound interest range = principal × [{(1 + [cash rate ± range]) ^ number of days} − 1].
Step 4 Identify matches associated with full repayment on one day:^{[48]}
 a single match with a second leg equal to principal + cumulative interest (simple or compound); or
 two matches (with the same first leg) – one with a second leg equal to principal, the other with a second leg equal to the cumulative interest payment.
Step 5 Identify matches (with the same first leg) that could be part of a rollover. These include matches with second legs equal to:
 repayment of principal along with an interest payment that does not cover multiple days (this interest payment can be combined with the principal or in a separate match); and
 daily interest payments (where these occur on days between the first leg and the date the principal is repaid).
Step 6 Drop all matches not identified in Steps 4 or 5. 151 801 possible matches remain.
Step 7 Drop any potential loans that have a repayment structure identified in Step 5 but do not have associated matches that sum to at least the necessary cumulative interest payments as calculated in Step 3. 102 802 possible loan sets remain.^{[49]}
Step 8 If multiple matches exist for a first leg (i.e. a first leg is matched with several independent second legs – ‘independent’ means matches that are not all part of the same loan set as identified in Steps 4 or 5):
 Keep the matches associated with loan sets that represent the shortest rollover length. 102 696 possible loan sets remain.
 If multiple matches remain (i.e. loan sets with the same rollover length), keep the matches for the loan set with the interest payment that is closest to the centre of the calculated range.^{[50]} 102 696 possible loan sets remain.
 If multiple matches remain, the loan sets must be identical (with respect to the value, term and interest rate, but not necessarily the repayment structure). So only the loan set associated with the first match processed by the algorithm is kept (this choice is arbitrary). 101 420 possible loan sets remain.
Step 9 At this point, each remaining first leg will be associated with a single loan set. But a secondleg transaction may still be matched with multiple first legs (i.e. as a second leg in multiple loan sets) – if so, only the match associated with the final first leg is kept (i.e. the second leg is associated with the most recent loan set). 101 274 possible loan sets remain.
Step 10 If a transaction appears as both a second leg and a first leg (in different loan sets), keep only the match where it is identified as a second leg (this choice is arbitrary). 100 269 possible loan sets remain.
Step 11 For all of the matches dropped in Step 9, the algorithm checks whether the first legs could be matched with a different (and as yet unmatched) second leg (such a match would have been dropped at Step 8). It does this by rerunning the algorithm excluding all the matches that remain after Step 10. 100 315 loan sets identified.
Since rollovers are actually consecutive overnight loans (without the corresponding RITS transaction), when calculating loan values, the algorithm counts rollovers as a new overnight loan on each day prior to the repayment of principal (except on weekends and public holidays).
B.2 The Creditfacility Algorithm
This part of our algorithm is implemented in Matlab, using data from RITS cash transfers and excluding transactions that are part of any matches identified from the Furfinetype algorithm.
Step 1 Construct a threedimensional array of gross daily ‘payments’. ‘Payments’ include all transactions that are greater than the minimum transaction size and that are a multiple of the calibrated increment. Cell (i,j,t) of this array will equal the sum of all payments going from Bank i, to Bank j, on day t.
Step 2 The key variable in the creditfacility algorithm is the ‘potential outstanding’ loans on each day and between each pair of banks. That is, the sum of all lending by Bank i to Bank j that is still outstanding on day t. So the ‘potential outstanding’ array has identical dimensions to the array created in Step 1.
Step 3 For t = 1, and for all i and j, if the payments from Bank i to Bank j exceed those from Bank j to Bank i, the payments from Bank i to Bank j minus those from Bank j to Bank i are entered into the potential outstanding array as the potential outstanding loans from Bank i to Bank j at t = 1. Otherwise, the entry in this cell is zero.
Step 4 For each day t > 1, and for all i and j:
 Compute the daily maximum and minimum interest on potential outstanding loans from Bank i to Bank j by multiplying the relevant potential outstandings at the end of the previous day by the target cash rate on the previous day, plus/minus the range of interest rates.^{[51]}
 The maximum and minimum amounts of day t interest outstanding are equal to the above constructed daily interest amounts plus the maximum and minimum (respectively) values of interest still outstanding from the previous day (which could be zero).

Search for any transactions on day t that go from Bank j to Bank
i and that are equal to either:
 an amount inbetween the day t maximum and minimum interest outstanding;
 an amount inbetween the maximum and minimum interest outstanding plus the principal outstanding on loans from Bank i to Bank j (from the potential outstanding array) at the end of the previous day; or
 an amount inbetween the maximum and minimum interest outstanding, plus part of the principal outstanding (which must be a multiple of the calibrated increment) on loans from Bank i to Bank j at the end of the previous day.

If such a transaction is found:^{[52]}
 In all cases, the interest outstanding (both maximum and minimum) between Banks i and j, on day t, is set to zero.
 When the transaction equals principal plus interest, the remaining principal outstanding on loans from Bank i to Bank j is zero. So the day t potential loans outstanding from Bank i to Bank j is just equal to the relevant day t payments (so the potential outstanding array is updated in the same manner as Step 3, just with a different t).

When the transaction equals the interest payment only, or with partial principal
repayment, the potential outstanding array is updated as follows.

Suppose Bank i's potential outstanding loans to Bank j
from the previous day, plus the day t payments (from Step 1) that
go from Bank i to Bank j, minus any partial principal
repayment, are greater than the equivalent sum going from Bank j to
Bank i. Then Bank i's potential outstanding loans to
Bank j on day t are equal to:
 Otherwise, Bank i's potential outstanding loans to Bank j on day t are equal to zero.^{[53]}

Suppose Bank i's potential outstanding loans to Bank j
from the previous day, plus the day t payments (from Step 1) that
go from Bank i to Bank j, minus any partial principal
repayment, are greater than the equivalent sum going from Bank j to
Bank i. Then Bank i's potential outstanding loans to
Bank j on day t are equal to:
 If no interest payment transactions are found at Step 4c, and the last day at which the interest owed to Bank i from Bank j was reset to zero (Step 4di) is more recent than t minus the calibrated repayment period (90 days for the baseline calibration), then the relevant cell in the potential outstanding array is updated in the same way as Step 4diii.^{[54]}
 However, if no interest payment transactions are found at Step 4c, and the last day at which the ‘interest owed to Bank i from Bank j’ was set to zero is equal to t minus the calibrated repayment period (henceforth t − c), then the algorithm sets the potential outstanding loans owed to Bank i from Bank j on day t − c equal to zero (in the potential outstanding array), and reruns Steps 4a–4e for Banks i and j on all days between t − c and t (inclusive).^{[55]}
Step 5 If a repayment transaction is either interestonly or a partial principal repayment, the remaining principal must form part of a new loan (that is eventually repaid). This step removes any potential outstandings where this is not the case.
Step 6 At this point, the potential outstanding array will only include payments that have identified repayments at some point within the set repayment period, and where the principal is either repaid in full or forms part of a new loan. So this array will be a summary of outstanding creditfacilitytype loans between each bank and on each day during the sample period.
Our algorithm output required some adjustments before analysis could be undertaken:
 With a repayment period of 15 days for the Furfinetype algorithm, the first 15 days of our sample and the last 15 days of our sample may not capture all loans outstanding on these days (e.g. if the firstleg transaction of a rollover occurs before the beginning of our sample or a secondleg transaction occurs after the end of our sample). Similarly, the creditfacility algorithm may incorrectly eliminate IBOC transactions within 90 days of the beginning of our sample, and will not be able to eliminate nonIBOC transactions that occur within 90 days of the end of our sample. As a result, all analyses in this paper are conducted on a truncated sample of 5 April 2005 to 16 October 2015 – of the 100,315 loan sets identified by the Furfinetype algorithm, 96,052 occur during this period.
 Since intragroup loans are explicitly excluded from the IBOC Survey, we removed IBOC loan transactions between banks known to have merged during our sample period (only transactions after the merger date were removed).
Footnotes
Interest rates expressed as an annual rate will need to be divided by 365. [47]
Each loan may incorporate several matches. This would occur if principal was repaid separately to the interest payment, for example. [48]
For the purposes of describing the algorithm, a ‘loan set’ includes all the loans associated with the same transactions. That is, a loan that is subsequently rolled over for four days will be five overnight loans, but one loan set. [49]
This is only relevant when running the algorithm with a nonzero interest rate range. [50]
If the potential outstanding loans from Bank i to Bank j on day t − 1 are zero, then both the maximum and minimum day t interest owed to Bank i from Bank j is zero. [51]
If more than one transaction is found at Step 4c, the algorithm chooses based on the ordering of the bullet points in Step 4c (this choice is arbitrary). [52]
Potential outstandings between banks can only go in one direction: if Bank j has loans outstanding from Bank i at the end of day t − 1, but then the payments from Bank j to Bank i on day t exceed those going in the other direction, these net payments are assumed to be a repayment of principal rather than a loan from Bank j to Bank i. [53]
Since some creditfacilitytype loans were found to remain outstanding for longer than 60 days, the repayment period for the creditfacility algorithm is 90 days (in the baseline calibration). As a result, caution should be exercised when running the creditfacility algorithm with a nonzero interest rate range, as the dollar value range of feasible return transactions widens as the number of days outstanding increases, increasing the probability of false positives. [54]
This step ensures that payments identified as a ‘potential loan’ can only influence the potential outstanding loans series for a limited amount of time (the repayment period) before it is designated as a nonloan. It also ensures that these nonloans do not bias the interest outstanding on each day (which would prevent the identification of true loans outstanding on these days). [55]