fixed-income-corporate — Claude Code skill: setup and features
Equips coding assistants to evaluate corporate credit, compute OAS and Z-spread, and model default probabilities across debt tiers.
npx skills add JoelLewis/finance_skills --skill fixed-income-corporate -a claude-codeWhat fixed-income-corporate does
This skill provides financial formulas and decision guidance for corporate debt. It covers credit spreads like G-spread, Z-spread, and OAS alongside recovery rates across seniority ranks. The agent learns to calculate yield-to-worst for callable bonds instead of relying strictly on yield-to-maturity.
A runnable demo lives at scripts/fixed_income_corporate.py. You can execute it with uv run scripts/fixed_income_corporate.py using inline metadata or via standard Python. Without numpy and scipy installed, running it via python3 will fail.
Using a basic G-spread on callable debt conceals call risk. That makes OAS essential whenever early redemption options exist.
What it helps with
- calculate Z-spread and OAS for corporate bonds
- estimate credit portfolio expected loss from PD and LGD
- evaluate yield-to-worst on callable paper
- assess fallen angel risks at the BBB rating boundary
Example prompts for the agent
- Compare the G-spread and Z-spread on a 7-year note yielding 5.8% against a 4.5% Treasury
- Compute expected loss given a 2% default probability and 60% loss given default on $1,000,000 exposure
- Determine yield-to-worst for this callable corporate bond
How to install fixed-income-corporate
1Skills CLI (Vercel)
npx skills add JoelLewis/finance_skills --skill fixed-income-corporate -a claude-code2Manually: put the files in place
~/.claude/skills/fixed-income-corporate/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/fixed-income-corporate/
1Skills CLI (Vercel)
npx skills add JoelLewis/finance_skills --skill fixed-income-corporate -a codex2Manually: put the files in place
.agents/skills/fixed-income-corporate/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add JoelLewis/finance_skills --skill fixed-income-corporate -a cursor2Manually: put the files in place
.cursor/skills/fixed-income-corporate/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install JoelLewis/finance_skills fixed-income-corporate2Manually: put the files in place
.github/skills/fixed-income-corporate/SKILL.md1Skills CLI (Vercel)
npx skills add JoelLewis/finance_skills --skill fixed-income-corporate -a gemini-cli2Platform CLI
gemini skills install https://github.com/JoelLewis/finance_skills --path plugins/wealth-management/skills/fixed-income-corporateManually: put the files in place
.devin/skills/fixed-income-corporate/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add JoelLewis/finance_skills --skill fixed-income-corporate -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about fixed-income-corporate
How to install fixed-income-corporate in Claude Code?
Run npx skills add JoelLewis/finance_skills --skill fixed-income-corporate -a claude-code. The file downloads into ~/.claude/skills/fixed-income-corporate/SKILL.md.
What does the fixed-income-corporate skill do?
It teaches the agent core corporate bond analytics, spread math, credit migration dynamics, and covenant structures. It also includes worked verification problems.
What dependencies does the demo script require?
Running via uv run handles dependencies automatically. Plain python3 execution requires numpy and scipy installed in your environment.
Source text
SKILL.md · MIT
---
name: fixed-income-corporate
description: "Analyze corporate bonds and credit instruments including investment grade and high yield debt. Use when the user asks about corporate bonds, credit spreads (OAS, Z-spread, G-spread), credit ratings, default probabilities, callable bonds, or private credit. Also trigger when users mention 'junk bonds', 'fallen angel', 'yield-to-worst', 'covenant analysis', 'CDS spreads', 'recovery rates', 'direct lending', 'mezzanine debt', 'BBB downgrade risk', or ask how to evaluate corporate credit risk."
---
# Fixed Income — Corporate
## Core Concepts
### Credit Spreads
Compensation for default risk, liquidity risk, and downgrade risk above the risk-free rate. Multiple spread measures exist with increasing precision:
**G-spread (Government Spread):** Bond yield minus interpolated Treasury yield of the same maturity. Simple but assumes a flat term structure between benchmark maturities.
**Z-spread (Zero-Volatility Spread):** The constant spread added to each point on the risk-free spot rate curve such that the sum of discounted cash flows equals the bond's market price. Superior to G-spread because it accounts for the full shape of the term structure.
**OAS (Option-Adjusted Spread):** For bonds with embedded options, OAS = Z-spread minus the value of the embedded option. OAS represents the "true" credit compensation after removing the option component. Requires an interest rate model to compute.
### Credit Ratings
AAA/AA/A/BBB are investment grade. BB/B/CCC/CC/C/D are high yield (speculative grade). The BBB/BB boundary is the most consequential threshold — many institutional mandates prohibit sub-investment-grade holdings. A downgrade across this boundary ("fallen angel") forces selling by constrained investors.
### Migration Matrix
A transition matrix shows the probability of moving from one rating to another over a 1-year horizon. A BBB-rated issuer has roughly 85-90% probability of remaining BBB, 4-5% chance of upgrade, 4-5% chance of downgrade, and a small probability (~0.2%) of default. Migration matrices are published annually by rating agencies.
### Default Probability, Loss Given Default, and Recovery Rate
- PD = Probability of Default over a given horizon
- LGD = Loss Given Default (percentage of exposure lost)
- Recovery Rate (RR) = 1 - LGD
- Expected Loss: EL = PD × LGD × EAD (Exposure at Default)
Recovery rates vary by seniority: senior secured (60-65%), senior unsecured (40-50%), subordinated (20-30%).
### Callable Bonds
The issuer can redeem the bond early. Call schedules specify prices and dates. Yield-to-call (YTC) is calculated using the call date and call price. Yield-to-worst (YTW) is the minimum of YTM and all possible YTCs. For callable bonds, OAS is the appropriate spread measure (not G-spread or Z-spread).
### Covenants
**Maintenance covenants:** Tested periodically (e.g., quarterly). Issuer must maintain financial ratios at all times. Common in bank loans.
**Incurrence covenants:** Tested only when the issuer takes a specific action (e.g., issues new debt). Common in bond indentures. Key covenants include leverage ratio (Debt/EBITDA), interest coverage (EBITDA/Interest), and restricted payments.
### Private Credit
Direct lending by non-bank lenders to middle-market companies. Offers an illiquidity premium of 150-400bp over comparable syndicated loans. Typically features stronger covenant protection than public market deals. Valuations are mark-based (quarterly), which smooths reported volatility.
### CDS (Credit Default Swaps)
A derivative where the protection buyer pays a periodic spread and receives payment upon a credit event. CDS spreads can be used to derive market-implied default probabilities. CDS spreads are often more responsive to credit deterioration than bond spreads.
## Key Formulas
| Formula | Expression | Use Case |
|---------|-----------|----------|
| G-spread | Bond Yield - Interpolated Treasury Yield | Simple spread measure |
| Z-spread | Constant spread s: P = sum CF_t / (1+s_t+s)^t | Full curve spread |
| OAS | Z-spread - Option Cost | Spread for callable bonds |
| Expected Loss | EL = PD × LGD × EAD | Credit loss estimation |
| Recovery Rate | RR = 1 - LGD | Recovery from default |
| Yield-to-Worst | min(YTM, YTC_1, YTC_2, ...) | Conservative yield measure |
## Worked Examples
### Example 1: Compare Z-spread vs G-spread
**Given:** A 7-year corporate bond yields 5.8%. The 7-year interpolated Treasury yield is 4.5%. The Z-spread (computed using the full spot curve) is 118bp.
**Calculate:** G-spread and compare to Z-spread
**Solution:**
G-spread = 5.8% - 4.5% = 1.30% = 130bp
Z-spread = 118bp
The G-spread (130bp) exceeds the Z-spread (118bp) by 12bp. This difference arises because the G-spread uses a single interpolated benchmark point while the Z-spread properly accounts for the shape of the entire yield curve. In a steep curve environment, G-spread tends to overstate the true spread.
### Example 2: Expected Loss Calculation
**Given:** PD = 2% (annual), LGD = 60%, EAD = $1,000,000
**Calculate:** Expected annual loss
**Solution:**
EL = PD × LGD × EAD
EL = 0.02 × 0.60 × $1,000,000
EL = $12,000
The expected annual credit loss is $12,000, or 1.2% of the exposure. This represents the actuarial cost of credit risk — the spread must at least cover this expected loss, with additional compensation for unexpected losses and risk aversion.
## Common Pitfalls
- Using G-spread for callable bonds — use OAS instead, which removes the option component
- Ignoring liquidity premium in spread analysis — part of the spread compensates for illiquidity, not just default risk
- Rating agency lag vs market-implied credit quality — CDS spreads often move before rating actions
- Assuming recovery rates are constant — they vary significantly by seniority and economic cycle (lower in recessions)
## Cross-References
- **fixed-income-sovereign** (wealth-management plugin): the Treasury curve used as the risk-free benchmark
- **fixed-income-structured** (wealth-management plugin): CLOs and structured credit products
- **alternatives** (wealth-management plugin): private credit as an alternative investment
- **asset-allocation** (wealth-management plugin): credit allocation in multi-asset portfolios
## Running the Script
```bash
uv run scripts/fixed_income_corporate.py # run the demo (uses PEP 723 inline deps)
uv run scripts/fixed_income_corporate.py --verify # check demo outputs against the worked examples (exit 1 on mismatch)
python3 scripts/fixed_income_corporate.py # alternative (requires: pip install numpy scipy)
```
The demo prints the calculations covered above; its values match the worked examples in this skill. Run `--help` for a list of the classes and functions. For programmatic use, import the module rather than running it — the demo only executes under `python fixed_income_corporate.py`.
© JoelLewis · MIT · JoelLewis/finance_skills