Tutorial 7: Multi-fund treasury allocation
This tutorial sets up mts1b-treasury to allocate firm capital across multiple funds — equities, crypto, sports — and rebalance weekly.
Time: ~30 min.
Prerequisites: mts1b-treasury installed (profile: foundational-12 + treasury or full).
Step 1 — Inventory existing funds
mts mts1b-treasury fund list
# fund_id broker target_nav current_nav pct_firm
# paper-momentum paper $100,000 $112,400 50%
# paper-crypto-revol paper $50,000 $48,200 22%
# paper-sports-dfs paper $25,000 $24,800 11%
# paper-options paper $40,000 $38,750 17%
#
# Firm NAV: $224,150
Step 2 — Set treasury allocator rules
mts mts1b-treasury allocator config \
--method risk_parity \
--min-per-fund-usd 25000 \
--max-per-fund-pct 0.50 \
--max-sleeve-correlation 0.7 \
--preserve-capital-dnt true \
--rebal-cadence weekly
Methods available:
| Method | Use |
|---|---|
equal | equal NAV per fund |
risk_parity | equal contribution to firm vol |
kelly | Kelly fraction across fund return distributions |
manual | static, from target_nav field |
risk_parity is the default — funds with higher realized vol get less allocation; lower vol gets more.
Step 3 — Compute a rebalance plan
mts mts1b-treasury allocator plan --dry-run
Treasury rebalance plan
=======================
Firm NAV: $224,150
Method: risk_parity
Constraints: min=$25k, max=50%, max-corr=0.7
fund current target delta reason
paper-momentum $112,400 $89,660 -$22,740 vol_pct=0.18, contribution=43%
paper-crypto-revol $48,200 $58,279 +$10,079 vol_pct=0.32, contribution=12%
paper-sports-dfs $24,800 $33,623 +$8,823 vol_pct=0.09, contribution=15%
paper-options $38,750 $42,588 +$3,838 vol_pct=0.22, contribution=30%
Total delta: $0 (zero-sum redistribution)
ETA to execute: 1-2 business days (ACH transfers)
Note: the allocator outputs deltas; it doesn't move money automatically.
Step 4 — Co-sign and execute
mts mts1b-treasury allocator execute --confirm REBALANCE
Multi-factor confirmation required (operator must type REBALANCE). On approval:
- Each fund-to-fund transfer is split into route legs (broker A → bank → broker B).
- A
TransferRequestis created for each leg, published tomts.v1.treasury.transfers.requested. mts1b-treasurydoes NOT make real bank movements. Instead it produces a list of "operator actions" — manual instructions for the human operator (e.g., "log into IBKR, withdraw $22,740 to Chase, then log into Coinbase, deposit $10,000").- The operator co-signs each completion via Web UI with 2FA.
For paper-to-paper (internal-only) "transfers", the system does an instant on-ledger move with no external action needed.
Step 5 — Track P/L attribution
mts mts1b-treasury attribution --fund-id paper-momentum --window mtd
Fund: paper-momentum
Window: month-to-date
Component Return Contribution
Strategy momentum +1.8% +1.2%
Strategy carry -0.3% -0.1%
Cash drag 0.0% -0.0%
Treasury rebalance +0.0% +0.1% (received allocation)
Fees + slippage - -0.2%
─────────────────────────────────────────
TOTAL +1.0%
Step 6 — Schedule weekly rebalance
treasury:
allocator:
method: risk_parity
schedule: "0 14 * * 1" # Mon 10am ET
notify: telegram
require_cosign: true # never auto-execute
mts1b-treasury will publish the rebalance plan every Monday morning + post to Telegram + wait for operator co-sign.
Step 7 — Daily NAV report
reports:
daily_nav:
cron: "0 18 * * 1-5" # 6pm ET, weekdays
funds: [paper-momentum, paper-crypto-revol, paper-sports-dfs, paper-options]
distribute: [telegram, email]
Each evening you get a single email/Telegram with:
- Per-fund NAV, P/L, exposure
- Firm-level rollup
- Drawdown alerts if any
- Drift alerts if any strategy IC drifted
Step 8 — Multi-currency (if applicable)
If you trade FX or international equities, the base currency matters:
mts mts1b-treasury fund create \
--fund-id eu-equities \
--nav 50000 \
--base-currency EUR \
--broker ibkr_eu
P/L attribution separates asset return from currency return so you understand WHY the EUR fund moved.
Step 9 — Tax lots
For taxable accounts (live, not paper):
mts mts1b-treasury tax-lots show --fund-id live-momentum --year 2026
Lot ID Symbol Open Date Close Date Qty Open Price Close Price Realized P/L
TL-001 AAPL 2026-01-15 2026-03-22 100 $185.30 $192.40 +$710.00 (short-term)
TL-002 AAPL 2026-01-15 open 50 $185.30 - (open)
TL-003 MSFT 2026-02-01 2026-04-15 200 $410.00 $425.50 +$3100.00 (short-term)
...
Realized YTD: $14,235 short-term, $0 long-term
Step 10 — Settlement report (end of year)
mts1b-report settlement --fund-id live-momentum --year 2026 --output ts-2026.pdf
Exports a PDF + CSV in formats accepted by TurboTax / FreeTaxUSA / GainsKeeper.
See also
mts1b-treasury— full repo specmts1b-reportslibrary— settlement / NAV reports- Cookbook: Multi-asset rebalance — composing sleeves within a fund