Fixed Income Structured logo

Fixed Income Structured

Community
JoelLewis
fixed-income-structured

Analyze structured fixed income products including mortgage-backed securities, asset-backed securities, and CLOs. Use when the user asks about MBS, ABS, CLOs, CDOs, prepayment risk, tranching, or waterfall structures. Also trigger when users mention 'mortgage bonds', 'agency MBS', 'pass-through securities', 'PSA prepayment speed', 'negative convexity', 'extension risk', 'contraction risk', 'CMO tranches', 'securitization', or ask how structured products redistribute credit and prepayment risk.

Overview

PublisherJoelLewis
Repositoryfinance_skills
Skill namefixed-income-structured
Stars
217
Forks
37
Bundled files
1
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 1 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by JoelLewis on GitHub. Read the source before you install it.

Installation

Install the Fixed Income Structured AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/JoelLewis/finance_skills/tree/main/plugins/wealth-management/skills/fixed-income-structured
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/JoelLewis/finance_skills.git /tmp/finance_skills
mkdir -p .claude/skills
cp -r /tmp/finance_skills/plugins/wealth-management/skills/fixed-income-structured .claude/skills/fixed-income-structured
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Fixed Income Structured in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Fixed Income Structured on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Fixed Income Structured is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Fixed Income — Structured Products

Core Concepts

MBS Pass-Throughs

A pool of mortgages whose cash flows (principal, interest, prepayments) are passed through to investors on a pro-rata basis. Agency MBS (Ginnie Mae, Fannie Mae, Freddie Mac) carry a government or GSE guarantee against credit losses, isolating prepayment risk as the primary concern. Non-agency MBS lack this guarantee and carry both credit and prepayment risk.

Prepayment Risk

Borrowers can refinance when rates drop, returning principal early. This creates negative convexity — when rates fall, MBS prices rise less than comparable Treasuries because prepayments accelerate and shorten the bond's effective life. Prepayment risk has two faces:

Contraction risk: Rates fall, prepayments accelerate, duration shortens. Investors receive principal back when reinvestment rates are lower.

Extension risk: Rates rise, prepayments slow, duration extends. Investors are locked into below-market coupons for longer than expected.

PSA Prepayment Model

The Public Securities Association model provides a benchmark prepayment speed:

100% PSA = ramp from 0% CPR to 6% CPR linearly over the first 30 months, then constant at 6% CPR thereafter.

At 150% PSA, all speeds are multiplied by 1.5 (e.g., the plateau is 9% CPR). At 200% PSA, the plateau is 12% CPR.

CPR and SMM

CPR (Conditional Prepayment Rate): Annualized prepayment rate as a percentage of the remaining pool balance.

SMM (Single Monthly Mortality): Monthly prepayment rate.

SMM = 1 - (1 - CPR)^(1/12)

Weighted Average Life (WAL)

WAL = sum(t × Principal_t) / Total Principal. Unlike maturity, WAL accounts for the timing of principal repayments (both scheduled and prepayments). WAL is shorter than maturity for amortizing securities and is sensitive to prepayment assumptions.

CMO Tranches

Collateralized Mortgage Obligations redistribute MBS cash flows into tranches with different risk profiles:

Sequential pay: Principal flows to the first tranche until retired, then the second, etc. Earlier tranches have shorter duration, later tranches have longer duration.

PAC (Planned Amortization Class): Provides a predictable principal schedule within a band of prepayment speeds (e.g., 100-250% PSA). Stability comes at the expense of companion/support tranches that absorb prepayment variability.

Support/Companion tranches: Absorb excess or deficit prepayments to protect PAC tranches. Highly volatile duration.

ABS (Asset-Backed Securities)

Securitized pools of non-mortgage assets:

  • Auto loans: amortizing, relatively predictable cash flows
  • Credit cards: revolving, with a revolving period followed by a controlled amortization period
  • Student loans: longer duration, income-driven repayment creates uncertainty

CLOs (Collateralized Loan Obligations)

Tranched portfolios of leveraged loans (typically 150-250 loans). AAA tranches benefit from significant subordination (30-40% of the structure below them). Equity tranches receive residual cash flows after all senior tranches are paid. Waterfall tests (overcollateralization and interest coverage tests) redirect cash flows to protect senior tranches when the portfolio deteriorates.

Waterfall Structure

Cash flows are distributed by seniority: senior tranches receive interest and principal first, mezzanine next, equity last. If pool performance deteriorates, lower tranches absorb losses first (subordination protects senior tranches). Overcollateralization (OC) tests and interest coverage (IC) tests trigger cash flow diversions when breached.

OAS for Structured Products

OAS is essential for MBS because it captures prepayment optionality. Standard modified duration is inappropriate for MBS — use effective duration (computed via OAS models) or empirical duration. Monte Carlo simulation of interest rate paths and corresponding prepayment responses is the standard valuation approach for MBS.

Key Formulas

FormulaExpressionUse Case
SMM from CPRSMM = 1 - (1-CPR)^(1/12)Monthly prepayment rate
CPR from SMMCPR = 1 - (1-SMM)^12Annualize monthly rate
PSA CPR (month t, t<=30)CPR = 6% × (t/30) × PSA/100Ramping prepayment model
PSA CPR (month t, t>30)CPR = 6% × PSA/100Plateau prepayment model
WALsum(t × Principal_t) / Total PrincipalAverage principal timing
OAS PriceP = E[sum CF_t(path) / (1+s_t+OAS)^t]MBS valuation

Worked Examples

Example 1: Convert PSA to CPR

Given: 150% PSA, month 20 Calculate: CPR and SMM in month 20 Solution: At 100% PSA, month 20: CPR = 6% × (20/30) = 4.0% At 150% PSA: CPR = 4.0% × 1.5 = 6.0% SMM = 1 - (1 - 0.06)^(1/12) = 1 - (0.94)^(0.0833) = 1 - 0.99486 = 0.00514 = 0.514%

In month 20 at 150% PSA, approximately 0.514% of the remaining pool balance prepays each month, equivalent to 6.0% annualized.

Example 2: CLO Tranche Analysis

Given: A CLO with $500M total assets. AAA tranche = $325M (65%), AA = $50M (10%), A = $37.5M (7.5%), BBB = $25M (5%), BB = $12.5M (2.5%), Equity = $50M (10%). Calculate: Subordination level for the AAA tranche Solution: Subordination below AAA = AA + A + BBB + BB + Equity = $50M + $37.5M + $25M + $12.5M + $50M = $175M Subordination % = $175M / $500M = 35%

The AAA tranche has 35% subordination — the portfolio would need to lose more than 35% of its value before AAA investors suffer any principal loss. This substantial credit enhancement is why CLO AAA tranches have historically experienced zero defaults.

Common Pitfalls

  • Ignoring negative convexity of MBS — MBS underperform Treasuries in both rallies (contraction) and selloffs (extension)
  • Using modified duration for MBS — use effective/OAS duration instead, as cash flows change with rates
  • Assuming constant prepayment speeds — speeds vary with rates, seasonality, borrower demographics, and housing turnover
  • Not understanding that waterfall mechanics affect tranche risk differently — senior and subordinate tranches of the same deal have very different risk profiles

Cross-References

  • fixed-income-sovereign (wealth-management plugin): the Treasury curve and duration/convexity concepts
  • fixed-income-corporate (wealth-management plugin): credit spread concepts applied to non-agency MBS and CLOs
  • real-assets (wealth-management plugin): real estate market fundamentals underlying MBS
  • asset-allocation (wealth-management plugin): structured products in multi-asset portfolios

Running the Script

bash
uv run scripts/fixed_income_structured.py            # run the demo (uses PEP 723 inline deps)
uv run scripts/fixed_income_structured.py --verify   # check demo outputs against the worked examples (exit 1 on mismatch)
python3 scripts/fixed_income_structured.py            # alternative (requires: pip install numpy)

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_structured.py.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Fixed Income Structured AI skill do?

Analyze structured fixed income products including mortgage-backed securities, asset-backed securities, and CLOs. Use when the user asks about MBS, ABS, CLOs, CDOs, prepayment risk, tranching, or waterfall structures. Also trigger when users mention 'mortgage bonds', 'agency MBS', 'pass-through securities', 'PSA prepayment speed', 'negative convexity', 'extension risk', 'contraction risk', 'CMO tranches', 'securitization', or ask how structured products redistribute credit and prepayment risk.

Why use Fixed Income Structured on TypingMind?

Because you install it once and use it with any model. Fixed Income Structured is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Fixed Income Structured in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/JoelLewis/finance_skills/tree/main/plugins/wealth-management/skills/fixed-income-structured. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Fixed Income Structured?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Fixed Income Structured?

As many as you like. As long as a model supports skills, you can use Fixed Income Structured with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Fixed Income Structured AI skill free?

Yes. It is published on GitHub by JoelLewis under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇