Expand model tag support: add GLM-5.1, simplify Anthropic IDs, scan tags anywhere in message

- Flink update_bars debouncing
- update_bars subscription idempotency bugfix
- Price decimal correction bugfix of previous commit
- Add GLM-5.1 model tag alongside renamed GLM-5
- Use short Anthropic model IDs (sonnet/haiku/opus) instead of full version strings
- Allow @tags anywhere in message content, not just at start
- Return hasOtherContent flag instead of trimmed rest string
- Only trigger greeting stream when tag has no other content
- Update workspace knowledge base references to platform/workspace and platform/shapes
- Hierarchical knowledge base catalog
- 151 Trading Strategies knowledge base articles
- Shapes knowledge base article
- MutateShapes tool instead of workspace patch
This commit is contained in:
2026-04-28 15:05:15 -04:00
parent d41fcd0499
commit 47471b7700
184 changed files with 9044 additions and 170 deletions

View File

@@ -0,0 +1,66 @@
---
description: "The value factor strategy for bonds selects bonds with the highest actual credit spread relative to a theoretically predicted spread from a cross-sectional regression, going long undervalued bonds in the top decile."
tags: [fixed-income, factor, value, credit-spread, regression]
---
# Value Factor
**Section**: 5.10 | **Asset Class**: Fixed Income | **Type**: Factor / Value
## Overview
"Value" in fixed income is defined by comparing a bond's observed credit spread to a theoretically predicted (fair value) credit spread. Bonds trading with a spread significantly above their predicted fair value are cheap (high value); those below are expensive. The strategy buys the top-decile bonds by value score.
## Construction / Mechanics
**Step 1: Estimate fair value spreads** via a cross-sectional linear regression across N bonds (i = 1,...,N):
```
S_i = Σ_{r=1}^K β_r · I_{ir} + γ · T_i + ε_i (410)
```
where:
- S_i: observed credit spread of bond i (bond yield minus risk-free rate)
- I_{ir}: dummy variable = 1 if bond i has credit rating r, 0 otherwise (K ≤ 21 ratings)
- T_i: maturity of bond i
- β_r, γ: regression coefficients (note: no separate intercept since Σ_r I_{ir} = 1 for each bond)
- ε_i: regression residual
The constraint:
```
Σ_{r=1}^K I_{ir} = 1 for all i (412)
```
(each bond has exactly one credit rating, so the intercept is absorbed into the rating dummies)
**Step 2: Compute fair value spread**:
```
S_i* = S_i - ε_i (411)
```
(the fitted value from the regression)
**Step 3: Compute value score** — either:
- V_i = ln(S_i / S_i*), or
- V_i = ε_i / S_i* = S_i / S_i* - 1
**Step 4: Select portfolio** — long bonds in the top decile by V_i (most undervalued).
## Payoff / Return Profile
- Profits when cheap bonds (high V_i) revert toward fair value, compressing their spreads.
- Returns driven by credit spread compression and coupon income.
- The strategy assumes mean-reversion in credit spreads around their rating- and maturity-implied fair value.
## Key Parameters / Signals
- S_i: observed credit spread (bond yield minus risk-free rate)
- S_i*: fair value credit spread from cross-sectional regression
- V_i = ln(S_i/S_i*) or V_i = S_i/S_i* - 1: value score
- Top decile by V_i: the portfolio selection criterion
## Variations
- Long-short: long top decile (cheap bonds), short bottom decile (expensive bonds).
- Separate regressions for Investment Grade and High Yield universes.
- Additional cross-sectional controls (e.g., industry, liquidity) can be added as regressors.
## Notes
- "Value" in fixed income is harder to define than in equities because bonds have finite lifetimes and their spreads are heavily influenced by credit ratings and maturity.
- The cross-sectional regression should be run on bonds within a comparable universe (e.g., only IG or only HY) to ensure meaningful comparisons.
- Credit spread data may be noisy; outliers from bonds near distress can distort the regression.
- Shorting corporate bonds is operationally challenging; the strategy is often implemented long-only.