Target Model Buckets Implementations Trades Plan

Design the portfolio you want.
Trade the one you have.

Portfolio Manager is a local-first desktop studio for the DIY investor running real, multi-account portfolios. It turns your target allocation into the exact broker-ready buy and sell orders that close the gap — across Schwab, Fidelity and beyond — then projects that portfolio all the way through retirement.

100% local · no account · nothing uploaded Rebalancing + retirement planning Schwab & Fidelity ready
Portfolio Manager — Dashboard
Portfolio Manager Dashboard for the sample portfolio: total value, time-weighted return, allocation and the value-over-time chart
How it works

One disciplined pipeline, end to end

Portfolio Manager is organized around a single, repeatable flow — the same one a financial advisor follows, running entirely on your machine. The tour below mirrors the app's own sidebar, group by group.

1

Target Model

Define what you want to own — a named allocation like a 60/40, with effective-dated versions that evolve over time.

2

Buckets

Break the model into asset-class sleeves — U.S. Large Blend, Core Bond, International — each with a target weight.

3

Implementations

Map each bucket to the real tickers per brokerage — FXAIX at Fidelity, SCHX at Schwab — splittable across funds.

4

Trades & Plan

Get the exact buy/sell orders that close the drift — then project the whole household decades into retirement.

Overview

Your whole household in one screen

The first sidebar group is the 30-second status check — and the one action that follows from it. The Dashboard answers “where do I stand?”; Rebalancing answers “what should I do?”

Dashboard

Where you stand, and what to do — without a click

Four headline cards, an account selector with saved groups, and a value chart reconstructed from your transactions and stored prices. The sample household sits at $882,881 across five accounts, with $19,675 of trades in 7 orders beyond the 0.50% drift band.

  • Headline metric cards. Total Value, true time-weighted return (TWR), Estimated Rebalance ($19,675 · 7 orders) and a green Model-Validation check when the active model totals 100%.
  • Account selector with groups — All accounts, one account, or a saved group; the sample ships Retirement (two IRAs + the rollover) and Taxable & HSA.
  • Portfolio Value chart with 1M / 3M / YTD / 1Y / ALL presets — core cash included, so a sell-then-buy never shows a false dip.
  • Target vs Actual and Biggest Moves — the household has drifted a touch hot on equities (~56% vs a 54.60% target); the top trades top up bonds (buy SCHZ) and sell the off-model legacy holdings (AAPL and PIXAX).
Portfolio Manager — Dashboard
Dashboard: metric cards for total value, TWR, estimated rebalance and model validation, the account selector, the portfolio value chart, target-vs-actual and biggest moves
Rebalancing · a three-step workflow

From drift to a broker-ready order ticket

For every account, bucket and ticker, Portfolio Manager computes the drift and classifies each line Buy, Sell or Hold — anything inside your band is a Hold, no churn for noise. Then point it at a withdrawal or a contribution and the same engine becomes the exact trades that raise or invest the cash, tax-aware and lot-level.

1

Drift → orders

Brokerage-aware: funds in dollars, ETFs in shares. Off-model AAPL & PIXAX queued to sell.

Rebalancing — Rebalance
Rebalancing drift table with a brokerage-aware Order column, buy/sell/hold actions and off-model sells
2

Withdraw $40,000

Lot-level gain/loss and estimated tax, with Harvest badges where a loss can be booked.

Rebalancing — Withdraw
Rebalancing in Withdraw mode: an Orders panel raising $40,000 with per-lot gain/loss, estimated tax and tax-loss-harvest badges
3

Contribute & deploy

Enter new cash and the rebalance becomes a buy-only deploy plan that closes the gaps.

Rebalancing — Contribute
Rebalancing in Contribute mode: a buy-only deploy plan investing a new contribution across the model
  • Multi-account, multi-model. The same target becomes an FXAIX order in your Fidelity IRA and an SCHX order in your Schwab Brokerage — automatically.
  • Strategy selector & tax sequencing — proportional, trim-overweight-first or preserve-tax-lots, drawing taxable → tax-deferred → Roth and respecting each account's Allow withdrawals flag.
  • Now / Defer guidance from a reserve-floor and equity-drawdown band — so it nudges you to spend cash before selling into a dip.
Portfolio

The real-world container layer

Accounts, the holdings derived from your ledger, and a fixed-income ladder priced the way bonds and CDs actually behave — the facts the math runs on.

Accounts

Every account, with the attributes that change the math

Each row is a real brokerage account: institution, type, the tax treatment derived from it, and — the link that makes everything work — its assigned target model. The sample runs five accounts across Schwab and Fidelity.

  • Tax treatment auto-derived from account type (Taxable, Tax-Deferred, Roth, Tax-Exempt) and overridable — this is what drives withdrawal sequencing and the projection's tax model.
  • Target-model assignment per account — the Schwab Brokerage runs the Schwab ETF model, both Fidelity IRAs and the HSA run the Fidelity mutual-fund model, the Rollover IRA runs Ladder Income.
  • Owner birth year sets each account's RMD schedule — the Rollover IRA's older spouse (born 1953) is already taking them.
  • Include-in-rebalancing and Allow-withdrawals toggles, plus data-shape badges and per-account CSV import right from the row.
Accounts
Accounts table: five accounts with institution, type, tax treatment, target-model assignment and data-shape badges
Holdings & Cost Basis

Two ways in — and a real cost-basis engine

Get your holdings in the way that suits you: hand-enter your monthly statement, or import a Schwab or Fidelity CSV. Go the transaction route and your holdings, cost basis, gains and income are all derived from the ledger — no manual share-count upkeep, and a real value history. Start from statements and upgrade to full transaction tracking whenever you're ready.

  • Per-account summary — Market Value, Cost Basis, Unrealized and Realized gain/loss, and Income, all on average-cost accounting from the ledger.
  • Per-ticker drill-down expands the full transaction history with a running share balance and per-row edit/delete.
  • CSV import for Fidelity & Schwab — broker auto-detected, rows previewed, unknown tickers auto-stubbed, and de-duplicated so re-importing is safe.
  • A core-cash $CASH ledger per account, plus a Reconcile tool that writes the exact adjusting trade when your ledger and broker statement disagree.
Holdings
Holdings with a per-account cost-basis summary: market value, basis, unrealized and realized gains, and income
Fixed Income

A real T-bill & CD ladder, priced by accrual

Bonds and brokered CDs don't have a price feed — they're held to maturity at par — so Portfolio Manager models them properly instead of dropping them to $0 or guessing a NAV. The in-retirement sample holds a $70,000, five-rung ladder in its Rollover IRA.

  • Accrual pricing. Each instrument accretes toward par to its maturity date, so there's no artificial price cliff on your value chart.
  • Ladder & maturities — rungs by date, FDIC issuer exposure, face-weighted average maturity, and a forward income calendar (the sample mixes Treasury bills with Discover, Goldman and Morgan Stanley CDs at 4.60–4.90%).
  • Builder — model a target ladder off the live Treasury par-yield curve (rung count, spacing, amount, CD spread) and save the plan.
  • Counted in rebalancing — a model's ladder bucket absorbs every held rung automatically, and survives maturities rolling over.
Fixed Income — Ladder & maturities
Fixed Income: a T-bill/CD ladder priced to par with accrual performance and the maturity calendar
Strategy & Research

The construction loop, common to every portfolio

Design a model, screen the universe to fill its sleeves, let the optimizer rank substitutions on a composite score, and prove the result on a full tearsheet. This loop is life-stage-agnostic — it works the same whether you're 28 or 73.

Target Models

Build the portfolio you want — and version it

A model is buckets with target weights, and each bucket is implemented with real tickers. It's more than a spreadsheet: a live 100% budget keeps you honest, and dated versions keep your history accurate. The sample's Schwab-Inspired 64/36 totals exactly 100% and earns a green Valid badge.

  • Effective-dated versions. The current version drives today's trades; the Schwab 64/36 carries a v1 and a v2 (which trimmed bonds 3% into equity), and older versions stay on record for accurate backtests.
  • Live allocation budget flags over budget in red and exactly allocated in green as you type.
  • Split within a bucket — e.g. 60% FLCOX + 40% FDGIX — with the math kept consistent.
  • Valid / Review badges per model+version, so a misweighted model (the work-in-progress Aggressive Tilt at 97%) can't quietly produce bad orders — and is excluded from the backtest until fixed.
Target Models
Target Models page: the Schwab-Inspired 64/36 model with effective-dated versions, a 100% Valid badge and its bucket breakdown
Fund Screener · a three-step workflow

Pick the best fund for a sleeve — on evidence, then write it back

Compare your whole fund universe on trailing & calendar-year returns and risk, ranked by a single tunable Score; narrow to the candidates that fit one bucket; then confirm a swap that updates the model in place. Screening and editing are one continuous motion.

1

Heatmap the universe

Trailing & calendar returns plus 3-year risk, green-to-red, ranked by a Sharpe-like Score.

Screener
Fund Screener heatmap across the whole fund universe: trailing and calendar-year returns plus risk, colored green to red
2

Rank by bucket fit

Filter to the “U.S. Large Blend” sleeve — SPY / VOO / SPLG / SCHX scored and graded Exact / Close / Broad.

Screener — Bucket fit
Screener bucket-fit ranking for the U.S. Large Blend sleeve: SPY, VOO, SPLG, SCHX and more scored and grade-fitted
3

Confirm the swap

“Replace SCHX with SPY in U.S. Large Blend” — set Split %, Preferred and a new name, then Swap.

Screener — Confirm swap
The Confirm swap dialog: replace SCHX with SPY in U.S. Large Blend, with Split percent, Preferred, New name, Cancel and Swap
  • Sharpe-like Score blends 10Y/5Y/3Y/1Y/YTD returns, clears a risk-free hurdle, divides by volatility, then shrinks for a thin track record and penalizes expense ratio, drawdown and year-to-year inconsistency.
  • Universe switch (Mapped / Bucket fit / All) with bucket-fit grading, a Fidelity / Schwab / Vanguard NTF broker filter, an as-of date and reorderable columns.
  • Instant, cached results — computed from stored adjusted prices, so the Screener opens immediately and only recomputes when prices change.
Optimize

Rank substitution candidates for every bucket at once

The Optimizer takes the whole model and, for each bucket, ranks the substitution candidates on a composite risk/return score — with cost-vs-risk attribution that shows what you gain and what you give up. It's deterministic, so two runs are directly comparable.

  • Per-bucket candidate mapping. Each sleeve gets its eligible candidate category, scored by composite return, risk and cost, with a track-record depth check.
  • Two search modes — a Fast greedy pass or a Thorough joint search across buckets — surfaced as “Optimize whole model” and “Rank candidates”.
  • Cost-vs-risk attribution so a swap that only shaves a basis point of fee but adds drawdown is visible before you apply it.
  • Apply straight to the model — accepted picks write back into the buckets you built, ready to rebalance.
Optimize
Optimize page: the bucket list with per-bucket candidate-category mapping, composite scoring and depth, and Optimize-whole-model and Rank-candidates actions
Model Backtest

A full tearsheet for every model

Replay one or several models over your stored price history, applying the point-in-time weights in force on each rebalance date — then read the result like a fund factsheet. Over the sample's 2018→2026 window the diversified models trail a pure-S&P benchmark, but with far lower volatility:

ModelCAGRVolatilityMax DDTotal
Fidelity-Inspired 60/405.2%9.6%−14.1%+53.8%
Schwab-Inspired 64/364.3%9.0%−18.3%+43.1%
SPY (benchmark)11.5%16.3%−30.4%+285.6%
  • Growth of $10,000 on a $ or % scale with a crosshair leaderboard — click a legend entry to hide it, alt-click to solo — over a synced drawdown subchart with peak → trough → recovered.
  • Benchmark overlay — any ticker, or another model, as a dashed gold line, with excess CAGR, beta, tracking error, information ratio and up/down capture in a dedicated table.
  • An honest window — a banner states the true common window and what limits it; presets the data can't cover are disabled, not silently truncated, and Extend-back discloses any extrapolation.
  • Tearsheet metrics — CAGR, volatility, max drawdown, Sharpe, Sortino, Calmar, best/worst periods, % positive months, plus three monthly-return views and CSV export.
Model Backtest
Model Backtest tearsheet: growth curve, synced drawdown subchart and a statistics table for the sample's models
Planning

The balance point of a whole retirement

Portfolio Manager doesn't stop at "today." It runs a seeded, deterministic Monte-Carlo projection of your entire household in today's dollars — starting from your real balances split by tax class — then optimizes the levers that decide whether the money lasts: when to convert, how much house, how to flex spending, and how a survivor fares alone.

Every stage, not just the last

From your first paycheck to your last withdrawal

The engine models the saving years too: contributions compound into the projection, and a "when can I retire?" optimizer sweeps your retirement age to find the earliest one your plan still supports. Four sample households ship with the app — one per life stage — and switch in with a click, so you can explore each without touching your own data. Every figure below is real output from a deterministic run on these households.

EARLY CAREER · age 28
When could I retire?
Age 60
$58k today, saving $27k/yr. Work to 65 and it's 98% success with a $3.4M median at 95.
MID CAREER · age 45
When can I retire?
Age 65
$352k, saving $40k/yr. The optimizer sweeps every retirement age and reports the earliest that clears 90% — as a table you can Apply to the plan.
NEAR RETIREMENT · age 68
Will it last?
95.7%
$68k/yr total spend on $883k — about 7% drawn from the portfolio before Social Security at 70, then far less. Median $0.66M left at 95.
IN RETIREMENT · age 73
Will it last?
93.4%
$90k/yr total spend — only ~1% drawn from the portfolio after Social Security and RMDs cover the rest. Median $0.57M left at 95.
Projection — Early career (early sample)
Projected value for the early-career sample: the median compounds from $58k to about $3.4M with widening percentile bands
Projection — Mid career (mid sample)
Projected value for the mid-career sample household across the accumulation and drawdown years

Fictional demo Four sample households (≈$58k / $352k / $883k / $1.09M) ship with the app. Every number is read from a deterministic run on these sample databases — the accumulation path and the "when can I retire?" retirement-age sweep are asserted to actually fire. The two charts are real captures of the app's projection on the early and mid samples.

One household, in depth

Follow the near-retirement sample through the whole drawdown

Everything below is captured straight from Portfolio Manager running on a bundled sample database. Reproduce any of it: Files → load the sample → open Projection → pick the named scenario.

Projection — Near retirement · Roth conversions to 73
Projected portfolio value for the near-retirement sample: median line with 25 to 75 and 10 to 90 percentile bands, after tax, with the Roth-conversion plan

Median (line) with 25–75 and 10–90 percentile bands, today's dollars, after tax — the real engine on the Near retirement sample, “Roth conversions to age 73” scenario.

Roth-Conversion Optimizer

The point where taxes-now and taxes-later balance

In the low-income years between retiring and RMDs, the engine fills your tax-deferred income up to a bracket you choose — every year — and re-runs the whole plan. Convert too little and RMDs balloon later; too much and you over-pay today.

  • Fill-to-bracket. Top off the 12%, 22% or 24% bracket — heavy in lean years, automatically zero once Social Security and RMDs fill it themselves.
  • Per-owner RMDs on each spouse's own SECURE-2.0 start age and the IRS Uniform Lifetime Table — charted with and without the conversion plan.
  • Real, not illustrative. The chart is this sample's actual median forced RMD and its marginal federal tax, by age.
Projection — Required minimum distributions
Median required minimum distribution by age, with and without the conversion plan, and the marginal federal tax
Taxes & RMDs

A real tax engine inside the projection

Every simulated year is taxed properly, in today's dollars — so the projection knows the difference between a dollar in your IRA and a dollar in your Roth. The reference panel shows the exact brackets and thresholds the run applied.

  • Federal ordinary brackets (after the standard deduction) plus a flat state rate on the same base.
  • Social-Security provisional worksheet (0 / 50 / 85% taxable) and ACA / IRMAA income ceilings.
  • Honest by design: ordinary-income only — no LTCG / NIIT stack, a documented simplification noted right on the panel.
Projection — Tax & RMD reference
The federal brackets, standard deduction, Social Security provisional thresholds and per-owner RMD start ages the projection applied
In retirement

Drawdown that has to hold — through a survivor, and bad years

Load the In retirement sample to see a household living on the portfolio with binding RMDs. The same engine models the levers that decide whether it lasts:

  • Survivorship. At the first death the plan files MFJ → Single — standard deduction and brackets roughly halve (the widow's penalty), Social Security drops to the larger benefit, spending steps down. Framed on the survivor's income and tax, not success rate.
  • Dynamic-spending guardrail. A Guyton-Klinger rule trims spending when the withdrawal rate climbs and restores it when it falls — and reports the cost in cut years, both halves.
  • Home-affordability frontier. The optimizer finds the priciest home your plan still supports at a chosen success target, and the smartest way to pay for it.
Projection — In retirement · drawdown + survivorship
Projected value for the in-retirement sample under a drawdown plan with survivorship and a spending guardrail

Real screenshots Every chart in this section is captured from Portfolio Manager running on a bundled sample database — load the sample, open Projection, and you'll see the same thing.

Data & System

The plumbing that keeps it honest

The ticker metadata that powers every rollup, the settings that tune behavior, and the local-first files you own — the parts that make the rest trustworthy.

Ticker Metadata

The data behind every rollup

Every ticker carries the metadata that powers classification, screening and order formatting — pulled from Yahoo Finance, with Tiingo available as a second source you can pin per ticker.

  • Full classification — security type, asset class, region, size, style and category — plus expense ratio, minimum investment and NTF availability per broker.
  • Morningstar star ratings (overall + 3/5/10-year), with a ⚠ when the broker's category disagrees with Yahoo's.
  • Two price sources — set a global default and pin a per-ticker override (the sample pins PIXAX to Tiingo), with a clean full-history rebuild on change.
  • Manual split correction — for a split Yahoo never recorded, enter a date and ratio and pre-split closes are corrected at read time, never mutating the download.
Ticker Metadata
Ticker Metadata: classification, expense ratio, NTF availability and Morningstar star ratings, with the price source
Settings

The tuning that changes behavior

One page centralizes every knob — and the knobs are live: change the Screener's score-weights and the rankings update instantly; change a projection assumption and the next run reflects it.

  • Rebalancing — the drift threshold and minimum trade size that decide what counts as an order.
  • Prices — the default price source, a Tiingo key, and the default benchmark shared by the Dashboard and Backtest.
  • Screener score-weights — period weights, risk-free rate, expense drag and risk penalties, with a live formula readout.
  • Withdrawal & projection assumptions — filing status, state rate, lot method, assumed gain rates, inflation and horizon.
Settings
Settings: drift threshold and minimum trade size, price source, the Screener score-weight panel and projection assumptions
Files & Backups

One portable file, backups you own

It's local-first: your holdings, transactions, cost basis and plans live in a single SQLite file on your machine. No cloud to trust, nothing uploaded.

  • See where it lives — open a different database, or move it to a synced folder or external drive anytime.
  • Automatic backups on launch with a configurable keep-count, plus on-demand back-up / restore / delete, each timestamped and sized.
  • Four life-stage samples — early career, mid career, near retirement and in retirement — each opening an editable copy so your own portfolio is never touched.
  • “Back to my portfolio” returns you home, leaving the sample exploration behind.
Files
Files: the database location, automatic timestamped backups and the four life-stage sample picker
And a lot more

Everything a serious DIY portfolio needs

The big workflows are backed by the details that make them trustworthy.

Dual price sources

Yahoo Finance (yfinance) for breadth, Tiingo for accuracy — set a global default or pin a source per ticker, with a clean rebuild.

True time-weighted return

Returns that neutralize your deposit/withdrawal timing — measuring the portfolio, not your cash-flow luck.

Manual split correction

Fix a split Yahoo missed by entering a date + ratio. Pre-split closes are corrected at read time — your downloaded data is never mutated.

NTF & Morningstar import

Bulk-load Fidelity/Schwab fund lists for no-transaction-fee flags, expense ratios and Morningstar star ratings.

Backups you own

Automatic backups on launch with a configurable keep-count, plus on-demand backup, restore and delete — all timestamped.

Local-first & private

One portable SQLite file on your machine. No account, no login, no cloud. Move it to a synced folder or external drive anytime.

Versioned allocations

Effective-dated model versions drive today's trades and yesterday's backtests — duplicate, edit, and roll forward, with every change a diamond marker on the backtest chart.

Reconcile to your statement

Enter your broker's actual share count and Portfolio Manager writes the exact adjusting trade to make the ledger agree.

Tunable scoring

Dial the screener's period weights, risk-free rate, expense drag and risk penalties — and watch the rankings update instantly.

Account snapshots

For accounts you don't import trade-by-trade, store periodic stated holdings — Portfolio Manager values them and computes return with a Modified-Dietz net-flow.

Pluggable return regimes

The projection engine isn't one bell curve: multi-asset glide paths, Student-t fat tails, real historical-sequence replay, and AR(1) inflation — each calibrated and tested.

Deterministic & seeded

Every projection is reproducible from a seed, so an optimizer's two runs share the same market paths — a fair, paired comparison, never sampling noise.

Why it's different

Most trackers show you a pie chart.
Portfolio Manager hands you the trades.

CapabilityTypical portfolio trackerPortfolio Manager
The output“You're overweight equities”“Buy SCHZ in whole shares to top up bonds; sell the AAPL that isn't in your model”
Accounts & brokeragesOne account, one numberFive accounts, two brokerages, four models — one household
Performance mathReturns skewed by your depositsTrue time-weighted return
Choosing a fundGuessworkRisk-adjusted, tunable scoring across your universe, plus a composite-score optimizer
Bonds & CDsIgnored, or marked to $0A real T-bill/CD ladder priced by accrual, counted in rebalancing
BacktestingOne growth curve, if thatA tearsheet: benchmark stats, drawdowns, monthly returns, honest windows
RetirementNot its jobSeeded Monte-Carlo of your whole household, in today's dollars
Planning depthA 4%-rule calculator, maybeReal taxes, per-owner RMDs, Roth-conversion & affordability optimizers, a spending guardrail, and a survivorship (widow's-penalty) model
Your dataOn someone else's serverLocal-first SQLite, backups you own
Your data, your machine

Your money never leaves your Mac

Local-first by design. Your holdings, transactions, cost basis and plans are computed on your own machine and live in a single file you can read, move, and back up — never on someone else's server.

Nothing is uploaded

Every calculation runs on your Mac. No server ever sees your accounts, balances or plans.

No account, no login

Open it and go. No sign-up, no cloud profile, no telemetry phoning home.

One file you own

Everything lives in a single SQLite file — move it to a synced folder or external drive and keep your own timestamped backups. Zero lock-in.

Real math, unit-tested

TWR, average-cost basis, Sharpe/Sortino/Calmar and the optimizer's score are tested, reproducible math — not a black box. Built with Electron, React, Python & SQLite.

Nothing is uploaded. No telemetry, no account, no subscription.
Questions

Good to know

Does Portfolio Manager connect to my brokerage? +

No — and that's by design. You import a CSV transaction export from Fidelity or Schwab, and Portfolio Manager hands you orders to place yourself. It never has your login, never moves money, and never places a trade. You stay fully in control.

Where is my data stored? +

In a single SQLite file on your own machine. There's no cloud, no account, and no telemetry. You can see exactly where the file lives, move it to a synced folder or external drive, and keep automatic timestamped backups.

Which brokerages are supported? +

The transaction CSV importer auto-detects Fidelity and Schwab formats, and brokerage-aware ordering plus NTF (no-transaction-fee) filtering cover Fidelity, Schwab and Vanguard. The model layer itself is brokerage-agnostic — you can implement the same target with whatever tickers you hold.

How are prices and fund data fetched? +

A Python yfinance sidecar pulls adjusted price history and fund profiles from Yahoo Finance, and Tiingo is available as a second source you can pin per ticker. “Update prices” grabs only the missing recent days; “Rebuild” re-downloads from scratch.

How does the fund Score work? +

It's a risk-adjusted, Sharpe-like ranking: a blended multi-period return clears a risk-free hurdle, is divided by volatility, shrunk by how much history backs it, and penalized for expense ratio, max drawdown and year-to-year inconsistency. Every weight is tunable on the Settings page and updates the screener instantly. The Optimize page then uses the same composite scoring to rank substitution candidates across every bucket at once.

Can I trust the backtests? +

They apply the model-weight version that was in force on each rebalance date, hold cash sleeves flat instead of redistributing them, and state the true common window and what limits it — presets the data can't cover are disabled, not silently truncated. If you extend a backtest before a model's first version date, the banner discloses the extrapolation, and every statistic — metrics table, benchmark comparison, monthly views — follows the window the chart shows.

Can I backtest against a benchmark? +

Yes — overlay any ticker, or one of your other models, as a dashed line on the equity chart; it joins the drawdown panel and the crosshair tooltip too. A dedicated table reports excess CAGR, beta, tracking error, information ratio and up/down capture for each model, and a default benchmark set once in Settings applies to both the Dashboard and the Backtest.

Does it plan for retirement? +

Yes — this is the other half of the app. The Projection runs a seeded Monte-Carlo simulation of your whole household in today's dollars, starting from your real balances by tax class. It models spending phases, Social Security, one-time flows, taxes (federal brackets, a flat state rate, the Social-Security provisional worksheet, ACA/IRMAA ceilings) and per-owner RMDs. On top of that sit the optimizers: a fill-to-bracket Roth-conversion frontier, a home-purchase planner with an affordability frontier and best-payoff-year sweep, a Guyton-Klinger spending guardrail, and a deterministic survivorship model that flips your filing to Single at the first death so you can see the widow's penalty.

Are the projection's assumptions honest? +

Deliberately so. The engine runs in today's (real) dollars, so Social Security and tax brackets are treated as inflation-indexed rather than double-counted. It's seeded and deterministic, so two runs are directly comparable and an optimizer's choices aren't sampling noise. The tax model is ordinary-income only — no long-term-capital-gains or NIIT stack — a documented simplification, not a hidden one. And where a number can't be made perfectly precise, the app says so rather than implying false confidence — the guardrail even reports the spending cuts behind any success-rate lift.

How does it handle bonds and CDs? +

Held-to-maturity Treasuries, brokered CDs and bonds are tracked in a Fixed Income view and priced by accrual toward par, so they don't create false dips on your value chart. You get a ladder layout with issuer (FDIC) exposure and a forward income calendar, plus a Builder that models a target ladder off the live Treasury par-yield curve. A model's ladder bucket counts every held rung in rebalancing automatically.

Take control of your allocation.

Design the portfolio you want, see the one you have, and get the trades that close the gap — entirely on your own machine.

Made by Kalman Software — indie, local-first, no VC, no data harvesting.