Portfolio (πΌ)
Full configuration of your wealth.
Sum bar and tabsβ
The Portfolio is for managing: this is where you edit values, add accounts and look at the projection. The big net-worth figure belongs to the Dashboard β so as not to show the same number twice, the top of the Portfolio carries only a slim sum bar: a small net amount + clickable pills Investments / Assets / Debt (and Gain), each opening a sheet with an explanation. The rest of the page lives in three tabs (Positions / Assets / Projection).
Wealth lensesβ
Below the sum bar there's a lens switcher β it decides what counts toward net worth, plus a bar showing the share of each wealth class:
- Total β everything β liabilities (the same as on the Dashboard).
- Investment β what builds freedom: investment accounts + cash + rental property. Excludes physical assets (car, equipment) and the home you live in β because these don't fund retirement. FIRE is calculated from this lens.
- Liquid β only what's quickly accessible: cash + listed securities (excluding IKE/IKZE/PPK and property).
The bar under the amount shows the composition of wealth in the given lens: investment accounts, cash, real estate, physical assets. It's "where this comes from" at a glance.
Positionsβ
Adding from a country-dependent catalogue of instruments (switch in Settings). The universal ones β ETF, stocks, funds, crypto, gold, cash, loan, "Other" β are everywhere, while tax accounts depend on the market:
- π΅π± Poland: IKE, IKZE, PPK, PPE, bonds (EDO/COI/OTS/ROR/ROS), deposit, savings account.
- π©πͺ Germany: Depot, Riester, RΓΌrup, bAV.
- π¬π§ United Kingdom: ISA, LISA, Junior ISA, SIPP, GIA.
- πΊπΈ USA: 401(k), Traditional IRA, Roth IRA, HSA, 529, brokerage.
- π«π· France: PEA, PER, assurance-vie, Livret A, CTO.
We don't translate account names (they're legal terms). In a given country you won't see other countries' accounts. Fields depend on the instrument type.
Editing a position covers: value, target contribution, goal, rate (interest / return), instalment, term, maturity date and category (which group it belongs to). You can also delete a position and reorder it in the list ("up / down" buttons in the editor). When there are more positions, a search box appears above the list (by name, ticker or account type).
In a position's details (after tapping the row) β once at least two monthly snapshots have accumulated β you'll see a mini value-over-time chart along with the change since the start of the history.
Multiple ETFs and allocationβ
Track each ETF/stock as a separate position (instead of one lumped holding), giving it a ticker (e.g. SWRD, CSPX) and a target allocation (%). In the category sheet (after tapping the row on the dashboard) you then see, per ETF, the current vs target allocation and drift β how far you've moved from the plan (a rebalancing hint). You enter values manually from your brokerage account (no live prices); the quotation currency is just a label β all the maths is in PLN.
Account type and instrumentβ
In the position editor you pick an account type (IKE, IKZE, PPK, PPE, OIPE, regular, bank/deposit) and an instrument (ETF, stocks, bonds, fund, crypto, cash). The account type is a "tax wrapper" β once you choose it, GrapeVest auto-fills the annual contribution limit and shows (for education) the tax on withdrawal and the qualified withdrawal age. You can override the limit manually. A mismatched instrument (e.g. an ETF in PPK) is flagged with a warning.
The account choice affects the net projection: IKE/PPK/PPE/OIPE tax-free, IKZE 10% on the whole amount (+ the PIT relief shown separately), a regular account Belka 19% on the gain β see Calculations. For IKZE, tick JDG if you file the higher limit as a sole trader.
Cryptocurrencies (native view)β
A position with a crypto instrument has its own view β it shows what crypto really is, rather than treating it like a "deposit":
- Holding basics β visible always, including in simple mode (this is the foundation: without them you don't know "how much I have"): the quantity of units held in full precision (for Bitcoin also in satoshi), the price now, the average purchase price, the invested capital, and the current value and gain/loss (amount + %).
- In Advanced mode you also get analytics: a spot-price card (PLN/EUR/USD + 24h change and a mini-chart), the portfolio share, the realized result and β if you keep one β the transaction history.
The quantity of units held is also shown right in the portfolio list (e.g.
0.03 BTC under the name), without opening the details.
Adding is native to the market too: instead of "deposit" fields (value, assumed return, goal) the form asks for the coin (Bitcoin/Ethereum directly; the generic "Crypto" template offers a picker), a quantity or the amount you paid β the missing value is derived from the live rate (e.g. 4,000 zΕ Γ· BTC rate = quantity). The purchase amount becomes the position's invested capital, so gain/loss is tracked from day one. There are no "assumed return" or "goal" fields for crypto β the valuation follows the market, not a forecast.
In the editor, enter the quantity and the symbol in the Ticker field (e.g.
BTC, ETH). Once it recognizes the symbol, GrapeVest fetches the current rate
from CoinGecko and recalculates the position's value (quantity Γ rate). Without a
network connection it uses the last known/entered value. Details and privacy:
Calculations.
A position with no quantity entered. If a crypto position has a value and
capital but never received a quantity (e.g. contributions recorded without access
to the rate), the app no longer shows the misleading "0 BTC β 0 sats": the quantity
is computed as value Γ· rate and marked with a β sign. On the first run with
access to the rate, this computed quantity is saved into the position (a one-off
self-fill) β from then on the valuation follows the market just like a manually
entered quantity.
In Advanced mode, the editor gains a transaction history β you add successive buys/sells (date, quantity, price/unit). Then the quantity, the average price (weighted) and the realized result are calculated from transactions rather than from a manually entered quantity. After picking a date, an empty price field fills in with the coin's rate for that month (live for the current month, archive for past ones) β you can override it. Besides buy/sell there is also a Reward (staking/airdrop) type: it adds units with a cost basis of 0 zΕ (Polish tax practice), lowering the average purchase price. After opening the Crypto category, a bar of current rates for the coins you hold appears at the top (price + 24h change) β without opening a position.
ETFs and stocks (units + rate, like crypto)β
ETFs and stocks work the same way as crypto: in the editor you enter the number
of units, and optionally a Stooq symbol (e.g. cspx.uk) for a live rate.
Once you provide the symbol, GrapeVest fetches the quote from Stooq (free, no
key) and converts it to PLN at the NBP rate, so the details show: how many units
you have, the price now, the average purchase price and the result. The
number of units is also shown right in the portfolio list (e.g. 12 SWRD).
Mapping from a bare ticker can be unreliable (Xetra/LSE), so we fetch the rate only
when you provide a Stooq symbol or a ticker with a market suffix (e.g.
cspx.uk). Without that β or without a network connection β the value stays
manual (nothing is zeroed out). It's an enrichment, not a dependency.
The same path now works when adding: the ETF/stocks form has optional
ticker, number of units and purchase amount fields. When the ticker
has a market suffix and a quote is available, the starting value is computed as
units Γ price (in the currency from the selector, converted at the NBP rate),
and the purchase amount becomes the invested capital. Without a ticker the form
works classically (manual value).
The ticker field has a search box: start typing a name, ticker or ISIN (e.g. "S&P 500", "VWCE") and suggestions from a built-in catalog of popular ETFs and stocks (UCITS, WSE, US) will set the Stooq symbol, quote currency and position name for you. The catalog is local (no network) β any ticker can still be typed manually.
Gold and precious metals (weight Γ fineness Γ price)β
The Gold / metals template is no longer a "deposit with an assumed 4% rate" β when adding, you enter what you actually hold:
- the metal β gold, silver, platinum or palladium,
- the weight in grams (raw weight of the item),
- the fineness β from a list of common finenesses with their karat equivalent (999.9 = 24 kt bars and bullion coins; 585 = 14 kt jewellery, and so on),
- the purchase price β it becomes the invested capital (gain/loss is measured against it).
Instead of typing the weight you can pick a product from the bullion catalog (1 gβ100 g bars, Krugerrand, American Eagle, Maple Leaf, Vienna Philharmonicβ¦) β the weight and fineness fill in automatically. The catalog knows the 22-karat subtlety: a Krugerrand weighs 33.93 g gross but contains exactly ~1 troy oz of pure gold. With a purchase price entered, the form also shows the premium over melt value (the dealer's margin) β informational only; the position is always valued at melt.
From that GrapeVest computes the grams of pure metal (weight Γ fineness/1000)
and values them live: gold at the NBP price (the official price of 1 g of
1000-fineness gold, published once per business day), and silver, platinum and
palladium from the Stooq spot (USD per troy ounce, converted at the NBP rate
into zΕ/g). The position's value refreshes on app start, just like crypto and
foreign currencies; offline nothing is zeroed (the last valuation stays).
The position details show the weight and fineness, pure grams, the NBP
price per 1 g (with its publication date), the purchase price and the
gain/loss; the portfolio list shows the pure grams under the name (e.g. 31.1 g).
There are no "assumed return" or "goal" fields for metals β the projection keeps
the value flat (we don't guess how much gold will grow).
Buying gold monthly? A contribution to a gold position in the
monthly entry settles in grams, like crypto:
grams = amount Γ· that month's NBP price (past months come from the NBP
archive). The purchase is recorded in the position's history, so the quantity,
average purchase price and result stay consistent; re-saving a month overwrites
the purchase instead of duplicating it.
Retail treasury bonds (per series)β
The EDO / COI / TOS / OTS / ROR / ROS templates are no longer a "deposit with a fixed rate". When adding you enter: the number of bonds (units Γ 100 zΕ), the purchase date, the first-period rate from the issue letter and β for indexed types β the margin over inflation. The bond engine computes the value:
- year 1 at the issue rate, years 2+ = CPI (GUS) + margin (deflation β margin only),
- EDO/TOS/ROS/ROD: annual capitalization; COI: yearly interest payout; ROR/DOR: monthly payout (payouts are cash in your pocket, not position growth),
- between events interest accrues linearly by days β the value grows daily, like in the issuer's interest tables.
The position details show: the current-period rate (with the period number), accrued interest, interest paid out, the next event (capitalization / payout / redemption) and the fee if redeemed today (per-unit fee by series, never more than accrued interest). In the editor (advanced mode) you can adjust the assumed inflation for months not yet in the GUS table and the early-redemption fee.
Bond positions are skipped in the monthly entry β buying more in another month is a different series (different first-period rate), so you add it as a new position from the catalog. Simplification: ROR/DOR use the purchase rate (the NBP reference rate has no free browser-friendly feed).
Upcoming income (calendar)β
At the bottom of the Positions tab (when there is something to show) a card "Upcoming income (12 mo)" appears: COI/ROR interest payouts, bond redemptions with the redemption amount, and maturities of deposits and other positions with a redemption date β sorted by date, with a total.
Spread the contribution (rebalancing without selling)β
When you set target shares (%) on positions, the Spread the contribution card (Positions tab) immediately shows the drift: for each position, a bar with the current share relative to its target and an overweight / underweight label (when the deviation is β₯ 2 pp) β that is, where the portfolio has drifted, even before you enter an amount. Once you enter an amount, GrapeVest suggests how much to add to each position to bring the portfolio closer to the strategy β the underweight ones first. This is rebalancing through top-ups, without selling (zero taxable events). The suggestions respect each person's annual IKE/IKZE limits: if an account is close to its limit, the surplus goes where it fits (the position gets an "account limit" badge), and any unallocated remainder is shown explicitly. Without target shares set, the card doesn't appear.
Import from your brokerβ
At the top of the Positions tab there's a prominent "Import from your broker" card. A wizard guides you step by step: pick a broker, upload an export (CSV/XLSX) or paste data, and GrapeVest recognizes the format, matches tickers/exchanges and creates positions in your base currency. Recognized automatically: XTB, Trading 212, Interactive Brokers, DEGIRO, mBank eMakler; the rest (PKO, ING, BOΕ/bossa, Alior, Santander, Revolut and others) β guided with manual column mapping. Everything happens on your device (E2E). Full guide: Import from your broker.
Owner and "for whose goal"β
You can assign each position and asset an owner (one of the two managing
accounts, or "joint") and a beneficiary ("for whose goal" β e.g. a child, or
"none"). The owner drives the people switcher on the Dashboard; the
beneficiary drives the "For {child}" summary (wealth set aside for that person's
goal, regardless of who formally owns it).
Withdrawals, sales, redemptionsβ
Editing an investment position has a "Withdraw / sell" button. You enter an amount (or tick "whole position" β a full redemption); for a foreign-currency position you enter the amount in its currency, with a PLN-equivalent preview.
The position's value drops by that amount, and its cost basis (used for gain) is reduced proportionally. With "Add to cash" the withdrawn amount moves to a "Cash" asset (created if none exists). It's an intuitive way to sell crypto, redeem bonds early, or take money out of an account.
Off-portfolio assetsβ
Real estate, land, cash, vehicles, equipment, collections β add, edit, delete. Each asset has a class (cash / real estate / physical), and the editor shows the fields appropriate for the class:
- Cash β where it's kept (account / savings / deposit / at home / currency), emergency fund.
- Real estate β how it's used (primary / rental / land) and growth %/year (a low default β without assuming 8%).
- Physical (car, equipment, collection) β depreciation %/year (value drops in the projection; collections flat). No ticker or rate of return.
You can link an asset to a loan (car β lease, house β mortgage) β the row then shows the equity ("value Β· to repay Β· yours"). Net worth still counts both separately; the link is for clarity.
You can track cash two ways: as a position in the portfolio (when you treat it as part of the plan) or as an off-portfolio asset (a plain reserve in your account).
Foreign currenciesβ
You pick the currency right when adding a position or asset β next to the value field. The default is PLN; you can switch to USD, EUR, GBP, CHF and others.
You enter the amount in the chosen currency, and GrapeVest converts it to PLN at the current NBP rate (table A). The "β β¦ zΕ" equivalent shows up right under the field. The rate refreshes when the app starts; each position row shows the amount in the currency and its conversion to zΕoty.
For example, Bitcoin bought in euros can be kept in euros, or you can simply enter its zΕoty equivalent. The rest of the calculations (net worth, projections, FIRE) then work in PLN.
Upcoming maturitiesβ
A list of positions with a maturity date (e.g. a bond ladder).
Value projectionβ
A forecast for one selected horizon (2 / 5 / 10 / 20 years β a switch at the top), so the table doesn't run off sideways. The "Total inβ¦" header sums the net values. Each row has account-type and tax badges, its value at the horizon and the assumptions (today Β· rate/yr). The list can be grouped by person or account type. Net worth is calculated by account type (IKE tax-free, IKZE 10% + PIT relief separately, regular Belka 19%) β the method is described in the Calculations chapter.