I am an Assistant Professor of Finance at Drexel University. My research interests are Credit Markets, Monetary Policy, and Financial Innovations. I received PhD in Finance from UPenn Wharton in 2023 and BAs in Econ, Math and Stat from UC Berkeley in 2015. My Chinese name is Chenbo Fang 方辰博.
chuck dot fang at drexel dot edu
Updated Bond-Compustat-CRSP Link from 1997 to 2023
University of Florida, Risk Theory Society, OFR Rising Scholars Conference, CUHK Shenzhen
Fed Board, Northern Finance Association, European Finance Association, NBER Summer Institute, SF Fed QSR, Oxford-VU Macro-Finance Conference, CityUHK Conference, Conference on Fixed Income Markets, UCLA Conference*, New York Fed*, Philly Fed*, Ohio State University*
AFA, Chicago Insolvency & Restructuring Conference, EFA*, CICF, UConn Conference*, Penn State*, EasternFA, UMiami*, MFA, Winter Finance Summit in Asia, Clemson*, SFBC
SNB-CIF Conference, Waseda Workshop, Columbia TLDR, MFA, FMA, JFDS Conference, UCSB-ECON DeFi Seminar, Wharton-INSEAD Doctoral Consortium, Cardiff Fintech Conference
R&R at Journal of Finance
WFA Brattle Group PhD Candidate Award for Outstanding Research
CEBRA, ICI, Iowa, McGill, WFA, Kentucky Conference, EasternFA, MFA, MBS, NHH, CUHK, HKU, SMU, NUS, BIS, Wisconsin, Drexel, Tsinghua PBCSF, Tsinghua SEM, PHBS, CKGSB, OFR PhD Symposium, FMA, RBFC
Please cite: Fang, Chuck, 2024, "Monetary Policy Amplification through Bond Fund Flows", Jacobs Levy Equity Management Center for Quantitative Financial Research Working Paper.
Many bonds are issued through subsidiaries that do not have the same identifiers (e.g. CUSIP6) as ultimate parents. E.g. Shell plc issues bonds through Shell International Finance BV.
19% of issuer CUSIPs change ultimate parents over time. E.g. CUSIP 362338AQ8 changed from Verizon (GVKEY 002136) to Frontier Communications (GVKEY 135484) in 2016.
I construct real-time bond-GVKEY link using the bond-ticker mapping from ICE and TRACE and the ticker-GVKEY mapping from Compustat Snapshot.
Bond ticker can differ from stock ticker. E.g. MIT refers to Massachusetts Institute of Technology in TRACE but Mason Industrial Technology in CRSP, CITI refers to Citigroup Inc in TRACE but Canterbury Consulting Group in CRSP, RBC refers to Royal Bank of Canada in TRACE but RBC Bearings Inc (a manufacturer of bearings) in CRSP.
Berkshire Hathaway owns many public subsidiaries. I link bonds to these subsidiaries instead of BRK. Same for Blackstone and MacAndrews & Forbes.
Occasionally TRACE ticker is the underwriter, e.g. 13123EAB0 in May 2012.
When an issuer has multiple parents, I assign the bonds to the majority parent. For example, MGM Growth Properties Operating Partnership LP was owned by both MGM Resorts International and MGM Growth Properties LLC and its bonds are on reported on both firms' 10Ks. I assign the bonds to the majority owner MGM Resorts International.
This link covers 29,253 foreign issuers (e.g. BMW) and issuers without public equity (e.g. Sprint under Softbank), which are not covered in CRSP.
This link covers 8,862 144A bonds (e.g. CUSIP 36164NFH3), which are currently not covered by WRDS Bond-CRSP Link.
This link goes from 1997 (ICE start date) to 2023 (current TRACE end date).
I hand check the following violations and make manual corrections (download):
Sum of total bond outstanding from Mergent FISD should be similar to total bonds and notes from Capital IQ.
Sum of total bond outstanding from Mergent FISD should be less than total debt outstanding from Compustat (DLC + DLTT).
Coverage of foreign bonds is not great. For example, Apple's 2022 EUR bond 037833AU4 and 2026 EUR bond 037833AV2 (both issued in 2014) are not covered.
Some bonds should be there but missing, e.g. JPM 5.875 2016-06-13 48121CJN7.
The FOREIGN_CURRENCY flag is wrong sometimes. For example, 026657AG1 is denominated in Euro but not flagged.
There are duplicates:
Apple's 2025-05-24 EUR bond shows up three times, twice as ISIN XS1619312173 and once with the wrong CUSIP 037833CW8 (which corresponds to the 2029 EUR bond).
Peabody Energy Corp's 2022-03-31 bond is duplicated, once as CUSIP 704549AR5 and once as CUSIP 70457LAA2. So is its 2025-03-31 bond.
OFFERING_AMT and AMOUNT_OUTSTANDING are sometimes off by 1000 times. E.g. for CUSIP 841504AA1, OFFERING_AMT should be 375 million instead of 375 thousand. Updates to AMOUNT_OUTSTANDING can be missing. E.g. for CUSIP 87264AAP0, the redemption call in March 2021 is missing. This is problematic if the analysis is specifically about amount of (net) bond issuances. The following cases are error prone, and I recommend substitute their values with other databases (e.g. Refinitiv), the logic being that other databases are unlikely to make the same exact mistakes.
OFFERING_AMT is more than 100 times the maximum of AMOUNT_OUTSTANDING or vice versa
ANOUNT_OUTSTANDING is negative
ANOUNT_OUTSTANDING is positive but EFFECTIVE_DATE is beyond MATURITY and there is no default
AMOUNT_OUTSTANDING is positive but there is no trade in TRACE in the neighboring years
Many private placements have both 144A CUSIP and RegS CINS. RegS CINS is usually missing. E.g. for ISSUE_ID 771231, CUSIP shows its 144A CUSIP 29878TDD3, not its RegS CINS B3821S3C9.
Some holdings are incomplete. E.g., InvestmentId F000010MGC only reports 10% of its holdings for all non-quarter-end months. To filter out incomplete holdings, require the sum of holdings to be similar to total net assets.
nbr_shares / shares can have the wrong scale. For example: crsp_portno 1032215 report_dt 2015-07-31 security_name Bahamas 6.625% 15-May-2033 cusip 056732AE nbr_shares 12600000000 market_val 744000. The following cases are likely errors. I recommend substitute these with other databases. E.g. if CRSP has error, use Morningstar.
Reported price (market_val / nbr_shares x 100) is >10x or <0.1x the price from CRSP Treasury or TRACE
Loans are frequently reported as zero-coupon bonds, e.g. "CAESARS RESORT COLLECTION LLC 0.000% 22-Dec-2024". My guess is that when coupon is missing, 0.000% is automatically inserted. At the same time, there are bonds with legitimate 0.000%, e.g. "Germany 0.000% 18-Oct-2024".
The definition of a fund can be tricky:
DFA International Value I/II/III/V have the same crsp_portno 1022574 in CRSP but four different FundId/MasterPortfolioId in Morningstar
iShares S&P 500 Index Fund (BSPIX) and Transamerica Stock Index (TSTFX) have the same crsp_portno (as well as managers), the same MasterPortfolioId, but different FundId
Vanguard Total Bond Market Index Inv (VBMFX) and Vanguard Total Bond Market II Idx Inv (VTBIX) are near identical in terms of style, managers, returns
New DealScan-Compustat Link
Please cite: Chuck Fang and Greg Nini, 2025, "Go with the Flow: Debt Structure Changes and Monetary Policy Transmission".
This link file maps LPC DealScan borrower_id to Compustat GVKEY, using the same fuzzy matching method as Chava and Roberts (2008).
Each tranche_id can correspond to multiple tranche_active_date because of amendments (identifiable via tranche_o_a).
Each instance can be associated with multiple collections: one 10K can contain balance sheet, income statement, and etc.
Each collection can be associated with multiple instances: Apple's 2010Q4 balance sheet can come from press release, S-4, 10K, 10K/A.
Some debt structure is heavily abridged and therefore uninformative (e.g. for calculating debt maturity). For example, companyid 273607 2010Q3 lumps nearly all debt together under "Other Borrowings", 2012Q2/Q3 lumps a couple of long-term bonds together under "Other Borrowings", 2014Q3 (financialcollectionid 1705308346) lumps a couple of long-term bonds together under "Notes Payable". As another example, Apple's debt structure remains the same from 2018Q4 to 2019Q1, but 2018Q4 has all bonds separated out whereas 2019Q1 lumps many bonds together.
componentid can change over time. For example, 923510253 and 926071562 refer to the same bond, 923510253 is used for 2021-09 and 2022-03, and 926071562 is used for 2021-12 and 2022-06. Therefore, we cannot interpolate data for each component.
dataitemvalue is in filing currency, e.g. Apple ¥250.0 billion 0.35% notes.
periodenddate can fall on the beginning of next month. For example, the periodenddate for Apple's 2019Q2 10Q is 2019-07-01.
Maximum of credit line amount (including undrawn credit) is reported sometimes, which can be detected by filtering for dataitemname containing the word "Maximum".
interestratetype is not very reliable. For example, componentid 923800215 is shown as fixed rate but it is clear that the rate is changing according to annual reports.
Total debt might not agree with Compustat because of write-down / restructuring / reorganization.
Here is a real-time link between GVKEYs and their parent GVKEYs.
For car companies, commonly there is a financing arm which is also public. For example, Toyota Motor Corp (019661) has a publicly traded financing subsidiary Toyota Motor Credit Corp (015136).
For energy companies, commonly there is a publicly traded master limited partnership (MLP), for tax purposes. For example, Cheniere Energy Inc (029453) owns the MLP Cheniere Energy Partners L.P. (176914).
Fiscal date vs calendar date. For example, Walmart Inc's fiscal Q4 is November, December and January (according to DATADATE and FYR). We should map its Q4 financials to end-of-January stock/bond prices.
Cash flow variables (e.g. CAPXY) are cumulative over the fiscal year. Therefore, to calculate CAPX in fiscal Q3, we should use fiscal Q3 CAPXY – fiscal Q2 CAPXY.
See above for Bond-Compustat Link and DealScan-Compustat Link.
A rating can last a very long time. For example, S&P gave Walmart a rating of AA in 1983, and this has not changed since. In other words, a rating remains in place from its inception till it is overwritten by a new rating.
Mergent FISD sometimes does not include terminal ratings. For example, S&P gave a rating of NR for 000361AA3 at its redemption but this rating is missing in Mergent FISD.
Mergent FISD ratings are wrong sometimes. For example, 313400624 has never been rated AAA by S&P.
Rule 17g-7 (effective 2012) requires NRSROs to make their ratings publicly available on their websites: S&P, Moody's, Fitch
Do not report CINs
Do not report the order if there are multiple ratings on the same day, e.g. 745181Q42
A CUSIP can have a separate underlying rating (e.g. SPUR in S&P) that excludes enhancements.
Does not include strips or floating rate notes, which Mergent FISD does
Price should be 0.20 instead of 20 for 00202RAB2 on 2015-03-10
Some variables show up as either RCFD or RCON. For example, total assets show up as RCFD2170 for FFIEC-031 filers (large banks with foreign offices) and RCON2170 for FFIEC-041 and FFIEC-051 filers (medium and small banks with domestic offices only).
Some variables show up both in RCFD (consolidated, domestic plus foreign offices) and in RCON (domestic offices only), such as 0010 (cash holdings).