Skip to content

Commit 12e61ca

Browse files
Add writing style rule to CLAUDE.md, replace remaining double-dashes
- Add "Writing Style" section to CLAUDE.md: no em-dashes or double-dashes, use commas, periods, colons, or semicolons instead - Replace remaining -- with commas in README.md and docs/index.md Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 7c5dd15 commit 12e61ca

3 files changed

Lines changed: 16 additions & 12 deletions

File tree

CLAUDE.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,10 @@ The Python package is `lifecycle_allocation` (import name) / `lifecycle-allocati
8484
- **Commit as:** Engineer Investor (`egr.investor@gmail.com`)
8585
- Always use `git -c user.name="Engineer Investor" -c user.email="egr.investor@gmail.com" commit` when committing
8686

87+
## Writing Style
88+
89+
- **No em-dashes or double-dashes.** Never use `` or `--` as punctuation in prose, markdown, or notebooks. Use a comma, period, colon, or semicolon instead.
90+
8791
## Edge Cases to Handle
8892

8993
- `W <= 0`: default to raising an error with guidance

README.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,20 @@ A Python library implementing a practical lifecycle portfolio choice framework i
1010

1111
## Why This Matters
1212

13-
Most portfolio allocation "rules" are single-variable heuristics: 60/40, 100-minus-age, target-date funds. They ignore the biggest asset most people own -- their future earning power. A 30-year-old software engineer with $100k in savings and 35 years of income ahead is in a fundamentally different position than a 30-year-old retiree with the same $100k.
13+
Most portfolio allocation "rules" are single-variable heuristics: 60/40, 100-minus-age, target-date funds. They ignore the biggest asset most people own, their future earning power. A 30-year-old software engineer with $100k in savings and 35 years of income ahead is in a fundamentally different position than a 30-year-old retiree with the same $100k.
1414

15-
This library takes a **balance-sheet** view of your finances. Your investable portfolio is only part of your total wealth. Future earnings (human capital) act like a bond-like asset, and accounting for them changes how much stock risk you should take. The result is a theoretically grounded, personalized allocation that evolves naturally over your lifecycle -- no arbitrary rules required.
15+
This library takes a **balance-sheet** view of your finances. Your investable portfolio is only part of your total wealth. Future earnings (human capital) act like a bond-like asset, and accounting for them changes how much stock risk you should take. The result is a theoretically grounded, personalized allocation that evolves naturally over your lifecycle, no arbitrary rules required.
1616

1717
## Features
1818

19-
- **Core allocation engine** -- Merton-style optimal risky share adjusted for human capital
20-
- **4 income models** -- flat, constant-growth, age-profile, and CSV-based
21-
- **Strategy comparison** -- benchmark against 60/40, 100-minus-age, and target-date funds
22-
- **Visualization suite** -- balance sheet waterfall, glide paths, sensitivity tornado, heatmaps
23-
- **CLI interface** -- generate full reports from YAML/JSON profiles
24-
- **YAML/JSON profiles** -- declarative investor configuration
25-
- **Leverage support** -- two-tier borrowing rate model with configurable constraints
26-
- **Mortality adjustment** -- survival probability discounting for human capital
19+
- **Core allocation engine**: Merton-style optimal risky share adjusted for human capital
20+
- **4 income models**: flat, constant-growth, age-profile, and CSV-based
21+
- **Strategy comparison**: benchmark against 60/40, 100-minus-age, and target-date funds
22+
- **Visualization suite**: balance sheet waterfall, glide paths, sensitivity tornado, heatmaps
23+
- **CLI interface**: generate full reports from YAML/JSON profiles
24+
- **YAML/JSON profiles**: declarative investor configuration
25+
- **Leverage support**: two-tier borrowing rate model with configurable constraints
26+
- **Mortality adjustment**: survival probability discounting for human capital
2727

2828
## Install
2929

@@ -89,7 +89,7 @@ This produces `allocation.json`, `summary.md`, and charts in `output/charts/`.
8989
2. Estimate **human capital** H as the present value of future earnings + retirement benefits, discounted by survival probability and a term structure
9090
3. Adjust: `alpha = alpha* x (1 + H/W)`, clamped to [0, 1] (or [0, L_max] with leverage)
9191

92-
Young workers with high H/W ratios get higher equity allocations. As you age and accumulate financial wealth, H shrinks relative to W and the allocation naturally declines -- producing a lifecycle glide path from first principles rather than arbitrary rules.
92+
Young workers with high H/W ratios get higher equity allocations. As you age and accumulate financial wealth, H shrinks relative to W and the allocation naturally declines, producing a lifecycle glide path from first principles rather than arbitrary rules.
9393

9494
## Example Output
9595

docs/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# lifecycle-allocation
22

3-
**lifecycle-allocation** is a Python library for computing data-driven stock/bond allocation recommendations based on lifecycle portfolio theory. Instead of relying on rules of thumb like "100 minus your age," it treats your future earning power as an asset -- your human capital -- and uses it alongside your financial wealth to derive a personalized equity allocation grounded in economic theory.
3+
**lifecycle-allocation** is a Python library for computing data-driven stock/bond allocation recommendations based on lifecycle portfolio theory. Instead of relying on rules of thumb like "100 minus your age," it treats your future earning power as an asset, your human capital, and uses it alongside your financial wealth to derive a personalized equity allocation grounded in economic theory.
44

55
The framework is inspired by [Choi et al. (2024)](https://www.nber.org/papers/w34166) and implements a Merton-style optimal risky share adjusted for human capital, with support for multiple income models, mortality adjustment, leverage constraints, and visual analytics.
66

0 commit comments

Comments
 (0)