How-to
Import your Schwab positions
Bring your Schwab holdings into Ironlake from a CSV export - account by account - to unlock allocation rollup, look-through exposure, and income by tax character.
Ironlake works without any positions - you can build a plan, a model, and a projection on the free trial with nothing imported. But once you want allocation rollup against your model, look-through exposure, and income by tax character computed from what you actually hold, you import your positions. This guide covers the Schwab CSV wizard.
Before you start
You need an account already created in Ironlake to import into - positions attach to a specific account. If you have not made one yet, add it under Entities first, and set its management type while you are there. Importing is owner-only; a shared read-only viewer cannot run it.
Step 1 - Open the Schwab import
From Portfolio, start a Schwab import. The wizard opens at a guided six-step flow; nothing is written to your account until the final commit step.
Step 2 - Pick the destination account
Choose which of your accounts these positions belong to. The wizard imports into one account at a time, so repeat the flow per Schwab account.
Step 3 - Download your positions CSV from Schwab
Export your Positions from the Schwab web interface as a CSV. The wizard expects that file directly - upload the CSV as Schwab produces it (the importer reads the standard Schwab columns: symbol, description, quantity, price, market value, cost basis, and the rest). The upload is capped at 5 MB.
Step 4 - Preview the parsed rows
The wizard parses the file and shows you every row it read, with row-level problems called out - a line missing its symbol or description, or a negative quantity. You see exactly what will be imported before anything is saved, so look the preview over: the parser is permissive about messy values (a non-numeric quantity, for instance, is read as zero rather than rejected), and the preview is where you catch anything that does not look right.
Step 5 - Resolve tax character, sleeve, and bond details
Some fields cannot be determined from a Schwab CSV alone, so you resolve them here. For positions whose tax character is ambiguous - preferred shares, LPs, BDCs, and rows the parser could not classify - you pick the character, along with the sleeve and asset class each position belongs to. Bond metadata such as coupon, maturity, and issuer is read from the file and carried through (you review it in the preview step).
Municipal bonds are handled differently. Their tax character is set automatically at commit from your state of residence - an in-state muni is fully exempt, an out-of-state one only federally exempt - so there is no muni tax-character control at this step. Because that call depends on your state, set your state of residence in Settings before importing municipal bonds. If it is not set, the importer cannot tell an in-state muni from an out-of-state one and falls back to the more conservative federally-exempt-but-state-taxable treatment, which you would then have to correct on the holding afterward.
Step 6 - Commit
The final step reconciles the import against your latest balance snapshot for that account and writes the positions. After commit, your holdings appear in the portfolio grid and flow into allocation, exposure, and income surfaces.
What this import does and does not do
This wizard brings in your positions - aggregate holdings with a cost basis per position. It does not place trades, move money, or recommend any security; Ironlake is read-only with respect to your brokerage. It also does not import individual tax lots: lot-level detail (each purchase's date and basis), which the Loss Harvesting Scanner and lot-level capital-gains scenarios need, comes through a separate lot import - for Schwab, the Schwab Lot Details upload on the holdings grid; for other brokerages, the generic CSV importer's tax-lots mapping - not this positions wizard.
What you have now
Your Schwab positions are in Ironlake, rolling up against your model and feeding the exposure and income-by-tax-character surfaces. From here you can tag the account's management type so the analytical surfaces frame it correctly, or run a monthly review against your refreshed numbers.