Retirement & Portfolio Planner| NetJets-Schwab Account

your numbers stay in this browser — nothing here is sent anywhere ← Dashboard
Sample portfolio. These are made-up numbers for a fictional pilot, here so you can see how the planner works. Look around and change anything you like. When you're ready, start your own.

Account summary

Manage accounts (rename, add, remove)

Current allocation (computed)

Live prices

Optional — fetches current (delayed) quotes directly from Finnhub for whatever you're holding, so the numbers here can move between CSV imports. Free key at finnhub.io — it stays in this browser only and is never sent anywhere but Finnhub.

Finnhub's free tier allows about 60 requests per minute. A single refresh is paced to stay under that, so it takes 20-30 seconds for a full portfolio rather than finishing instantly — that's expected, not a hang. Clicking Refresh several times in a row within the same minute can still trip the limit, since it's a shared per-minute allowance; if you see "too many requests," just wait a minute and try again rather than clicking repeatedly.

Individual holdings

Tag each holding's asset class once; the tool remembers that tag by symbol from then on. Re-importing a CSV replaces only that one account's rows — every other account is left untouched.

⇪
Drag Schwab CSV exports here, or click to browse
Drop as many at once as you like — one per account

⚠ CSV export only works for the PRCA (brokerage) side of a Schwab account. The standard 401(k) side has no CSV export at all — those holdings need to be added with "+ Add holding manually" below instead.
SymbolDescriptionAccountAsset classMarket value
Grand total

Pre-retirement contributions

From the 401(k) match schedule below. It matches your regular contribution plus the standard catch-up — not the extra age 60–63 catch-up, and not flight pay.

Flight-pay 401(k) contribution — not matched

Edit 401(k) match schedule
Edit 401(k) match schedule

Per the plan document's 29.4 "Increases to 401(k) Match" schedule — edit if the plan changes again.

Starting point

Your starting balance for every projection is the total of everything entered on the Holdings tab. Add or edit holdings there — this tab only covers what gets added going forward, each year, until retirement.

Projected income

Pilot profile

The base schedule is what every bid period uses unless you change it in the table below. Retirement date comes from the Assumptions tab.

A typical year — extra pay

Rough annual estimates are fine — last year's pay stubs are the best guide. Each one is spread evenly across the year at whatever daily or hourly rate is in effect.

PTO: you earn 12 days a year. Unused days over your 24-day Active bank are cashed out each January — 110% of your daily rate for 5 or more days, 100% under 5 (10.6). What's left in your bank is paid at your daily rate when you retire (10.7).

Fill in from a pay stub

Drop a NetJets earnings statement (the ADP PDF) and the planner reads its year-to-date totals — extended days, overtime, FDP, night pay, holidays, tour slides, PTO cash-out — and turns them into the "typical year" numbers above. A year-end (December) statement gives the best picture; a mid-year one is scaled up to a full year. The PDF is read on this device only — it is never uploaded or saved. Set your date of hire, seat and aircraft category first.

⇪
Drag your pay stub PDF here, or click to browse

Enter your date of hire above to see your projected income.

Schedule by bid period

Set a schedule for each bid period of the year and it applies every year through retirement. Then change any single period in the table below. The "vs. base schedule" figures compare against flying your base schedule every period. 8-day tours (Crew Choice only) and the Tour Slide Program (7&7 / 8&6 only) add their premiums. CC52 in a large-cabin fleet gets the 3% override automatically.

Income by year

How this is calculated

Base wage comes from the Section 27.1 tables for your schedule, seat, aircraft category, service year and contract year. Contract raises take effect May 1. Service years step up on your hire anniversary, and pay stays at the year-14 rate after that. Each day earns 1/365th of the annual rate in effect that day, so mid-year changes prorate exactly. After the 5/1/2029 table, each May 1 applies the raise you pick above.

Daily rate = base ÷ 182 (7&7), 208 (8&6), 156 / 180 / 216 / 228 (CC52 / 60 / 72 / 76) — 27.2(A). Overtime = base ÷ 2,184 × 1.5 — 27.2(B). Company extended days and holidays pay 1.5× the daily rate; voluntary extended days and VAWD pay 2.5× — 27.2(C), (D). An after-midnight return pays 2.5 days' pay — 19.8(B). A company-initiated tour slide pays ½ a daily rate per day slid — 19.6(D).

FDP is $204/hr in 2026, rising to $210 in 2029, then +2% a year — 27.2(G). Night flight, end-of-day and night duty pay start at $50/hr and rise 2% every January 1 from 2024 ($53.06 in 2026) — 27.2(H), (I). 33% of those four goes to your 401(k) as a non-elective contribution, with no match — 27.2(J). The 8-day tour / CC52 large-cabin override adds 3% of base — 27.2(F). The Tour Slide Program adds 2.5% — 19.10(D).

Unused PTO cashed out each January pays 110% of the daily rate for 5–12 days (100% under 5), and the PTO left in your bank is paid at your daily rate when you retire — 10.6(B), 10.7. The longevity bonus is 4% of the prior 12 months' base wage, paid on each anniversary after you complete service year 15, with a pro-rata payment at retirement — 27.1(G). Supplemental duty positions add the 27.2(E) annual wage, $500 per check ride, and $50 (CA/TR) or $75 (EA-D) per FDP hour. A TR is paid as a CA during the TR phase-out. The contract's SDP table has no CC52 column, so CC52 uses the 7&7/CC60 amount.

Not included: per diem, expense reimbursement, training-month extended days, and anything negotiated after the 2024 Amended Agreement. These are pre-tax estimates, not a pay guarantee.

Timeline

Expected return by asset class

These blend with each scenario's allocation (Holdings tab for Current, sliders below for the other three) to produce every projected return automatically — change a return here and every scenario updates.

Current allocation (from Schwab imports)

This is what you actually hold right now, computed from every account on the Holdings tab — it drives the "Current" scenario's blended return, the same way the sliders below drive the other three.

What the sliders below are for: each card sets a target portfolio mix for that named scenario. Combined with the return assumptions above, that mix determines the scenario's blended return — both while you're still contributing and after you retire — which is exactly what draws the four lines on the Growth Projections tab. One mix applies to the whole scenario; there's no separate pre- vs. post-retirement allocation. Only the expected return changes at retirement, using each asset class's "post-retirement" number set above.

Conservative allocation target

Balanced allocation target

Aggressive allocation target

Portfolio growth by scenario

dashed line on the chart

Milestones

Show year-by-year detail

Sample portfolio

Loads the made-up example portfolio (four accounts, about $1.2M, a Captain 20 years from retirement) to show someone how the planner works. It replaces everything in this browser, so use Export data at the bottom first if you want to keep yours.

Asset class names

Rename any of the 5 asset classes used throughout the tool — holdings, allocation targets, returns, and legends all update to match. This only changes the label; it doesn't move any money or affect calculations.