Progress¶
Current stage¶
The PM/FICC foundation is in place, extended one phase beyond FICC into equity portfolio management (Phase 13), and Phase 3 (active management) is now fully built out - it previously had only active weights and tracking error despite a reference page describing information ratio, IC, breadth, and the Fundamental Law as if they existed. A correctness-fix pass also closed several bugs a detailed audit surfaced (Black-Litterman round-trip, NaN propagation, silent optimizer failures, MBS domain errors), each with a regression test. That same audit's remaining findings are now closed too: the optimizer can trace an efficient frontier and find the tangency/min-TE portfolios (previously promised by a notebook title and never implemented), ex-post risk analytics (realized volatility/tracking error, downside deviation, MCTE/CCTE, group risk decomposition) fill the gap where everything used to be ex-ante only, and a pedagogy review's findings (thin early notebooks, zero plots, zero self-checks, a Day-0-shaped hole for true beginners, a stub capstone) are addressed: notebooks 02/03/05/07/11/12 rebuilt with self-checks and plots, a new Day 0 orientation notebook, reference/glossary.md, and a real capstone notebook using the three data CSVs no other notebook touched.
Current health¶
- Test status: passing
- Last validated:
pytest -q - Result:
198 passed - Notebooks: 37, all valid JSON (
python scripts/check_repo.py)
Completed: rates/credit/mortgages PM-practitioner layer + roadmap¶
A user-requested audit found the fixed-income coverage strong on pricing
and risk mechanics but missing the practitioner/market-structure layer:
carry-and-rolldown was a broken ROADMAP Phase 5 promise, and TBA/dollar
roll, repo specialness, TIPS breakevens, credit indices, and fundamental
credit analysis had zero coverage. All three legs are done: rates
(carry/rolldown, repo and financing, TIPS/breakevens), credit
(fundamental credit analysis/leverage-coverage ratios, credit
indices/CDX-iTraxx, leveraged loans), and mortgages (TBA/dollar roll
implied financing rate, specified pools, CMO/REMIC structuring) - each
with code (where genuinely codeable), reference pages, notebooks, and
verified external sources, all wired in. Also caught and fixed
mid-mortgages-work: the Credit PR had shipped its three new reference
pages without adding matching rows to docs/mastery.md or the /tutor
routing table - fixed there, and /pmexpert's confirmed-count level table
(stale at "all 55" since before the Rates PR) updated to the true total
of 70 concepts. Closing the loop:
docs/rates_credit_mortgages_roadmap.md sequences the full path (bond
pricing through TBA/dollar roll and CMO/REMIC structuring) with a
reference page, notebook, and verified resource at every step - the
user's original ask that started this whole workstream.
Completed: curriculum-completeness audit¶
A repo-wide audit (not scoped to fixed income this time) found the
curriculum strong across portfolio theory, risk, and every FICC/equity
topic built so far, but with real gaps from a PM perspective: zero
options/volatility coverage anywhere, no asset-allocation framing
(SAA/TAA, liability-driven investing) on top of the existing optimization
machinery, no performance-measurement fundamentals (time-weighted vs.
money-weighted return, GIPS), and narrower gaps in munis, sovereign/EM
debt, convertibles, preferred securities, alternatives/private markets,
ESG, and use_cases/ coverage. All four planned workstreams are done:
glossary backfill, options and volatility (Phase 14: Black-Scholes, all
five Greeks each cross-checked against a finite-difference bump, implied
volatility, Black-76), asset allocation/performance measurement (Phase
15: money_weighted_return verified against the classic TWR-vs-MWR
divergence case; funded_ratio/surplus for LDI, reusing existing
dv01/hedge_ratio), and the wider investable universe (Phase 16:
municipal bonds tax_equivalent_yield, convertible bonds
conversion_value/conversion_premium, preferred securities reusing
gordon_growth_value at zero growth with no new function needed;
sovereign/EM debt, alternatives, and ESG conceptual; plus 4 new use
cases - FX hedge, commodity futures roll, MBS extension scenario,
fundamental credit review - closing every gap use_cases/index.md's
"Future" list had named).
Completed modules¶
- Foundations bootcamp structure in place
- Core PM analytics library implemented under
src/pm/ - Fixed-income, optimization, integration, FX/commodities, equity, and active-management notebooks present
- Reference pages added across portfolio foundations, optimization, risk, FICC, equity, and active management (information ratio, information coefficient, Fundamental Law, efficient frontier, downside risk, MCTE/group risk) - each with real external sources
docs/OVERVIEW.mdadded as a quick-read repo summary/pmexpertrebuilt as a single self-contained trainer (lesson/quiz/scenario/exam/status modes) withdocs/mastery-guide.mdas its walkthrough- Correctness-fix pass on
src/pm(Black-Litterman round-trip, NaN propagation, silent solver failures, MBS domain errors) - Efficient frontier / tangency portfolio / min-tracking-error optimizers added; notebook 04 now actually plots a frontier (previously titled but empty)
- Ex-post risk analytics added (realized volatility/tracking error, downside deviation, MCTE/CCTE, group risk decomposition); notebook 19 now plots the VaR/ES tail and checks a risk model's assumption against realized data
- Zero-to-proficiency pedagogy pass: notebooks 02/03/05/07/11/12 rebuilt (self-check asserts, plots, PREDICT before code);
notebooks/foundations/00_orientation.ipynbadded for true beginners (environment check, learning-cycle explainer,w'Sigma*wby hand);reference/glossary.mdadded (49 terms, every link verified);notebooks/integration/30_capstone_portfolio_review.ipynbadded, the repo's first real capstone, usingdata/mock_portfolio.csv,mock_benchmark.csv, andmock_bonds.csvfor the first time - Rates PM-practitioner layer:
carry_and_rolldown.md/repo_and_financing.md/tips_and_breakevens.md(each testedsrc/pmcode + real external sources), notebook 31, closing the broken "carry and roll" ROADMAP Phase 5 promise - Credit PM-practitioner layer:
fundamental_credit_analysis.md/credit_indices.md/leveraged_loans.md(leverage/coverage ratios and CDX/iTraxx intrinsic-value/basis are testedsrc/pmcode; leveraged loans and covenant/rating-agency mechanics are conceptual-only, same honesty pattern as OAS), notebook 32 - Mortgages PM-practitioner layer:
tba_and_dollar_roll.md(testedsrc/pmcode -dollar_roll_implied_financing_rate, verified against a real published worked example),specified_pools.mdandcmo_remic_structuring.md(conceptual-only, same honesty pattern as OAS/leveraged loans), notebook 33 - closes the rates/credit/mortgages PM-practitioner-layer audit entirely docs/rates_credit_mortgages_roadmap.mdadded: a single sequenced zero-to-hero path across all of rates, credit, and mortgages, every step linking its reference page, notebook, and a verified external resource - wired intodocs/README.md,docs/learning-paths.md,docs/OVERVIEW.md, rootREADME.md, andmkdocs.ymlnavreference/glossary.mdbackfilled: 12 new Fixed Income terms (carry, rolldown, repo/specialness, on-the-run/off-the-run, TIPS/breakevens, leverage/coverage ratios, credit indices, leveraged loans, TBA/dollar roll, specified pools, CMO/REMIC) plus new FX and Commodities sections that didn't exist before, despite both asset classes already having real reference-page content - all 64 links verified to resolve- Phase 14 (derivatives and options) built:
src/pm/options.py(Black-Scholes call/put pricing, delta/gamma/vega/theta/rho, implied volatility viabrentq, Black-76) - every Greek independently verified against a finite-difference bump of the pricing function itself, not just the closed-form formula, and Black-76 verified to reproduce Black-Scholes exactly at the matching forward price; 5 new reference pages (black_scholes_and_greeks.md,put_call_parity.md,implied_volatility.md,options_on_forwards_and_rates_options.md,option_strategies.md- the last two conceptual for the curve/annuity layer and strategy-composition reasons stated on each page) and notebook 34, closing this repo's single largest coverage gap found by the completeness audit - Phase 15 (asset allocation and performance measurement) built:
pm.returns.money_weighted_return(solved viabrentq, verified against the classic CFA textbook TWR-vs-MWR divergence case - a flat 0% time-weighted return alongside a roughly -26.8% money-weighted return) andpm.allocation.funded_ratio/surplusfor liability-driven investing (reusing existingdv01/hedge_ratiofor duration matching rather than new formulas); 3 new reference pages (performance_measurement.md,liability_driven_investing.md,strategic_and_tactical_asset_allocation.md- the last two conceptual, since SAA/TAA reapplies existing optimization tools and GIPS composite construction is a compliance layer on top of the existingcumulative_return) and notebook 35, closing the completeness audit's second-largest gap - Phase 16 (wider investable universe) built:
pm.fixed_income.munis.tax_equivalent_yield,pm.fixed_income.convertibles.conversion_value/conversion_premium, and a confirmation that preferred-stock valuation needs no new function at all (gordon_growth_valueatgrowth_rate=0is exactly the perpetuity formula, verified intests/test_equity.py); 4 new reference pages (municipal_bonds.md,convertible_bonds.md,preferred_securities.md,sovereign_and_em_debt.md) plus a newreference/alternatives/section (alternatives_overview.md,esg_and_sustainable_investing.md, both conceptual survey pages) and notebook 36; 4 new use cases (FX hedge, commodity futures roll, MBS extension scenario, fundamental credit review) close every itemuse_cases/index.md's "Future" list had named except multi-asset risk-off and risk-budget breach - this closes the curriculum-completeness audit entirely
In progress¶
- Documentation consolidation and onboarding cleanup
- Keeping the root README and docs hub aligned with the actual repo state
- Maintaining a clean learning-first workflow around each new concept
Next recommended action¶
Open:
- curriculum/bootcamp_01_foundations/README.md
- notebooks/foundations/01_returns_and_compounding.ipynb
Completion rule¶
Only mark a module complete when: - the manual exercise has been attempted, - the relevant tests pass, - the reference page has been reviewed or updated, - the concept can be explained in plain PM language.
Branch / PR tracking¶
Current branch:
feat/tier-b-c-gaps-munis-converts-preferred-em-alts-esg-usecases
Current issue: Use issue/branch naming for each learning unit
Current PR:
None open — #1 (Phase 13 equity), #2 (correctness-fix pass), #3 (Phase 3 active management), #4 (efficient frontier/ex-post risk), #5 (zero-to-proficiency pedagogy), #6 (rates PM-practitioner layer), #7 (credit PM-practitioner layer), #8 (mortgages PM-practitioner layer), #9 (rates/credit/mortgages roadmap), #10 (glossary backfill), #11 (derivatives and options), and #12 (asset allocation and performance measurement) merged to main
Last pushed checkpoint: Not pushed yet — local commits only