Credit ratings: questions and traps
Each question looks like a lookup, and each has an obvious wrong answer. Only the question text is sent to the model, which must give its answer as a typed JSON field. The trap and the key are never sent. Keys are computed from the data, and each base key is checked against one written by hand, so the two can't silently disagree. The keys shown are the base data's; the other datasets compute their own.
The implicit meanings
| Implicit meaning | What it says | How the data sets it | Questions |
|---|---|---|---|
| When | A rating holds from one action to the next, so "the rating on a date" is the latest action on or before it | Kestrel Energy (E01) was A- from March 2024 and BBB from June 2025 (Q1). Marlow Utilities' (E14) actions are out of date order in the file (Q11). Halden Foods (E12) had no rating before its first action in February 2024 (Q14) | Q1, Q11 to Q16 |
| Outlook and Watch | An outlook or a Rating Watch says where a rating may go. Neither is a rating change | Kestrel was affirmed at BBB with a Negative outlook in 2026, not downgraded (Q2). Orrin Bank (E06) was placed on Watch Negative in September 2026 at an unchanged A- (Q17). Marlow's Watch ended with its May 2026 affirmation (Q16, Q18) | Q2, Q16 to Q19 |
| Withdrawn isn't defaulted | WD is a withdrawal, often for commercial reasons; RD and D are defaults |
Pellam Retail's (E07) rating was withdrawn "for commercial reasons" in May 2026 (Q20, Q21). Saxby Shipping (E08) went to RD after a distressed debt exchange (Q8, Q22) |
Q8, Q20 to Q22 |
| What is rated | Issuer, instrument, short-term, local-currency: each is a different rating | Kestrel is BBB, its subordinated 2031 note BB+ (Q3, Q24) and its short-term rating F2 (Q23). Corvenia Power (E15) is A in foreign currency and A+ in local (Q26). Valdoria Telecom (E05) has no single rating (Q10) | Q3, Q10, Q23 to Q27 |
| Ceilings | A Country Ceiling caps foreign-currency ratings in a country. It isn't the sovereign's rating | Valdoria's ceiling is BB, and the Republic has no issuer rating (Q29). Valdoria Telecom is BB in foreign currency, at the ceiling, and BBB- in local (Q6). Corvenia's ceiling is A, its own rating BBB+ (Q28) | Q6, Q28 to Q31 |
| Groups and support | Ownership comes from parent links, not names; guaranteed debt carries the guarantor's risk | Halden Leasing (E11) sits under Halden Bank (E10), under Halden Group (E09) (Q32). Its note is guaranteed by Halden Bank, not the group (Q33). Halden Foods (E12) shares the name but not the group (Q34). Northwind Finance's (E04) note is guaranteed by Northwind Holdings (Q5) | Q5, Q32 to Q36 |
| Who is who | Same LEI, same entity; similar names, different entities | Northwind Holdings has two records with one LEI, E02 and E03, and its latest action is on the second (Q4, Q39). Orrin Bank AG (E06) and Orrin Bancorp Inc (E13) have different LEIs (Q38) |
Q4, Q37 to Q40 |
The local meanings
Each rule is stated only in the ontology, and none can be guessed from a code's name or from general conventions.
| Local rule | How the data sets it | Where the ontology states it | Questions |
|---|---|---|---|
| QA records are test data: they and their actions are ignored | Brindle Capital (E16) comes from the QA system, with rating actions that look real: an assignment and a 2026 downgrade | lad:sourceSystem |
Q41 (also Q9, Q37, Q40) |
| Where records disagree, RESEARCH holds for country, RATINGS for name and parent | Halden Bank's RATINGS record (E10) puts it in Germany, its RESEARCH record (E17) in Luxembourg | lad:sourceSystem; lad:country |
Q42, Q43 |
XVD is the Valdorian dollar, CVK the Corvenian krone: local-currency debt, not capped |
Valdoria Telecom's 2027 note (I07) pays in XVD and is rated BBB-, above Valdoria's BB ceiling, which caps only foreign-currency ratings |
lad:currency |
Q44, Q45 |
CO is a credit opinion, which isn't a rating |
Halden Leasing's only issuer-level action is a CO at BBB |
lad:type-CO |
Q46 |
EX is an expected rating, which isn't a rating until it's assigned |
Corvenia Power's 2034 note (I08) has only an expected A | lad:action-EX |
Q47, Q48 |
The trap: Time. A rating holds from one action to the next, so 'the rating on a date' is the latest action on or before it.
Expected: rating A- · graded by code
The trap: Outlook versus rating. An affirmation with a negative outlook is not a rating change.
Expected: downgraded no · graded by code
The trap: Issuer versus instrument rating. A subordinated instrument is notched below the issuer.
Expected: investment_grade no, rating BB+ · graded by code
The trap: Identity. Two records with the same LEI are one entity, whatever their names.
Expected: outlook positive · graded by code
The trap: Roles. Issuer versus guarantor; a finance subsidiary's guaranteed debt carries the guarantor's risk.
Expected: risk_of E02, rating A · graded by code
The trap: Ceilings. A Country Ceiling is a cap on foreign-currency ratings, not a rating of the sovereign or of the company.
Graded against a checklist:
- Names the Country Ceiling for Valdoria (BB) as the cause
- Says the ceiling caps foreign-currency ratings and not local-currency ones
The trap: Action types. Outlook changes, Watch placements and withdrawals are not downgrades.
Expected: issuers ['E08', 'E10'] · graded by code
The trap: Default semantics. RD is a default; WD (withdrawn) is not a credit event.
Expected: entities ['E08'] · graded by code
The trap: Everything at once. Identity, withdrawal, instrument versus issuer, ceiling versus rating.
Expected: count 12 · graded by code
The trap: Ambiguity. 'the rating' of a company is several ratings; the investment-grade line is BBB-.
Expected: investment_grade depends · graded by code
The trap: Time. Marlow's actions are not in date order in the file.
Expected: rating BBB+ · graded by code
The trap: Time. The rating on a date before a later downgrade.
Expected: rating A- · graded by code
The trap: Action types over time. A Watch placement and an affirmation are not downgrades.
Expected: count 1 · graded by code
The trap: Time. Before its first action, an entity has no rating.
Expected: rating none · graded by code
The trap: Time. The downgrade came later in 2026.
Expected: rating A- · graded by code
The trap: Watch versus rating. A Watch placement and an affirmation leave the rating where it was.
Expected: changed no · graded by code
The trap: Watch versus rating. Rating Watch Negative is not a downgrade.
Expected: downgraded no · graded by code
The trap: Watch over time. Marlow's Watch ended with its 2026 affirmation.
Expected: issuers ['E06'] · graded by code
The trap: Outlooks. Set by affirmations, without a rating change.
Expected: issuers ['E01', 'E09'] · graded by code
The trap: Withdrawn is not defaulted..
Expected: in_default no · graded by code
The trap: Withdrawals. A withdrawn rating is no rating.
Expected: entities ['E07'] · graded by code
The trap: Default semantics. RD is a default; WD is not.
Expected: entities ['E08'] · graded by code
The trap: Rating types. The short-term rating is a different rating, on a different scale.
Expected: rating F2 · graded by code
The trap: Issuer versus instrument. BBB, at the issuer, even though one note is below investment grade.
Expected: investment_grade yes · graded by code
The trap: Instrument ratings. Counted on the instrument's own rating, not its issuer's.
Expected: count 5 · graded by code
The trap: Currency basis. The local-currency rating is a separate rating.
Expected: rating A+ · graded by code
The trap: Instrument versus issuer. The subordinated note sits below the issuer.
Expected: rating A- · graded by code
The trap: Ceiling versus sovereign rating. Corvenia's ceiling (A) is not its rating (BBB+).
Expected: rating BBB+ · graded by code
The trap: Ceilings. Valdoria has a Country Ceiling and no issuer rating.
Expected: rating none · graded by code
The trap: Ceilings. Which ratings the cap binds.
Expected: entities ['E05', 'E15'] · graded by code
The trap: Ceilings. The sovereign's own rating can be below its ceiling, and a local-currency rating above it.
Expected: any no · graded by code
The trap: Groups. The chain of parents, two levels up.
Expected: parent E09 · graded by code
The trap: Roles. The guarantor is the parent, not the ultimate parent.
Expected: risk_of E10, rating BBB+ · graded by code
The trap: Groups. A shared name is not a shared group.
Expected: same_group no · graded by code
The trap: Groups. Membership comes from parent links, not names.
Expected: count 3 · graded by code
The trap: Groups and identity. Two records of the parent are one entity.
Expected: count 2 · graded by code
The trap: Identity. Records with the same LEI are one entity.
Expected: count 16 · graded by code
The trap: Identity. Similar names, different LEIs.
Expected: same no · graded by code
The trap: Identity. The latest action sits on the other record.
Expected: rating A · graded by code
The trap: Identity and withdrawal. Northwind counted once, Pellam not at all, the QA record ignored.
Expected: count 5 · graded by code
The trap: Local rule. QA records are test data and describe no real entity.
Expected: rating none · graded by code
The trap: Local rule. Where records disagree on country, the RESEARCH record holds.
Expected: country LU · graded by code
The trap: Local rule. The RESEARCH record's country holds over the RATINGS record's, so Halden Bank is in LU.
Expected: count 1 · graded by code
The trap: Local codes. XVD is the Valdorian dollar.
Expected: local_currency yes · graded by code
The trap: Local codes and ceilings. Local-currency debt is not capped, so BBB- above a BB ceiling is allowed.
Expected: above_ceiling no · graded by code
The trap: Local type. A credit opinion (CO) is not a rating.
Expected: issuer_rating no · graded by code
The trap: Local action. An expected rating (EX) is not a rating until assigned.
Expected: rating none · graded by code
The trap: Local action. The expected rating doesn't count.
Expected: count 7 · graded by code
Asked of ownership paths only
The ownership paths dataset asks the 48 questions above, keyed on its own data, and 13 more that follow links. Their keys below are computed from that dataset.
| What they ask | Questions |
|---|---|
| Ultimate parent, and the number of levels to it, across a RESEARCH record | Q49, Q50 |
| Group size, with the QA record and a stale parent claim left out | Q51, Q52, Q53 |
| Members domiciled in VD, by the domicile rule | Q54 |
| Exposure: rated entities with a VD entity anywhere above them | Q55 |
| The lowest rating anywhere in a group | Q56 |
| Nearest common ancestor of two members | Q57 |
| Guarantees that cross groups, and whose risk a note carries | Q58, Q60 |
| Depth in the tree, and below-investment-grade members of a group | Q59, Q61 |
The trap: Paths and identity. A chain of parents several levels long, with one link naming a RESEARCH record of the parent.
Expected: parent E5001 · graded by code
The trap: Paths. The length of the chain, counted across the RESEARCH record.
Expected: count 6 · graded by code
The trap: Paths. Every level of the tree, the QA record under the top left out, the RESEARCH record not counted twice.
Expected: count 58 · graded by code
The trap: Paths and sources. A RESEARCH record names this top as a parent, but RATINGS holds for parent links.
Expected: count 19 · graded by code
The trap: Sources. The stale parent from RESEARCH is overruled by the RATINGS record.
Expected: same_group no · graded by code
The trap: Paths and the domicile rule. One member is in VD by its RESEARCH record, which holds for country.
Expected: entities ['E5106', 'E5124', 'E5130'] · graded by code
The trap: Exposure through ownership. Walk up every chain, with domicile by the RESEARCH rule.
Expected: count 31 · graded by code
The trap: Paths and time. The whole tree, each member's latest action.
Expected: rating BB- · graded by code
The trap: Paths. The nearest common ancestor, below the top of the group.
Expected: entity E5002 · graded by code
The trap: Paths and roles. Guarantee links compared with ownership chains.
Expected: entities ['E5145'] · graded by code
The trap: Paths. Depth in the tree, across the RESEARCH record.
Expected: count 12 · graded by code
The trap: Roles across groups. The guarantor belongs to another group.
Expected: risk_of E5145, same_group no · graded by code
The trap: Paths and test data. The QA record under the top has a B- rating, and is ignored.
Expected: count 19 · graded by code