36 — Munis, Convertibles, Preferreds, and the Wider Investable Universe¶
Learning objectives¶
Compute tax-equivalent yield for municipal bonds; compute a convertible bond's conversion value and premium; value a preferred stock by reusing the equity valuation module's Gordon growth function at zero growth; build survey-level fluency in sovereign/EM debt, alternative investments, and ESG approaches. This closes the narrower Tier B/C gaps a curriculum-completeness audit found - the last of four planned workstreams from that audit.
Free learning pack¶
reference/fixed_income/municipal_bonds.mdreference/fixed_income/convertible_bonds.mdreference/fixed_income/preferred_securities.mdreference/fixed_income/sovereign_and_em_debt.mdreference/alternatives/alternatives_overview.mdreference/alternatives/esg_and_sustainable_investing.md
Do not search for more material until these are insufficient.
PREDICT¶
A muni bond yields 3.00%. An investor in a 32% marginal federal tax bracket is comparing it to a taxable corporate bond. Without calculating: does the corporate bond need to yield more or less than 3.00% to actually be the better after-tax choice for this investor?
Formula (tax-equivalent yield)¶
tax_equivalent_yield = muni_yield / (1 - tax_rate)
from pm.fixed_income.munis import tax_equivalent_yield
muni_yield, tax_rate = 0.03, 0.32
# MANUAL FIRST:
tey = None # tax_equivalent_yield(muni_yield, tax_rate)
print("tax-equivalent yield:", tey)
# CHECK (uncomment after your attempt):
# import numpy as np
# assert np.isclose(tey, 0.044117647, atol=1e-8)
PREDICT (convertible bonds)¶
A $1,000-par convertible bond has a conversion ratio of 20 (20 shares per bond) and trades at a price of 950. The stock trades at $45. Is the bond trading above or below its immediate conversion value - and is that "above" or "below" actually a sign of mispricing?
Formula (conversion value and premium)¶
conversion_value = conversion_ratio * stock_price
conversion_premium = (bond_price - conversion_value) / conversion_value
from pm.fixed_income.convertibles import conversion_premium, conversion_value
conversion_ratio, stock_price, bond_price = 20, 45.0, 950.0
# MANUAL FIRST:
cv = None # conversion_value(conversion_ratio, stock_price)
cp = None # conversion_premium(bond_price, cv)
print("conversion value:", cv, " conversion premium:", cp)
# CHECK (uncomment after your attempt):
# import numpy as np
# assert np.isclose(cv, 900.0)
# assert np.isclose(cp, 0.055555556, atol=1e-8)
Was your PREDICT right?¶
The bond trades above its conversion value - that's normal, not a sign of mispricing. It reflects the remaining time value of the embedded option to convert later at a potentially better stock price, plus the bond's downside floor if the stock falls. A premium near zero would mean the option has almost no remaining time value - typically because the stock is already trading well above the conversion price.
Formula (preferred stock - reusing an existing function)¶
A non-callable, fixed-dividend preferred is a perpetuity:
value = dividend / required_return. This is exactly
pm.equity.valuation.gordon_growth_value at growth_rate=0 - no new
function needed.
from pm.equity.valuation import gordon_growth_value
dividend, required_return = 2.0, 0.08
# MANUAL FIRST:
preferred_value = None # gordon_growth_value(dividend_next=dividend, required_return=required_return, growth_rate=0.0)
print("preferred stock value:", preferred_value)
# CHECK (uncomment after your attempt):
# import numpy as np
# assert np.isclose(preferred_value, 25.0)
PREDICT (sovereign / EM debt)¶
A PM is choosing between a hard-currency (USD-denominated) emerging market sovereign bond and a local-currency bond from the same country. Which one carries direct currency risk, and which one's investor is taking a "purer" credit-only bet on the government?
PREDICT (alternatives)¶
A private equity fund reports a return of -8% in its first year (fees and early write-downs) but a +22% annualized return over its full 10-year life. What is this pattern called, and why doesn't it appear in any of this repo's daily-return portfolio notebooks?
PREDICT (ESG)¶
A fund mandate says it "excludes tobacco and weapons producers entirely"
- is that negative screening, ESG integration, or impact investing? What would have to change about the mandate for it to be one of the other two instead?
Reference¶
reference/fixed_income/municipal_bonds.md
reference/fixed_income/convertible_bonds.md
reference/fixed_income/preferred_securities.md
reference/fixed_income/sovereign_and_em_debt.md
reference/alternatives/alternatives_overview.md
reference/alternatives/esg_and_sustainable_investing.md
Promote¶
Use pm.fixed_income.munis.tax_equivalent_yield,
pm.fixed_income.convertibles.conversion_value/conversion_premium,
and pm.equity.valuation.gordon_growth_value only after your own
implementation.
Test¶
pytest tests/test_munis_and_convertibles.py tests/test_equity.py
ORAL CHECK¶
Explain to a PM why a preferred stock's valuation needed no new
src/pm function - what does that tell you about the relationship
between a "new" instrument and "new" math? Then explain, in plain
language, why negative screening, ESG integration, and impact investing
can produce three genuinely different portfolios from the same starting
universe, even though all three get called "ESG investing."
Try /tutor municipal bonds or /tutor convertible bonds for an
adaptive walkthrough.