# How the public APIs calculate.

Understand the calculation before interpreting the result. These methods explain what is measured, which population it describes, and where the available evidence ends.

Updated: 2026-10-15
Documentation edition: 2026-10-15.1
Portfolio model: 2026-10-15.3
Calculator model: 2026-10-15.2

[HTML](https://investboard.com/calculators/api/methodology) · [API documentation](https://investboard.com/calculators/api)

**Observed:** Provider reference data, reported revenue segments and historical prices, with available dates.

**Calculated:** Deterministic summaries of your submitted portfolio and the available reference data.

**Modeled:** Explicit assumptions for fee projections, crisis proxies and hypothetical historical portfolios.

## Inputs, units and precision

Supply the complete portfolio you want analyzed. Securities use ISINs; cash specifies assetClass: cash and its currency. Repeated ISINs are pooled, and cash in the same currency is pooled. Shared identifier mappings, listing profiles and security classifications are checked for identity conflicts; a conflicting identity is not guessed from its ticker or name.

For basis: values, supply market values already converted to baseCurrency. Snapshot analysis fetches neither valuation prices nor FX to convert your inputs. For basis: weights, use positive fractions summing to one (tolerance 0.000001); accepted weights are normalized to their actual sum. Snapshot and stress monetary results are null for weights. Replay instead uses its explicitly supplied hypothetical investment amounts.

Portfolio weights, coverage, returns, fees and weight deltas use fractions: 0.6 means 60%, 0.002 means 0.2%, and a weight delta of 0.05 means five percentage points. The separate financial calculator API uses percentage-point inputs, such as 6 for 6%; read each calculator's contract for output units.

Exposure calculations use a common internal scale to reduce cent-rounding distortion, then convert monetary outputs back to caller units. Monetary boundary helpers round to two decimals; individual engines also apply their documented rounding. Rounded totals may differ slightly from the sum of displayed rows. The internal scale is never an investment amount or a market observation.

**Worked example · illustrative inputs**

Illustration: with baseCurrency EUR, USD cash with value 1,000 means EUR 1,000 worth of USD cash, not USD 1,000.

## Read the denominator first

Allocation and held currencies refer to the whole submitted portfolio. Equity classification buckets, look-through positions, industry/theme weights and revenue geography are expressed as whole-portfolio shares of their resolved equity population. portfolioShare identifies how much of the portfolio that population occupies; coverage describes how much of the stated population is classified or measured.

Concentration issuer weights use the equity issuer book. Pairwise overlap uses constituent weights inside each fund. weightedTer uses only funds with known TER. These denominators differ, so the numbers cannot be added or substituted for one another.

Bond, cash, gold and crypto funds stay whole. Equity country, sector and industry dimensions exclude off-axis direct holdings and fund legs. Unresolved inputs retain their place in the portfolio denominator and may contain further equities. A resolved population is not proof that the rest of the portfolio has no equity exposure.

Glossary: [Asset Allocation](https://investboard.com/knowledge/glossary/asset-allocation), [ETF look-through](https://investboard.com/knowledge/glossary#look-through), [TER (Total Expense Ratio)](https://investboard.com/knowledge/glossary/ter)

## Coverage, unknowns and withheld results

Read status and reasons even after HTTP 200. ok means the section has no blocking incompleteness reason; it can still report no_equities or fewer_than_two_funds. partial means useful but incomplete evidence. unavailable means the requested result cannot be established. not_requested marks snapshot sections omitted from that call.

null means unavailable or unmeasured, never zero. Empty lists require their reasons and coverage to be interpreted. Unknown exposure and unresolved fund remainders describe missing evidence; tailWeight describes measured rows omitted by a display limit. Do not treat either as zero or renormalize the visible list to 100%.

Coverage is measure-specific: known asset classes, named issuers, fund constituents, industry labels, revenue reports and historical series answer different questions. Provider failures can leave partial results. Concentration is withheld below 80% issuer coverage; alternatives require effectively complete comparison evidence; replay requires every submitted leg to be usable. No single coverage threshold applies to all capabilities.

**Worked example · illustrative inputs**

Illustration: a 60% equity population with 75% industry coverage has 45% of the whole portfolio classified by industry. The remaining 15% equity weight is unknown, not spread over known industries.

## Portfolio methods

### Asset allocation (allocation)

Group submitted holdings by their resolved asset class. Unresolved securities remain in an unknown bucket and in the total portfolio value. This is the allocation of the submitted portfolio; the service cannot know about omitted accounts or holdings.

**Calculation**

```text
class weight = sum(values in class) / sum(all submitted values)
```

**Worked example · illustrative inputs**

Illustration: 6,000 in equities, 3,000 in bonds and 1,000 in cash gives weights 0.6, 0.3 and 0.1. An unresolved holding is retained rather than redistributed.

Glossary: [Asset Allocation](https://investboard.com/knowledge/glossary/asset-allocation)

[API contract and example](https://investboard.com/calculators/api#portfolio-allocation)

### ETF overlap (overlap)

For each pair of eligible equity funds, sum the smaller constituent weight for every shared security identity. The result describes the funds themselves, independently of how much of each fund you hold. Pairs below 1% overlap are omitted. Missing constituents can understate measured overlap; an empty pair list does not establish zero overlap when coverage is incomplete.

Constituent coverage and dates accompany the funds. A sharedTail preserves common weight omitted from the displayed shared-holdings list.

**Calculation**

```text
overlap(A, B) = Σ shared securities min(weight in A, weight in B)
```

**Worked example · illustrative inputs**

Illustration: A holds X at 0.4 and Y at 0.6; B holds X at 0.2 and Z at 0.8. Their measured overlap is 0.2 (20%).

Glossary: [ETF look-through](https://investboard.com/knowledge/glossary#look-through)

[API contract and example](https://investboard.com/calculators/api#portfolio-overlap)

### Equity look-through (look-through)

Multiply each fund's portfolio weight by its constituent weights, then merge matching security identities with directly held positions. Provenance separates direct ownership from exposure through each fund. The equity view describes companies; bond, cash, gold and crypto funds are held whole and never dissolved into equity constituents.

Undissolved equity-fund mass is reported as unresolvedFundWeight. Named positions beyond the requested limit remain in tailWeight. Neither is silently reassigned to the visible companies.

**Calculation**

```text
company exposure = direct portfolio weight + Σ(fund portfolio weight × company share in fund)
```

**Worked example · illustrative inputs**

Illustration: a fund is 60% of the portfolio and holds 5% in X. It contributes 3% portfolio exposure to X; a direct 2% holding brings the combined exposure to 5%.

Glossary: [ETF look-through](https://investboard.com/knowledge/glossary#look-through)

[API contract and example](https://investboard.com/calculators/api#portfolio-look-through)

### Company concentration (concentration)

Aggregate security positions onto resolved company issuers, including multiple share classes where the identity mapping supports it. Issuer weights use the equity book as their denominator, including unattributed equity mass. They are lower bounds when some of that book cannot be attributed.

Named issuers, HHI and effectiveN are withheld below 80% issuer coverage. Any unresolved submitted holding makes this section unavailable. At 80% or more but incomplete coverage, the section remains partial; missing issuer mass is not renormalized away. No personal concentration limit or suitability verdict is assumed.

**Calculation**

```text
HHI = Σ issuer weights²; effectiveN = 1 / HHI (when HHI > 0)
```

**Worked example · illustrative inputs**

Illustration with full coverage: two issuers at 0.5 each give HHI 0.5 and effectiveN 2. This is an equivalent concentration measure, not a count of independent risk factors.

Glossary: [Concentration risk](https://investboard.com/knowledge/glossary/concentration-risk)

[API contract and example](https://investboard.com/calculators/api#portfolio-concentration)

### Sector diversification (sectors)

Classify the resolved underlying equity population by company sector. Bucket weights refer to the whole submitted portfolio; coverage describes the classified fraction of the equity population. Unknown classifications remain unknown. These are company classifications, not sector revenue estimates or the fund wrapper's own sector.

**Worked example · illustrative inputs**

Illustration: an equity population is 60% of the portfolio and half of that population is classified as technology. Technology contributes 30% of the portfolio, not 50%.

Glossary: [Asset Allocation](https://investboard.com/knowledge/glossary/asset-allocation), [ETF look-through](https://investboard.com/knowledge/glossary#look-through)

[API contract and example](https://investboard.com/calculators/api#portfolio-sectors)

### Countries and regions (geography)

Group resolved underlying equities by company country and the maintained country-to-region mapping. This is company geography, not a fund's domicile, trading venue or the location of its sales. Country and region dimensions retain their own coverage. An unresolved input may contain further equities outside the resolved population.

Glossary: [ETF look-through](https://investboard.com/knowledge/glossary#look-through)

[API contract and example](https://investboard.com/calculators/api#portfolio-geography)

### Currency exposure (currencies)

equityExposure models currency exposure from underlying company countries and recognizes currency hedges from fund names. It is a classification model, not measured exchange-rate sensitivity or a company's revenue-currency breakdown.

heldCurrencies separately groups the resolved listing currencies and caller-stated cash currencies across the submitted portfolio. A different listing currency does not by itself change the underlying company exposure. Named hedged funds are disclosed; the model does not measure the effectiveness of a hedge.

Glossary: [ETF look-through](https://investboard.com/knowledge/glossary#look-through)

[API contract and example](https://investboard.com/calculators/api#portfolio-currencies)

### Ongoing fund costs (costs)

weightedTer is weighted across funds with known ongoing charges, not across the entire portfolio. coveredPortfolioWeight, fundPortfolioWeight and unknownPortfolioWeight expose that distinction. A missing or provider-reported zero TER is unavailable, not a free fund.

knownAnnualCost sums only measured fund charges. It is a subtotal if charges remain unknown and is null for weights-only requests. This excludes brokerage charges, bid–ask spreads, taxes and tracking difference.

**Calculation**

```text
weightedTer = Σ(covered fund value × TER) / Σ(covered fund value)
knownAnnualCost = Σ(covered fund value × TER)
```

**Worked example · illustrative inputs**

Illustration: a 10,000 portfolio has 6,000 in a fund with TER 0.002 and 4,000 cash. weightedTer is 0.002 (0.2%); knownAnnualCost is 12. The whole-portfolio known cost rate would be 0.0012, a different denominator.

Glossary: [TER (Total Expense Ratio)](https://investboard.com/knowledge/glossary/ter), [Tracking Difference](https://investboard.com/knowledge/glossary/tracking-difference)

[API contract and example](https://investboard.com/calculators/api#portfolio-costs)

### Long-term cost drag (cost-drag)

Use explicit caller assumptions for the initial amount, nominal annual return, annual fee and monthly contribution. Divide the annual return and fee by 12; add contributions at each month-end. The fee applies to the entire modeled balance. This nominal monthly convention differs from converting an effective annual return geometrically.

Compare the paths with and without the fee. totalCostDrag includes both fees and lost compounding; averageAnnualCostDrag is that total divided by years, not a yearly invoice. The projection excludes inflation, taxes, trading fees and changing returns. It fetches no market data.

**Calculation**

```text
withoutFee[m+1] = withoutFee[m] × (1 + annualReturn/12) + contribution
withFee[m+1] = withFee[m] × (1 + annualReturn/12 − annualFeeRate/12) + contribution
```

**Worked example · illustrative inputs**

Illustration: initialValue 1,000, annualReturn 0.06, annualFeeRate 0.012 and no contribution gives 1,005 without fees and 1,004 with fees after the first month.

Glossary: [TER (Total Expense Ratio)](https://investboard.com/knowledge/glossary/ter)

[API contract and example](https://investboard.com/calculators/api#portfolio-cost-drag)

### Industries and themes (industries)

Industry labels come from provider classifications and are not a promised GICS industry taxonomy. Maintained industry-interest definitions group those labels; versioned thematic baskets group identified issuers. Equity scope is applied to each direct holding and fund before company identities are merged.

Weights use the whole portfolio denominator. Unknown and omitted industry mass remain separate. Interests and baskets can overlap, so their weights need not sum to one. A measured theme weight is a lower bound with incomplete coverage; null means no measurement, while zero can mean no match in the measured population. Read definitionVersion and registryVersion when comparing results.

Glossary: [ETF look-through](https://investboard.com/knowledge/glossary#look-through), [Concentration risk](https://investboard.com/knowledge/glossary/concentration-risk)

[API contract and example](https://investboard.com/calculators/api#portfolio-industries)

### Revenue geography (revenue-geography)

Examine at most the 25 largest identifiable underlying equity companies, after applying equity scope before identity merging. Verify the company listing, select its latest available observation explicitly marked FY, and normalize geographic revenue segments to standard regions. Invalid or negative segment sets are rejected as a whole.

Weight each company's revenue-region shares by its whole-portfolio exposure. Unexamined companies and missing observations remain unknown rather than being scaled up to full coverage. Broad or unmapped segments remain in other. reportAsOf is the oldest report date used; companies may report for different fiscal years. This measures reported sales geography, not domicile, profit geography or revenue currency.

**Calculation**

```text
region weight = Σ(company portfolio weight × reported share of revenue in region)
```

**Worked example · illustrative inputs**

Illustration: a company is 10% of the portfolio and reports 40% of revenue in Europe. It contributes 4% to the portfolio's modeled European revenue exposure.

Glossary: [ETF look-through](https://investboard.com/knowledge/glossary#look-through)

[API contract and example](https://investboard.com/calculators/api#portfolio-revenue-geography)

### Portfolio comparisons (compare)

Analyze two complete caller-supplied snapshots independently, using the same input basis and base currency. Each metric retains its original population. Request-local reference lookups are shared, but underlying reference tables are not read as one atomic historical snapshot.

A delta is returned only when both corresponding sections are ok and both numbers exist; otherwise it is null. A positive delta means the metric increased, not necessarily that the portfolio improved. These snapshots do not reconstruct transactions or realized performance.

**Calculation**

```text
delta = after − before
```

**Worked example · illustrative inputs**

Illustration: a sector weight moves from 0.20 to 0.25. The delta is 0.05, meaning 5 percentage points, not a 5% relative increase.

Glossary: [Allocation drift](https://investboard.com/knowledge/glossary#allokationsdrift)

[API contract and example](https://investboard.com/calculators/api#portfolio-compare)

### Contribution planning (contribution-plan)

Use a complete value-based portfolio and caller-selected asset-class targets. Split one new contribution proportionally across positive underweight gaps measured before the contribution. Round allocations to cents and cap them at the remaining budget; amounts below minimumAllocation are skipped.

Unallocated money is included as cash in the after allocation. This is a proportional budget, not an optimization: large contributions can overshoot targets. An unresolved asset class makes the plan unavailable. It produces no instrument selections, prices, quantities, sell instructions or orders.

**Calculation**

```text
gap[class] = max(target weight − current weight, 0)
allocation[class] ≈ contribution × gap[class] / Σ positive gaps
```

**Worked example · illustrative inputs**

Illustration: underweight gaps of 0.10 and 0.05 split a 300 contribution into 200 and 100 before minimum-allocation and cent-rounding rules.

Glossary: [Asset Allocation](https://investboard.com/knowledge/glossary/asset-allocation), [Rebalancing](https://investboard.com/knowledge/glossary/rebalancing), [Allocation drift](https://investboard.com/knowledge/glossary#allokationsdrift)

[API contract and example](https://investboard.com/calculators/api#portfolio-contribution-plan)

### ETF alternatives (etf-alternatives)

Compare an equity fund with up to ten explicit candidate ISINs, or a bounded list from the shared alternatives catalog. This is not an exhaustive market search. Scores require known TER and effectively complete holdings, sector and country coverage (at least 0.999999) for both funds.

Similarity combines constituent overlap with cosine similarity of provider fund sector and country vectors. Those fund vectors differ from the constituent-company classifications used in snapshot sector and geography results. A match requires score ≥ 0.7 and a strictly lower TER. terSaving is the source TER minus candidate TER, not an estimated investor cash saving.

Candidate and source evidence includes constituent dates; a catalog computation date does not date all the evidence. This comparison excludes taxes, spreads, switching fees, tracking difference and suitability.

**Calculation**

```text
score = 0.5 × holdings overlap + 0.25 × sector cosine + 0.25 × country cosine
cosine(a,b) = Σ(aᵢbᵢ) / (√Σaᵢ² × √Σbᵢ²)
```

Glossary: [TER (Total Expense Ratio)](https://investboard.com/knowledge/glossary/ter), [Tracking Difference](https://investboard.com/knowledge/glossary/tracking-difference)

[API contract and example](https://investboard.com/calculators/api#portfolio-etf-alternatives)

### Approximate stress scenarios (stress-scenarios)

Apply the maintained crisis assumptions for 2008, COVID-19, the 2022 rate shock, the euro crisis or the dot-com period. Direct equities use a known sector proxy where available; funds use an asset-class proxy rather than a weighted reconstruction of their sectors. Other supported classes use the registry's class proxies.

Compound the price proxy with the listing/cash currency shock relative to the reporting currency once. EUR and USD reporting are supported. Missing classifications, currency assumptions or class shocks withhold the scenario. Return the episode, sources, methodology and review date with approximate: true.

These are modeled shocks applied to today's supplied mix, not measured historical returns of those holdings, forecasts or recovery estimates. Listing-currency proxies do not measure a company's economic FX sensitivity.

**Calculation**

```text
holding shock = (1 + price proxy shock) × (1 + FX shock) − 1
portfolio shock = Σ(portfolio weight × holding shock)
```

**Worked example · illustrative inputs**

Illustration: a price shock of −20% and FX shock of +10% combine to −12%: 0.8 × 1.1 − 1. Adding the shocks would give a different result.

Glossary: [Asset Allocation](https://investboard.com/knowledge/glossary/asset-allocation)

[API contract and example](https://investboard.com/calculators/api#portfolio-stress-scenarios)

### Historical replay of the current mix (historical-replay)

Start with today's supplied portfolio weights and replay verified listing histories over the requested past window, with an explicit hypothetical initialValue and optional monthly contributions. Use each history's actual quote currency and dated FX to convert to the reporting currency. Total-return and price-only bases are disclosed per leg; price-only histories exclude dividends.

Every holding must have usable history and required FX. Missing, invalid, stale or late-inception legs withhold the whole replay; they are never dropped and renormalized. Price gaps or an end-date lag beyond seven calendar days are refused. The engine aligns usable observed dates and carries observations across shorter gaps; actual start/end dates are returned. Mixed-portfolio cash follows observed security dates; cash-only portfolios use weekdays. Cash earns no interest, but foreign cash changes with FX.

The first monthly contribution arrives on the starting day in addition to initialValue. Later contributions follow monthly anniversaries on available dates. Rebalancing is none, annual or quarterly. Mix return and CAGR describe a separate path without contributions; contribution-path results include endingValue, totalContributed and a money-weighted annualized return where solvable.

CAGR is withheld for runs shorter than one year. Maximum drawdown is a non-positive fraction measuring the worst peak-to-trough decline of the mix path; recoveryDate can be null. This is a current-mix simulation subject to survivorship bias, not actual account performance. It excludes taxes, trading costs and slippage and is not a forecast.

**Calculation**

```text
base-currency price[t] = native price[t] × dated FX[t]
mix return = mix index[end] / mix index[start] − 1
maxDrawdown = min over t (mix index[t] / running peak[t] − 1)
CAGR (elapsed ≥ 365.25 days) = (mix index[end] / mix index[start])^(365.25 / elapsed days) − 1
```

Glossary: [Maximum Drawdown](https://investboard.com/knowledge/glossary/maximum-drawdown), [Rebalancing](https://investboard.com/knowledge/glossary/rebalancing)

[API contract and example](https://investboard.com/calculators/api#portfolio-historical-replay)

## Financial calculator methods

The thirteen financial calculator endpoints reuse the same methods as their interactive pages. Their assumptions, sources and limitations are included below from the existing methodology catalog. Rates and year-dependent tax rules follow each calculator's contract; a chosen asOf date does not turn a model into a historical legal rules engine.

### Capital Gains Tax Calculator (Germany) (abgeltungssteuer)

The calculator models German flat tax on private capital income. It shows a computed tax burden and does not replace tax advice.

**Tax base:** Capital income is reduced by the remaining saver's allowance. The flat tax is calculated on the taxable amount.

**Surcharges:** The solidarity surcharge is calculated on the flat tax. Church tax is included depending on federal state and selection.

**Result:** The output shows tax amount, effective rate and net income for the entered example.

**Sources**

- German Income Tax Act sections 20 and 32d for capital income and flat-tax rate.
- German Income Tax Act section 20 paragraph 9 for the saver's allowance.
- Solidarity surcharge law and church-tax logic by federal state.

**Limits**

- Loss pots, foreign withholding tax and broker-specific bookings can differ.
- The calculator models an example, not a full tax return.

[Open calculator](https://investboard.com/calculators/capital-gains-tax) · [API contract and example](https://investboard.com/calculators/api#abgeltungssteuer)

### Net Dividend Calculator (Germany) (netto-dividende)

The calculator shows what remains from a dividend after German capital income tax. For funds, it applies the selected partial exemption. It shows a computed tax burden and does not replace tax advice.

**Gross to taxable:** The gross dividend is reduced by the saver's allowance and, for funds, by the selected partial exemption.

**Tax profile:** Flat tax, solidarity surcharge and optional church tax are calculated from the tax profile.

**Net dividend:** The calculator shows the tax amount and net payout for the entered dividend.

**Sources**

- German Income Tax Act sections 20 and 32d for capital income and flat tax.
- German Income Tax Act section 20 paragraph 9 for the saver's allowance.
- German Investment Tax Act section 20 for fund partial exemptions.

**Limits**

- Foreign withholding tax, double-tax treaties and broker offsetting are simplified.
- The calculation is an approximation for private German taxpayers.

[Open calculator](https://investboard.com/calculators/net-dividend) · [API contract and example](https://investboard.com/calculators/api#netto-dividende)

### Vorabpauschale Calculator 2026 (Advance Lump Sum Tax) (vorabpauschale)

The calculator models the German advance lump sum for investment funds and ETFs. It makes visible the logic German brokers typically apply automatically. It shows a computed tax burden and does not replace tax advice.

**Base return:** Fund value at the beginning of the year × base interest rate × 70 %. The base return is capped by the actual increase in value.

**Partial exemption:** Depending on fund type, the taxable amount is reduced by the applicable partial exemption.

**Tax:** After the saver's allowance, flat tax, solidarity surcharge and optional church tax are calculated.

**Sources**

- German Investment Tax Act section 18 for the advance lump sum.
- German Investment Tax Act section 20 for partial exemptions by fund type.
- Federal Ministry of Finance base rate by tax year and Income Tax Act section 20 paragraph 9.

**Limits**

- In-year purchases, broker rounding and foreign accounts can differ.
- The actual debit depends on the broker and settlement-account balance.
- Public API v1 models one position held for the full year. Multi-position and acquisition-month inputs are not supported. steuerjahr selects the supported tax year; asOf is not the tax year.

[Open calculator](https://investboard.com/calculators/vorabpauschale) · [API contract and example](https://investboard.com/calculators/api#vorabpauschale)

Glossary: [Vorabpauschale (deemed fund income)](https://investboard.com/knowledge/glossary/vorabpauschale)

### Accumulating vs. Distributing Fund Calculator (thesaurierer-vs-ausschuetter)

The calculator compares accumulating and distributing ETFs as an after-tax model. It shows how return, distribution and tax assumptions work over time.

**Two paths:** Accumulating and distributing ETFs are calculated with the same return, cost and tax assumptions.

**Taxes:** Distributions, advance lump sum, partial exemption and saver's allowance are included in the model.

**Comparison:** The result shows modeled final wealth and tax burden, not the right ETF for an individual.

**Sources**

- German Investment Tax Act section 18 for the advance lump sum and section 20 for partial exemptions.
- German Income Tax Act sections 20, 20 paragraph 9 and 32d for capital income, allowance and tax rate.
- User assumptions for return, distribution rate, costs and duration.

**Limits**

- Market returns, fund domicile, distribution policy and broker rounding can differ.
- The result is a scenario comparison, not a recommendation for an ETF type.

[Open calculator](https://investboard.com/calculators/accumulating-vs-distributing) · [API contract and example](https://investboard.com/calculators/api#thesaurierer-vs-ausschuetter)

### Freistellungsauftrag Optimizer (Tax Exemption Order) (freistellungsauftrag)

The calculator allocates the German saver's allowance across banks and brokers. Its goal is transparency on where allowance is used or left unused. It shows a computed allocation and does not replace tax advice.

**Collect income:** Interest, dividends, advance lump sums and other capital income are reviewed per bank or broker.

**Allocate allowance:** The available saver's allowance is matched against expected or already incurred income.

**Show reserve:** The calculator shows where allowance is used up, tight or likely unused.

**Sources**

- German Income Tax Act section 20 paragraph 9 for the saver's allowance.
- German exemption-order rules for capital income at banks and brokers.
- Broker or bank data entered or connected by the user.

**Limits**

- The calculator does not submit exemption orders to banks.
- Final offsetting, reversals and annual tax statements can differ.

[Open calculator](https://investboard.com/calculators/freistellungsauftrag) · [API contract and example](https://investboard.com/calculators/api#freistellungsauftrag)

### ETF Savings Plan Calculator (Germany) (etf-sparplan)

The calculator models the path of an ETF savings plan with an optional tax drag from the annual advance lump sum. It shows a computed tax burden and does not replace tax advice.

**Savings path:** Initial capital and the savings rate compound monthly; the rate optionally rises each year by the chosen escalation.

**Tax drag:** With tax enabled, the advance lump sum is calculated each year (base rate, 70% factor, partial exemption by fund type, saver's allowance) and deducted from the portfolio value.

**Result:** The output shows final wealth with and without tax, contributions, growth and the year-by-year path.

**Sources**

- German Investment Tax Act section 18 for the advance lump sum and section 20 for partial exemptions.
- German Income Tax Act section 20 paragraph 9 for the saver's allowance; Federal Ministry of Finance base rate by tax year.
- User assumptions for return, savings rate, escalation and duration.

**Limits**

- The return is a constant assumption; real market returns can differ. Fund costs and inflation are not modeled.
- No sale tax is deducted at the end of the term; final wealth is calculated before disposal.

[Open calculator](https://investboard.com/calculators/etf-savings-plan) · [API contract and example](https://investboard.com/calculators/api#etf-sparplan)

### Emergency Fund Calculator (notgroschen)

The calculator turns your monthly expenses into an emergency-fund target and shows how long the build-up takes at your savings rate.

**Target:** Monthly net expenses × the chosen buffer months (3, 6, 9 or 12).

**Savings path:** The existing cushion compounds monthly and the savings rate is added until the target is reached. An illustrative rate is set per parking option (call money 2.5%, money-market ETF 3.2%, fixed-term ladder 3.5% p.a.).

**Orientation:** The calculator also suggests a parking option based on the savings horizon and shows the target date and interest share.

**Sources**

- The three-to-six-months-of-expenses rule of thumb from consumer guidance.
- Illustrative interest rates as model assumptions, not live market conditions.

**Limits**

- Interest on the cushion is calculated gross; flat tax on interest income is not modeled.
- Nominal view without inflation; actual account rates can differ with the market environment.
- When the target is unfunded and monthlySavingsCapacity is zero, monthsToTarget = 0 and targetDate = asOf do not mean the target has been reached.

[Open calculator](https://investboard.com/calculators/emergency-fund) · [API contract and example](https://investboard.com/calculators/api#notgroschen)

### Home Equity Calculator (eigenkapital)

The calculator determines ancillary purchase costs and the equity requirement for a property purchase, and shows the savings path to the target.

**Ancillary costs:** Property transfer tax by federal state plus a flat 2% notary/land registry and 3.57% agent commission on the purchase price.

**Equity target:** Ancillary costs plus purchase price × the chosen equity ratio (10 to 30%).

**Savings path and installment:** Savings compound monthly at the chosen rate and the savings rate is added; the later monthly installment is shown as a simplified interest illustration.

**Sources**

- Property-transfer-tax rates of the federal states (3.5 to 6.5%).
- GNotKG for notary and land-registry costs; Sections 656c, 656d BGB for the agent-fee split.

**Limits**

- The agent commission is a flat assumption and does not apply to purchases without an agent.
- The installment is an interest illustration without an amortization schedule or a live mortgage rate; real conditions can differ.
- When the target is unfunded and monthlySavingsCapacity is zero, monthsToTarget = 0 and targetDate = asOf do not mean the target has been reached.

[Open calculator](https://investboard.com/calculators/home-equity) · [API contract and example](https://investboard.com/calculators/api#eigenkapital)

### Pension Gap Calculator (rentenluecke)

The calculator estimates the statutory pension via earnings points, determines the gap to your desired income and translates it into a capital target.

**Pension estimate:** Earnings points = gross income ÷ average income (capped by the contribution ceiling), multiplied by the pension value (EUR 40.79, as of July 2025); a flat deduction of around 11% covers health and long-term-care insurance.

**Gap:** Desired income minus the estimated net pension, monthly and per year.

**Capital requirement:** The annual gap is grossed up by a flat 18.5% withdrawal tax and capitalized at a 3.5% withdrawal rate; existing provision and the savings rate are netted against it.

**Sources**

- Statutory pension formula inputs: pension value (July 2025), average income, contribution ceiling.
- Model flat assumptions for deductions (11%), withdrawal tax (18.5%) and withdrawal rate (3.5%).

**Limits**

- Assumes constant income (constant earnings points per year); individual careers can differ.
- Pension and withdrawal taxation are flat proxies; the binding source is the pension information of the Deutsche Rentenversicherung.

[Open calculator](https://investboard.com/calculators/pension-gap) · [API contract and example](https://investboard.com/calculators/api#rentenluecke)

### Withdrawal Plan Calculator (entnahmeplan)

The calculator simulates the withdrawal phase year by year, with flat tax on withdrawals, the annual advance lump sum and crediting under Section 19 InvStG.

**Strategies:** Constant nominal, inflation-adjusted or a percentage of the current portfolio value; the withdrawal is set per strategy each year.

**Gross-up:** Each withdrawal is grossed up so the desired amount remains after tax: crediting of taxed advance lump sums, 30% partial exemption, the remaining saver's allowance, then 26.375%. A 70% gain share per withdrawal is assumed.

**Path:** The assumed return and the annual advance lump sum act on the remaining capital until it is depleted or 50 years are reached.

**Sources**

- German Investment Tax Act section 18 (advance lump sum), section 19 (crediting) and section 20 (partial exemption).
- German Income Tax Act section 20 paragraph 9 and section 32d for the saver's allowance and tax rate.
- User assumptions for portfolio value, withdrawal, return, inflation and strategy.

**Limits**

- Constant return and no sequence-of-returns risk; real withdrawal paths can differ.
- A flat 70% gain share and a fixed 30% partial exemption (equity funds); individual portfolios can differ.
- The public adapter applies the equity-fund partial exemption to taxable investment gains; it does not model an arbitrary mixture of tax treatments.

[Open calculator](https://investboard.com/calculators/withdrawal-plan) · [API contract and example](https://investboard.com/calculators/api#entnahmeplan)

### Gift Tax Calculator (schenkungsteuer)

The calculator models German gift tax by allowance, tax class and stepped tariff, including the ten-year logic.

**Allowance:** Allowance by degree of kinship (Section 16 ErbStG), multiplied by the number of donors and reduced by gifts of the previous ten years.

**Tax rate:** The stepped tariff of Section 19 ErbStG is applied to the taxable acquisition, with the hardship adjustment of Section 19(3) near bracket boundaries.

**Optimization:** Optimization mode splits a total amount into allowance-sized tranches on a ten-year rhythm and compares the tax burden with a lump-sum transfer.

**Sources**

- ErbStG Section 15 (tax classes), Section 16 (allowances), Section 19 (rates and hardship adjustment).
- ErbStG Section 30 for the duty to report gifts.

**Limits**

- The model assumes financial assets; valuation of property or business assets and the exemptions of Section 13 ErbStG are not covered, so the actual tax can differ.
- The calculator does not replace tax advice on concrete transfers.

[Open calculator](https://investboard.com/calculators/gift-tax) · [API contract and example](https://investboard.com/calculators/api#schenkungsteuer)

### Junior Depot Calculator (junior-depot)

The calculator models the full lifecycle of a child's account with an equity-fund ETF: savings phase, annual advance lump sum and sale tax at the target age.

**Savings path:** Lump sum and savings rate (optionally child benefit, EUR 259 per month) compound monthly up to the target age.

**Annual advance lump sum:** Base rate, 70% factor, 30% partial exemption and the child's own saver's allowance (EUR 1,000). With an NV certificate the withholding at source is skipped; the crediting under Section 19 InvStG continues.

**Sale:** At the target age the gain is reduced by advance lump sums already taxed, partial exemption and allowance are applied, and the rest is taxed at 26.375%.

**Sources**

- German Investment Tax Act sections 18, 19 and 20; Income Tax Act section 20 paragraph 9 and section 44a (NV certificate).
- Federal Ministry of Finance base rate by tax year; child benefit of EUR 259 per month (as of 2026).

**Limits**

- Constant return as an assumption; the model is fixed to an equity-fund ETF.
- The basic personal allowance and the favorable-assessment check at sale are deliberately not modeled; the actual tax can differ and is often lower.
- The public adapter uses an equity fund. With useKindergeld enabled, the current modeled child-benefit amount replaces monthlyContribution; the normalized inputs disclose that amount.

[Open calculator](https://investboard.com/calculators/junior-depot) · [API contract and example](https://investboard.com/calculators/api#junior-depot)

### FIRE Calculator (fire-rechner)

The calculator determines the FIRE number with the German tax uplift and models the Regular, Coast and Barista variants.

**Tax uplift:** Each withdrawal assumes a 70% gain share, applies the 30% partial exemption and the effective rate (26.375%, more with church tax); annual expenses are grossed up accordingly.

**FIRE number:** Gross annual expenses divided by the chosen withdrawal rate (3.0, 3.5 or 4.0%).

**Variants and timeline:** Monthly capital path to the target; Coast discounts the FIRE number back to today, Barista nets a part-time income against expenses.

**Sources**

- German Income Tax Act section 32d for the tax rate; Investment Tax Act section 20 for the partial exemption.
- The Trinity study and analyses by Kitces and Pfau as context for withdrawal rates.
- User assumptions for expenses, return, savings rate and withdrawal rate.

**Limits**

- Constant real return (after an assumed 2% inflation), no sequence-of-returns risk, no saver's allowance; all figures in today's purchasing power, real paths can differ.
- The 70% gain share is a flat assumption; the withdrawal rate remains your decision.

[Open calculator](https://investboard.com/calculators/fire) · [API contract and example](https://investboard.com/calculators/api#fire-rechner)

## Data sources and observation dates

Portfolio inputs and projection assumptions come from the caller; crisis shock assumptions come from the maintained scenario registry. Shared market reference services supply identifier mappings, listing profiles, fund information and constituents, company classifications, geographic revenue segments, price histories and dated FX. The public adapters reuse Investboard's classification and calculation engines. Current integrations include Financial Modeling Prep and the shared identifier and FX services; the provider's availability and coverage constrain results.

computedAt is the request time. constituentsAsOf records the oldest known constituent date in the relevant result; it does not date every classification. reportAsOf dates the oldest annual revenue observation used. Alternative comparisons disclose fund dates and catalog computation dates separately. Stress sources, episode dates and reviewedAt describe a maintained approximation. Replay discloses requested and actual windows, quote currencies and price/total-return basis per leg.

Reference data can be cached, stale, corrected or incomplete; it is not one synchronized historical snapshot. Dates that are absent remain unknown. A repeat request can change because reference data changed even when modelVersion did not. The submitted portfolio and analysis results are not saved; shared reference data may be cached.

## Versions and methodology changes

modelVersion identifies the calculation contract returned by the API. The documentation edition below identifies this explanation separately; editing wording does not imply a model change. Thematic definitions also expose their own registry and definition versions. Retain these versions and available observation dates when comparing outputs.

2026-10-15 · Initial public methodology edition: documents the sixteen portfolio capabilities and incorporates the existing thirteen calculator methods, sources and limitations. This publication changes documentation and discovery links; it does not change calculation behavior.
