{"data":{"modelVersion":"2026-11-10.3","authentication":"none","currency":"EUR","inputRates":"Percentage points: 6 means 6%.","outputRates":"Tax and exemption rates and shareOfFinalValue are fractions (0.25 means 25%); basiszins, effectiveWithdrawalRate and fields ending in _pct or Pct are percentage points.","rateLimit":{"requests":60,"unit":"One per ordinary request; one per scenario in a comparison.","windowSeconds":60,"scope":"client IP; shared across calculator endpoints; best-effort when Redis is unavailable"},"documentation":"https://investboard.com/calculators/api","methodology":"https://investboard.com/calculators/api/methodology","methodologyMarkdown":"/api/v1/public/portfolio-analysis/methodology","openapi":"/api/v1/public/calculators/openapi.json","guide":"/api/v1/public/calculators/guide","portfolioAnalysis":"/api/v1/public/portfolio-analysis","comparison":{"endpoint":"/api/v1/public/calculators/compare","maxScenarios":10,"operationId":"comparePublicCalculatorScenarios"},"calculators":[{"slug":"abgeltungssteuer","title":"Capital gains tax calculator (Germany)","description":"Calculate Kapitalertragsteuer (capital gains tax), Solidaritätszuschlag (solidarity surcharge), and Kirchensteuer (church tax) on your capital earnings.","endpoint":"/api/v1/public/calculators/abgeltungssteuer","methodology":"https://investboard.com/calculators/api/methodology#calculator-abgeltungssteuer","inputSchema":{"type":"object","properties":{"kapitalertrag":{"type":"number","minimum":0,"maximum":100000000,"default":5000,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"ertragsart":{"type":"string","enum":["general","aktienverkauf","dividende","etf"],"default":"general"},"taxProfile":{"type":"object","properties":{"bundesland":{"anyOf":[{"type":"string","enum":["Baden-Württemberg","Bayern","Berlin","Brandenburg","Bremen","Hamburg","Hessen","Mecklenburg-Vorpommern","Niedersachsen","Nordrhein-Westfalen","Rheinland-Pfalz","Saarland","Sachsen","Sachsen-Anhalt","Schleswig-Holstein","Thüringen"]},{"type":"null"}],"default":null},"kirchensteuer":{"type":"boolean","default":false},"filing_status":{"type":"string","enum":["single","joint"],"default":"single"},"sparerpauschbetrag_remaining":{"type":"number","minimum":0,"maximum":2000,"default":1000,"description":"Remaining EUR allowance for single-year tax calculations. Multi-year projections use the full annual statutory allowance based on filing_status."}},"default":{"bundesland":null,"kirchensteuer":false,"filing_status":"single","sparerpauschbetrag_remaining":1000},"additionalProperties":false}},"additionalProperties":false},"resultSchema":{"type":"object","properties":{"brutto_ertrag":{"type":"number","description":"EUR, not cents."},"fsa_offset":{"type":"number","description":"EUR, not cents."},"steuerpflichtiger_ertrag":{"type":"number","description":"EUR, not cents."},"kapitalertragsteuer":{"type":"number","description":"EUR, not cents."},"solidaritaetszuschlag":{"type":"number","description":"EUR, not cents."},"kirchensteuer":{"type":"number","description":"EUR, not cents."},"gesamte_steuer":{"type":"number","description":"EUR, not cents."},"effektiver_steuersatz":{"type":"number","description":"Fraction: 0.25 means 25%."},"netto_ertrag":{"type":"number","description":"EUR, not cents."},"kirchensteuer_rate":{"type":"number","description":"Fraction: 0.25 means 25%."},"teilfreistellung_betrag":{"type":"number","description":"EUR, not cents."}},"required":["brutto_ertrag","fsa_offset","steuerpflichtiger_ertrag","kapitalertragsteuer","solidaritaetszuschlag","kirchensteuer","gesamte_steuer","effektiver_steuersatz","netto_ertrag","kirchensteuer_rate","teilfreistellung_betrag"],"additionalProperties":false},"operationId":"calculateAbgeltungssteuer","example":{"inputs":{"kapitalertrag":5000,"ertragsart":"general","taxProfile":{"bundesland":null,"kirchensteuer":false,"filing_status":"single","sparerpauschbetrag_remaining":1000}},"locale":"en"}},{"slug":"netto-dividende","title":"Net dividend calculator (Germany)","description":"What remains of your dividend after Abgeltungsteuer, solidarity surcharge, and church tax?","endpoint":"/api/v1/public/calculators/netto-dividende","methodology":"https://investboard.com/calculators/api/methodology#calculator-netto-dividende","inputSchema":{"type":"object","properties":{"brutto_dividende":{"type":"number","minimum":0,"maximum":100000000,"default":500,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"quelle":{"type":"string","enum":["aktie","etf_aktien","mischfonds"],"default":"aktie"},"isin":{"type":"string","pattern":"^[A-Z]{2}[A-Z0-9]{9}[0-9]$","description":"Optional issuer ISIN used for country-level withholding assumptions; not a live security lookup."},"taxProfile":{"type":"object","properties":{"bundesland":{"anyOf":[{"type":"string","enum":["Baden-Württemberg","Bayern","Berlin","Brandenburg","Bremen","Hamburg","Hessen","Mecklenburg-Vorpommern","Niedersachsen","Nordrhein-Westfalen","Rheinland-Pfalz","Saarland","Sachsen","Sachsen-Anhalt","Schleswig-Holstein","Thüringen"]},{"type":"null"}],"default":null},"kirchensteuer":{"type":"boolean","default":false},"filing_status":{"type":"string","enum":["single","joint"],"default":"single"},"sparerpauschbetrag_remaining":{"type":"number","minimum":0,"maximum":2000,"default":1000,"description":"Remaining EUR allowance for single-year tax calculations. Multi-year projections use the full annual statutory allowance based on filing_status."}},"default":{"bundesland":null,"kirchensteuer":false,"filing_status":"single","sparerpauschbetrag_remaining":1000},"additionalProperties":false}},"additionalProperties":false},"resultSchema":{"type":"object","properties":{"brutto_dividende":{"type":"number","description":"EUR, not cents."},"teilfreistellung_rate":{"type":"number","description":"Fraction: 0.25 means 25%."},"teilfreistellung_betrag":{"type":"number","description":"EUR, not cents."},"steuerpflichtiger_betrag":{"type":"number","description":"EUR, not cents."},"steuer":{"type":"object","properties":{"brutto_ertrag":{"type":"number","description":"EUR, not cents."},"fsa_offset":{"type":"number","description":"EUR, not cents."},"steuerpflichtiger_ertrag":{"type":"number","description":"EUR, not cents."},"kapitalertragsteuer":{"type":"number","description":"EUR, not cents."},"solidaritaetszuschlag":{"type":"number","description":"EUR, not cents."},"kirchensteuer":{"type":"number","description":"EUR, not cents."},"gesamte_steuer":{"type":"number","description":"EUR, not cents."},"effektiver_steuersatz":{"type":"number","description":"Fraction: 0.25 means 25%."},"netto_ertrag":{"type":"number","description":"EUR, not cents."},"kirchensteuer_rate":{"type":"number","description":"Fraction: 0.25 means 25%."}},"required":["brutto_ertrag","fsa_offset","steuerpflichtiger_ertrag","kapitalertragsteuer","solidaritaetszuschlag","kirchensteuer","gesamte_steuer","effektiver_steuersatz","netto_ertrag","kirchensteuer_rate"],"additionalProperties":false},"quellensteuer_rate":{"type":"number","description":"Fraction: 0.25 means 25%."},"quellensteuer_betrag":{"type":"number","description":"EUR, not cents."},"anrechenbare_quellensteuer":{"type":"number","description":"EUR, not cents."},"erstattungsfaehige_quellensteuer":{"type":"number","description":"EUR, not cents."},"deutsche_reststeuer":{"type":"number","description":"EUR, not cents."},"quellensteuer_status":{"type":"string","enum":["credited","fund_level","none","unavailable"],"description":"unavailable means withholding was omitted because country assumptions are unavailable; none means no modeled investor withholding."},"netto_dividende":{"type":"number","description":"EUR, not cents."}},"required":["brutto_dividende","teilfreistellung_rate","teilfreistellung_betrag","steuerpflichtiger_betrag","steuer","quellensteuer_rate","quellensteuer_betrag","anrechenbare_quellensteuer","erstattungsfaehige_quellensteuer","deutsche_reststeuer","quellensteuer_status","netto_dividende"],"additionalProperties":false},"operationId":"calculateNettoDividende","example":{"inputs":{"brutto_dividende":500,"quelle":"aktie","taxProfile":{"bundesland":null,"kirchensteuer":false,"filing_status":"single","sparerpauschbetrag_remaining":1000}},"locale":"en"}},{"slug":"vorabpauschale","title":"Vorabpauschale calculator 2026 (German advance tax on funds)","description":"Calculate the advance lump sum tax on your ETFs and funds, for the 2024 to 2026 tax years, each due in January of the following year.","endpoint":"/api/v1/public/calculators/vorabpauschale","methodology":"https://investboard.com/calculators/api/methodology#calculator-vorabpauschale","inputSchema":{"type":"object","properties":{"wert_jahresanfang":{"type":"number","minimum":0,"maximum":100000000,"default":10000,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"wert_jahresende":{"type":"number","minimum":0,"maximum":100000000,"default":11500,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"ausschuettungen":{"type":"number","minimum":0,"maximum":100000000,"default":0,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"fondstyp":{"type":"string","enum":["AKTIENFONDS","MISCHFONDS","IMMOBILIENFONDS","IMMOBILIENFONDS_AUSLAND","SONSTIGE"],"default":"AKTIENFONDS"},"steuerjahr":{"anyOf":[{"type":"number","enum":[2023]},{"type":"number","enum":[2024]},{"type":"number","enum":[2025]},{"type":"number","enum":[2026]}],"default":2026,"description":"Only years with published Basiszins in the model are accepted. Single-position, full-year holding."},"taxProfile":{"type":"object","properties":{"bundesland":{"anyOf":[{"type":"string","enum":["Baden-Württemberg","Bayern","Berlin","Brandenburg","Bremen","Hamburg","Hessen","Mecklenburg-Vorpommern","Niedersachsen","Nordrhein-Westfalen","Rheinland-Pfalz","Saarland","Sachsen","Sachsen-Anhalt","Schleswig-Holstein","Thüringen"]},{"type":"null"}],"default":null},"kirchensteuer":{"type":"boolean","default":false},"filing_status":{"type":"string","enum":["single","joint"],"default":"single"},"sparerpauschbetrag_remaining":{"type":"number","minimum":0,"maximum":2000,"default":1000,"description":"Remaining EUR allowance for single-year tax calculations. Multi-year projections use the full annual statutory allowance based on filing_status."}},"default":{"bundesland":null,"kirchensteuer":false,"filing_status":"single","sparerpauschbetrag_remaining":1000},"additionalProperties":false}},"additionalProperties":false},"resultSchema":{"type":"object","properties":{"basiszins":{"type":"number","description":"Percentage points: 4 means 4%."},"basisertrag":{"type":"number","description":"EUR, not cents."},"wertsteigerung":{"type":"number","description":"EUR, not cents."},"vorabpauschale_brutto":{"type":"number","description":"EUR, not cents."},"teilfreistellung_rate":{"type":"number","description":"Fraction: 0.25 means 25%."},"teilfreistellung_betrag":{"type":"number","description":"EUR, not cents."},"vorabpauschale_steuerpflichtig":{"type":"number","description":"EUR, not cents."},"steuer":{"type":"object","properties":{"brutto_ertrag":{"type":"number","description":"EUR, not cents."},"fsa_offset":{"type":"number","description":"EUR, not cents."},"steuerpflichtiger_ertrag":{"type":"number","description":"EUR, not cents."},"kapitalertragsteuer":{"type":"number","description":"EUR, not cents."},"solidaritaetszuschlag":{"type":"number","description":"EUR, not cents."},"kirchensteuer":{"type":"number","description":"EUR, not cents."},"gesamte_steuer":{"type":"number","description":"EUR, not cents."},"effektiver_steuersatz":{"type":"number","description":"Fraction: 0.25 means 25%."},"netto_ertrag":{"type":"number","description":"EUR, not cents."},"kirchensteuer_rate":{"type":"number","description":"Fraction: 0.25 means 25%."}},"required":["brutto_ertrag","fsa_offset","steuerpflichtiger_ertrag","kapitalertragsteuer","solidaritaetszuschlag","kirchensteuer","gesamte_steuer","effektiver_steuersatz","netto_ertrag","kirchensteuer_rate"],"additionalProperties":false}},"required":["basiszins","basisertrag","wertsteigerung","vorabpauschale_brutto","teilfreistellung_rate","teilfreistellung_betrag","vorabpauschale_steuerpflichtig","steuer"],"additionalProperties":false},"operationId":"calculateVorabpauschale","example":{"inputs":{"wert_jahresanfang":10000,"wert_jahresende":11500,"ausschuettungen":0,"fondstyp":"AKTIENFONDS","steuerjahr":2026,"taxProfile":{"bundesland":null,"kirchensteuer":false,"filing_status":"single","sparerpauschbetrag_remaining":1000}},"locale":"en"}},{"slug":"thesaurierer-vs-ausschuetter","title":"Accumulating vs. distributing fund calculator (Germany)","description":"Which ETF type gives you more wealth after German taxes? Long-term comparison with Vorabpauschale, partial exemption, and saver's allowance.","endpoint":"/api/v1/public/calculators/thesaurierer-vs-ausschuetter","methodology":"https://investboard.com/calculators/api/methodology#calculator-thesaurierer-vs-ausschuetter","inputSchema":{"type":"object","properties":{"initial_investment":{"type":"number","minimum":0,"maximum":100000000,"default":10000,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"monthly_contribution":{"type":"number","minimum":0,"maximum":100000000,"default":300,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"annual_return":{"type":"number","minimum":1,"maximum":15,"default":7,"description":"Annual percentage points: 6 means 6%, not 0.06."},"distribution_yield":{"type":"number","minimum":0,"maximum":6,"default":2,"description":"Annual percentage points: 6 means 6%, not 0.06."},"years":{"type":"integer","minimum":1,"maximum":40,"default":20},"fondstyp":{"type":"string","enum":["AKTIENFONDS","MISCHFONDS","SONSTIGE"],"default":"AKTIENFONDS"},"reinvest_distributions":{"type":"boolean","default":true},"taxProfile":{"type":"object","properties":{"bundesland":{"anyOf":[{"type":"string","enum":["Baden-Württemberg","Bayern","Berlin","Brandenburg","Bremen","Hamburg","Hessen","Mecklenburg-Vorpommern","Niedersachsen","Nordrhein-Westfalen","Rheinland-Pfalz","Saarland","Sachsen","Sachsen-Anhalt","Schleswig-Holstein","Thüringen"]},{"type":"null"}],"default":null},"kirchensteuer":{"type":"boolean","default":false},"filing_status":{"type":"string","enum":["single","joint"],"default":"single"},"sparerpauschbetrag_remaining":{"type":"number","minimum":0,"maximum":2000,"default":1000,"description":"Remaining EUR allowance for single-year tax calculations. Multi-year projections use the full annual statutory allowance based on filing_status."}},"default":{"bundesland":null,"kirchensteuer":false,"filing_status":"single","sparerpauschbetrag_remaining":1000},"additionalProperties":false}},"additionalProperties":false},"resultSchema":{"type":"object","properties":{"yearly_data":{"type":"array","items":{"type":"object","properties":{"year":{"type":"integer","minimum":0,"description":"Year index from the start of the projection."},"thesaurierer_value":{"type":"number","description":"EUR, not cents."},"thesaurierer_vorabpauschale_tax":{"type":"number","description":"EUR, not cents."},"ausschuetter_value":{"type":"number","description":"EUR, not cents."},"ausschuetter_distribution_tax":{"type":"number","description":"EUR, not cents."},"ausschuetter_vorabpauschale_tax":{"type":"number","description":"EUR, not cents."},"ausschuetter_distributions_gross":{"type":"number","description":"EUR, not cents."},"ausschuetter_distributions_net":{"type":"number","description":"EUR, not cents."}},"required":["year","thesaurierer_value","thesaurierer_vorabpauschale_tax","ausschuetter_value","ausschuetter_distribution_tax","ausschuetter_vorabpauschale_tax","ausschuetter_distributions_gross","ausschuetter_distributions_net"],"additionalProperties":false}},"thesaurierer_final":{"type":"number","description":"EUR, not cents."},"ausschuetter_final":{"type":"number","description":"EUR, not cents."},"thesaurierer_advantage_eur":{"type":"number","description":"EUR, not cents."},"thesaurierer_advantage_pct":{"type":"number","description":"Percentage points: 4 means 4%."},"thesaurierer_total_taxes":{"type":"number","description":"EUR, not cents."},"ausschuetter_total_taxes":{"type":"number","description":"EUR, not cents."},"total_contributions":{"type":"number","description":"EUR, not cents."}},"required":["yearly_data","thesaurierer_final","ausschuetter_final","thesaurierer_advantage_eur","thesaurierer_advantage_pct","thesaurierer_total_taxes","ausschuetter_total_taxes","total_contributions"],"additionalProperties":false},"operationId":"calculateThesauriererVsAusschuetter","example":{"inputs":{"initial_investment":10000,"monthly_contribution":300,"annual_return":7,"distribution_yield":2,"years":20,"fondstyp":"AKTIENFONDS","reinvest_distributions":true,"taxProfile":{"bundesland":null,"kirchensteuer":false,"filing_status":"single","sparerpauschbetrag_remaining":1000}},"locale":"en"}},{"slug":"freistellungsauftrag","title":"Freistellungsauftrag optimizer (German tax exemption order)","description":"Distribute your saver's allowance across banks and brokers without leaving allowance unused.","endpoint":"/api/v1/public/calculators/freistellungsauftrag","methodology":"https://investboard.com/calculators/api/methodology#calculator-freistellungsauftrag","inputSchema":{"type":"object","properties":{"brokers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":60},"zinsen":{"type":"number","minimum":0,"maximum":100000000,"default":0,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"dividenden":{"type":"number","minimum":0,"maximum":100000000,"default":0,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"vorabpauschale":{"type":"number","minimum":0,"maximum":100000000,"default":0,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"realisierte_gewinne":{"type":"number","minimum":0,"maximum":100000000,"default":0,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"current_fsa":{"type":"number","minimum":0,"maximum":2000,"default":0,"description":"EUR, numeric JSON value (not cents or a formatted string)."}},"required":["name"],"additionalProperties":false},"minItems":1,"maxItems":6,"default":[{"name":"Broker 1","zinsen":0,"dividenden":0,"vorabpauschale":0,"realisierte_gewinne":0,"current_fsa":0},{"name":"Broker 2","zinsen":0,"dividenden":0,"vorabpauschale":0,"realisierte_gewinne":0,"current_fsa":0}]},"taxProfile":{"type":"object","properties":{"bundesland":{"anyOf":[{"type":"string","enum":["Baden-Württemberg","Bayern","Berlin","Brandenburg","Bremen","Hamburg","Hessen","Mecklenburg-Vorpommern","Niedersachsen","Nordrhein-Westfalen","Rheinland-Pfalz","Saarland","Sachsen","Sachsen-Anhalt","Schleswig-Holstein","Thüringen"]},{"type":"null"}],"default":null},"kirchensteuer":{"type":"boolean","default":false},"filing_status":{"type":"string","enum":["single","joint"],"default":"single"},"sparerpauschbetrag_remaining":{"type":"number","minimum":0,"maximum":2000,"default":1000,"description":"Remaining EUR allowance for single-year tax calculations. Multi-year projections use the full annual statutory allowance based on filing_status."}},"default":{"bundesland":null,"kirchensteuer":false,"filing_status":"single","sparerpauschbetrag_remaining":1000},"additionalProperties":false}},"additionalProperties":false},"resultSchema":{"type":"object","properties":{"brokers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"expected_income":{"type":"number","description":"EUR, not cents."},"current_fsa":{"type":"number","description":"EUR, not cents."},"optimal_fsa":{"type":"number","description":"EUR, not cents."},"tax_with_current":{"type":"number","description":"EUR, not cents."},"tax_with_optimal":{"type":"number","description":"EUR, not cents."},"delta":{"type":"number","description":"EUR, not cents."}},"required":["name","expected_income","current_fsa","optimal_fsa","tax_with_current","tax_with_optimal","delta"],"additionalProperties":false}},"total_expected_income":{"type":"number","description":"EUR, not cents."},"total_fsa_available":{"type":"number","description":"EUR, not cents."},"total_fsa_optimal":{"type":"number","description":"EUR, not cents."},"total_tax_current":{"type":"number","description":"EUR, not cents."},"total_tax_optimal":{"type":"number","description":"EUR, not cents."},"savings":{"type":"number","description":"EUR, not cents."},"warnings":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["over_limit"]},"message":{"type":"string"},"allocated":{"type":"number","description":"EUR, not cents."},"allowance":{"type":"number","description":"EUR, not cents."}},"required":["type","message","allocated","allowance"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["under_utilised"]},"message":{"type":"string"},"brokerIndex":{"type":"integer","minimum":0},"brokerName":{"type":"string"},"allocated":{"type":"number","description":"EUR, not cents."},"expected":{"type":"number","description":"EUR, not cents."}},"required":["type","message","brokerIndex","brokerName","allocated","expected"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["january_risk"]},"message":{"type":"string"},"brokerIndex":{"type":"integer","minimum":0},"brokerName":{"type":"string"},"preTax":{"type":"number","description":"EUR, not cents."},"allocated":{"type":"number","description":"EUR, not cents."}},"required":["type","message","brokerIndex","brokerName","preTax","allocated"],"additionalProperties":false}]}}},"required":["brokers","total_expected_income","total_fsa_available","total_fsa_optimal","total_tax_current","total_tax_optimal","savings","warnings"],"additionalProperties":false},"operationId":"calculateFreistellungsauftrag","example":{"inputs":{"brokers":[{"name":"Broker 1","zinsen":0,"dividenden":0,"vorabpauschale":0,"realisierte_gewinne":0,"current_fsa":0},{"name":"Broker 2","zinsen":0,"dividenden":0,"vorabpauschale":0,"realisierte_gewinne":0,"current_fsa":0}],"taxProfile":{"bundesland":null,"kirchensteuer":false,"filing_status":"single","sparerpauschbetrag_remaining":1000}},"locale":"en"}},{"slug":"etf-sparplan","title":"Compound interest calculator","description":"Calculate compound growth with starting capital and monthly contributions. Compare assumed-return scenarios before tax. Free to use, not a forecast.","endpoint":"/api/v1/public/calculators/etf-sparplan","methodology":"https://investboard.com/calculators/api/methodology#calculator-etf-sparplan","inputSchema":{"type":"object","properties":{"initial_investment":{"type":"number","minimum":0,"maximum":100000000,"default":0,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"monthly_rate":{"type":"number","minimum":0,"maximum":100000000,"default":300,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"annual_increase":{"type":"number","minimum":0,"maximum":10,"default":2,"description":"Annual percentage points: 6 means 6%, not 0.06."},"annual_return":{"type":"number","minimum":-99,"maximum":50,"default":7,"description":"Custom effective annual return (CAGR), in percentage points. Used only in custom mode. The legacy default is an illustrative assumption, not a market estimate."},"projection_basis":{"type":"string","enum":["custom","historical_us_equity"],"default":"custom","description":"custom uses caller assumptions. historical_us_equity uses horizon-matched 10th/50th/90th percentiles of overlapping NYU Stern US equity annualized total-return windows, 1928–2025, USD. Historical percentiles are not future probabilities. The dated reference snapshot is not truncated by asOf."},"lower_annual_return":{"type":"number","minimum":-99,"maximum":50,"description":"Custom lower effective annual return; otherwise annual_return minus projection_spread."},"higher_annual_return":{"type":"number","minimum":-99,"maximum":50,"description":"Custom higher effective annual return; otherwise annual_return plus projection_spread."},"projection_spread":{"type":"number","minimum":0,"maximum":10,"default":2,"description":"Custom-mode fallback spread in percentage points, used only when explicit lower_annual_return or higher_annual_return is absent. These are illustrative sensitivity assumptions, not empirically calibrated bounds or probabilities."},"years":{"type":"integer","minimum":1,"maximum":40,"default":20},"include_tax_drag":{"type":"boolean","default":false},"fondstyp":{"type":"string","enum":["AKTIENFONDS","MISCHFONDS","SONSTIGE"],"default":"AKTIENFONDS"},"taxProfile":{"type":"object","properties":{"bundesland":{"anyOf":[{"type":"string","enum":["Baden-Württemberg","Bayern","Berlin","Brandenburg","Bremen","Hamburg","Hessen","Mecklenburg-Vorpommern","Niedersachsen","Nordrhein-Westfalen","Rheinland-Pfalz","Saarland","Sachsen","Sachsen-Anhalt","Schleswig-Holstein","Thüringen"]},{"type":"null"}],"default":null},"kirchensteuer":{"type":"boolean","default":false},"filing_status":{"type":"string","enum":["single","joint"],"default":"single"},"sparerpauschbetrag_remaining":{"type":"number","minimum":0,"maximum":2000,"default":1000,"description":"Remaining EUR allowance for single-year tax calculations. Multi-year projections use the full annual statutory allowance based on filing_status."}},"default":{"bundesland":null,"kirchensteuer":false,"filing_status":"single","sparerpauschbetrag_remaining":1000},"additionalProperties":false},"currency":{"type":"string","enum":["EUR","USD","GBP","CHF","PLN","CZK"],"default":"EUR","description":"Unit of every amount in the inputs and the result. The math is the same in every currency; German tax requires EUR."}},"additionalProperties":false},"resultSchema":{"type":"object","properties":{"yearly_data":{"type":"array","items":{"type":"object","properties":{"year":{"type":"integer","minimum":0,"description":"Year index from the start of the projection."},"contributions_cumulative":{"type":"number","description":"EUR, not cents."},"value_before_tax":{"type":"number","description":"EUR, not cents."},"value_after_tax":{"type":"number","description":"EUR, not cents."},"annual_contribution":{"type":"number","description":"EUR, not cents."},"vorabpauschale_tax":{"type":"number","description":"EUR, not cents."}},"required":["year","contributions_cumulative","value_before_tax","value_after_tax","annual_contribution","vorabpauschale_tax"],"additionalProperties":false}},"final_value":{"type":"number","description":"EUR, not cents."},"total_contributions":{"type":"number","description":"EUR, not cents."},"total_growth":{"type":"number","description":"EUR, not cents."},"total_taxes_paid":{"type":"number","description":"EUR, not cents."},"final_value_no_tax":{"type":"number","description":"EUR, not cents."},"tax_drag_eur":{"type":"number","description":"EUR, not cents."},"tax_drag_pct":{"type":"number","description":"Percentage points: 4 means 4%."},"projection_basis":{"type":"string","enum":["custom","historical_us_equity"]},"return_reference":{"type":["object","null"],"properties":{"sourceUrl":{"type":"string"},"sourceEdition":{"type":"string"},"firstYear":{"type":"integer"},"lastYear":{"type":"integer"},"currency":{"type":"string","enum":["USD"]},"horizonYears":{"type":"integer"},"windowCount":{"type":"integer"},"percentiles":{"type":"array","prefixItems":[{"type":"number","description":"Fraction: 0.25 means 25%."},{"type":"number","description":"Fraction: 0.25 means 25%."},{"type":"number","description":"Fraction: 0.25 means 25%."}]},"latestWindowAnnualReturn":{"type":"number","description":"Percentage points: 4 means 4%."}},"required":["sourceUrl","sourceEdition","firstYear","lastYear","currency","horizonYears","windowCount","percentiles","latestWindowAnnualReturn"],"additionalProperties":false},"projections":{"type":"array","items":{"type":"object","properties":{"yearly_data":{"type":"array","items":{"type":"object","properties":{"year":{"type":"integer","minimum":0,"description":"Year index from the start of the projection."},"contributions_cumulative":{"type":"number","description":"EUR, not cents."},"value_before_tax":{"type":"number","description":"EUR, not cents."},"value_after_tax":{"type":"number","description":"EUR, not cents."},"annual_contribution":{"type":"number","description":"EUR, not cents."},"vorabpauschale_tax":{"type":"number","description":"EUR, not cents."}},"required":["year","contributions_cumulative","value_before_tax","value_after_tax","annual_contribution","vorabpauschale_tax"],"additionalProperties":false}},"final_value":{"type":"number","description":"EUR, not cents."},"total_contributions":{"type":"number","description":"EUR, not cents."},"total_growth":{"type":"number","description":"EUR, not cents."},"total_taxes_paid":{"type":"number","description":"EUR, not cents."},"final_value_no_tax":{"type":"number","description":"EUR, not cents."},"tax_drag_eur":{"type":"number","description":"EUR, not cents."},"tax_drag_pct":{"type":"number","description":"Percentage points: 4 means 4%."},"scenario":{"type":"string","enum":["lower","central","higher"]},"annual_return":{"type":"number","description":"Percentage points: 4 means 4%."}},"required":["yearly_data","final_value","total_contributions","total_growth","total_taxes_paid","final_value_no_tax","tax_drag_eur","tax_drag_pct","scenario","annual_return"],"additionalProperties":false},"description":"Lower, central and higher constant-return scenarios, in that order. Not a probability distribution. Top-level fields retain the central projection."}},"required":["yearly_data","final_value","total_contributions","total_growth","total_taxes_paid","final_value_no_tax","tax_drag_eur","tax_drag_pct","projection_basis","return_reference","projections"],"additionalProperties":false},"operationId":"calculateEtfSparplan","example":{"inputs":{"initial_investment":0,"monthly_rate":300,"annual_increase":2,"annual_return":7,"projection_basis":"historical_us_equity","projection_spread":2,"years":20,"include_tax_drag":false,"fondstyp":"AKTIENFONDS","taxProfile":{"bundesland":null,"kirchensteuer":false,"filing_status":"single","sparerpauschbetrag_remaining":1000},"currency":"USD"},"locale":"en"}},{"slug":"notgroschen","title":"Emergency fund calculator","description":"How much financial cushion do you need?","endpoint":"/api/v1/public/calculators/notgroschen","methodology":"https://investboard.com/calculators/api/methodology#calculator-notgroschen","inputSchema":{"type":"object","properties":{"monthlyExpenses":{"type":"number","minimum":1,"maximum":100000000,"default":2500,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"bufferMonths":{"anyOf":[{"type":"number","enum":[3]},{"type":"number","enum":[6]},{"type":"number","enum":[9]},{"type":"number","enum":[12]}],"default":6},"currentSavings":{"type":"number","minimum":0,"maximum":100000000,"default":0,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"monthlySavingsCapacity":{"type":"number","minimum":0,"maximum":100000000,"default":300,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"parkingVehicle":{"type":"string","enum":["tagesgeld","geldmarkt_etf","festgeld_leiter"],"default":"tagesgeld"},"currency":{"type":"string","enum":["EUR","USD","GBP","CHF","PLN","CZK"],"default":"EUR","description":"Unit of every amount in the inputs and the result. The math is the same in every currency; German tax requires EUR."},"interestRateMode":{"type":"string","enum":["example","entered"],"default":"example","description":"example: the illustrative euro rate of parkingVehicle (EUR only). entered: annualInterestPct."},"annualInterestPct":{"type":"number","minimum":0,"maximum":10,"default":0,"description":"The interest the savings earn, percentage points a year; used when interestRateMode is entered."}},"additionalProperties":false},"resultSchema":{"type":"object","properties":{"targetAmount":{"type":"number","description":"EUR, not cents."},"deficit":{"type":"number","description":"EUR, not cents."},"monthsToTarget":{"type":"integer","minimum":0,"description":"Months to target, capped at 600. Inspect targetUnreachable; zero with a positive deficit does not mean funded."},"targetUnreachable":{"type":"boolean","description":"True when an unfunded target has zero saving capacity or is not reached within the 600-month horizon."},"targetDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"UTC modeled target date; only meaningful if the target is funded or reachable with positive saving capacity."},"expectedReturn":{"type":"number","description":"EUR, not cents."},"recommendedVehicle":{"type":"string","enum":["tagesgeld","geldmarkt_etf","festgeld_leiter"]}},"required":["targetAmount","deficit","monthsToTarget","targetUnreachable","targetDate","expectedReturn","recommendedVehicle"],"additionalProperties":false},"operationId":"calculateNotgroschen","example":{"inputs":{"monthlyExpenses":2500,"bufferMonths":6,"currentSavings":0,"monthlySavingsCapacity":300,"parkingVehicle":"tagesgeld","currency":"EUR","interestRateMode":"example","annualInterestPct":0},"locale":"en"}},{"slug":"eigenkapital","title":"Home equity calculator (Germany)","description":"How much do you need for your property?","endpoint":"/api/v1/public/calculators/eigenkapital","methodology":"https://investboard.com/calculators/api/methodology#calculator-eigenkapital","inputSchema":{"type":"object","properties":{"purchasePrice":{"type":"number","minimum":0,"maximum":100000000,"default":350000,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"bundesland":{"type":"string","enum":["baden-wuerttemberg","bayern","berlin","brandenburg","bremen","hamburg","hessen","mecklenburg-vorpommern","niedersachsen","nordrhein-westfalen","rheinland-pfalz","saarland","sachsen","sachsen-anhalt","schleswig-holstein","thueringen"],"default":"nordrhein-westfalen"},"eigenkapitalQuote":{"type":"number","minimum":10,"maximum":40,"default":20,"description":"Equity percentage points, e.g. 20 for 20%."},"currentSavings":{"type":"number","minimum":0,"maximum":100000000,"default":30000,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"monthlySavingsCapacity":{"type":"number","minimum":0,"maximum":100000000,"default":500,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"savingsReturnPct":{"type":"number","minimum":0,"maximum":8,"default":4,"description":"Annual percentage points: 6 means 6%, not 0.06."}},"additionalProperties":false},"resultSchema":{"type":"object","properties":{"nebenkostenTotal":{"type":"number","description":"EUR, not cents."},"nebenkostenBreakdown":{"type":"object","properties":{"grunderwerbsteuer":{"type":"number","description":"EUR, not cents."},"notarGrundbuch":{"type":"number","description":"EUR, not cents."},"makler":{"type":"number","description":"EUR, not cents."}},"required":["grunderwerbsteuer","notarGrundbuch","makler"],"additionalProperties":false},"eigenkapitalRequired":{"type":"number","description":"EUR, not cents."},"totalUpfront":{"type":"number","description":"EUR, not cents."},"deficit":{"type":"number","description":"EUR, not cents."},"monthsToTarget":{"type":"integer","minimum":0,"description":"Months to target, capped at 600. Inspect targetUnreachable; zero with a positive deficit does not mean funded."},"targetUnreachable":{"type":"boolean","description":"True when an unfunded target has zero saving capacity or is not reached within the 600-month horizon."},"targetDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"UTC modeled target date; only meaningful if the target is funded or reachable with positive saving capacity."},"monthlyMortgageEstimate":{"type":"number","description":"EUR, not cents."}},"required":["nebenkostenTotal","nebenkostenBreakdown","eigenkapitalRequired","totalUpfront","deficit","monthsToTarget","targetUnreachable","targetDate","monthlyMortgageEstimate"],"additionalProperties":false},"operationId":"calculateEigenkapital","example":{"inputs":{"purchasePrice":350000,"bundesland":"nordrhein-westfalen","eigenkapitalQuote":20,"currentSavings":30000,"monthlySavingsCapacity":500,"savingsReturnPct":4},"locale":"en"}},{"slug":"rentenluecke","title":"Pension gap calculator","description":"What's missing for your retirement?","endpoint":"/api/v1/public/calculators/rentenluecke","methodology":"https://investboard.com/calculators/api/methodology#calculator-rentenluecke","inputSchema":{"type":"object","properties":{"currentAge":{"type":"integer","minimum":18,"maximum":65,"default":35},"retirementAge":{"type":"integer","minimum":55,"maximum":70,"default":67},"grossMonthlyIncome":{"type":"number","minimum":0,"maximum":100000000,"default":4000,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"workingYearsSoFar":{"type":"integer","minimum":0,"maximum":50,"default":10},"desiredRetirementIncome":{"type":"number","minimum":0,"maximum":100000000,"default":2500,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"existingPrivateProvision":{"type":"number","minimum":0,"maximum":100000000,"default":0,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"monthlyContribution":{"type":"number","minimum":0,"maximum":100000000,"default":300,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"annualReturnPct":{"type":"number","minimum":0,"maximum":15,"default":6,"description":"Annual percentage points: 6 means 6%, not 0.06."},"statePensionMode":{"type":"string","enum":["estimate","entered"],"default":"estimate","description":"estimate: the German statutory pension from grossMonthlyIncome and workingYearsSoFar (EUR only). entered: statePensionMonthly."},"statePensionMonthly":{"type":"number","minimum":0,"maximum":100000000,"default":0,"description":"The reader's own expected state pension per month, after deductions; used when statePensionMode is entered."},"currency":{"type":"string","enum":["EUR","USD","GBP","CHF","PLN","CZK"],"default":"EUR","description":"Unit of every amount in the inputs and the result. The math is the same in every currency; German tax requires EUR."},"taxJurisdiction":{"type":"string","enum":["DE","OTHER"],"default":"DE","description":"DE applies the German tax model (EUR only). OTHER applies ownTaxRatePct to the gain share, with no German exemption, allowance or advance tax."},"ownTaxRatePct":{"type":"number","minimum":0,"maximum":60,"default":0,"description":"Percentage points of tax on investment gains: 15 means 15%. 0 shows the result before tax. Used only with taxJurisdiction OTHER."}},"additionalProperties":false},"resultSchema":{"type":"object","properties":{"estimatedStatePension":{"type":"number","description":"Estimated monthly state pension, EUR."},"monthlyGap":{"type":"number","description":"EUR, not cents."},"annualGap":{"type":"number","description":"EUR, not cents."},"capitalNeeded":{"type":"number","description":"EUR, not cents."},"capitalNeededAfterExisting":{"type":"number","description":"EUR, not cents."},"monthlySavingsNeeded":{"type":"number","description":"EUR, not cents."},"surplusOrDeficit":{"type":"number","description":"EUR, not cents."},"yearsUntilRetirement":{"type":"number","description":"Elapsed years, possibly fractional."}},"required":["estimatedStatePension","monthlyGap","annualGap","capitalNeeded","capitalNeededAfterExisting","monthlySavingsNeeded","surplusOrDeficit","yearsUntilRetirement"],"additionalProperties":false},"operationId":"calculateRentenluecke","example":{"inputs":{"currentAge":35,"retirementAge":67,"grossMonthlyIncome":4000,"workingYearsSoFar":10,"desiredRetirementIncome":2500,"existingPrivateProvision":0,"monthlyContribution":300,"annualReturnPct":6,"statePensionMode":"estimate","statePensionMonthly":0,"currency":"EUR","taxJurisdiction":"DE","ownTaxRatePct":0},"locale":"en"}},{"slug":"entnahmeplan","title":"Withdrawal plan calculator","description":"How long will your assets last?","endpoint":"/api/v1/public/calculators/entnahmeplan","methodology":"https://investboard.com/calculators/api/methodology#calculator-entnahmeplan","inputSchema":{"type":"object","properties":{"portfolioValue":{"type":"number","minimum":0,"maximum":100000000,"default":500000,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"monthlyWithdrawal":{"type":"number","minimum":0,"maximum":100000000,"default":2000,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"annualReturnPct":{"type":"number","minimum":0,"maximum":15,"default":5,"description":"Annual percentage points: 6 means 6%, not 0.06."},"inflationPct":{"type":"number","minimum":0,"maximum":5,"default":2,"description":"Annual percentage points: 6 means 6%, not 0.06."},"strategy":{"type":"string","enum":["constant_nominal","constant_real","percentage"],"default":"constant_nominal"},"percentageRate":{"type":"number","minimum":0.1,"maximum":20,"default":4,"description":"Annual withdrawal percentage points: 4 means 4%."},"taxProfile":{"type":"object","properties":{"bundesland":{"anyOf":[{"type":"string","enum":["Baden-Württemberg","Bayern","Berlin","Brandenburg","Bremen","Hamburg","Hessen","Mecklenburg-Vorpommern","Niedersachsen","Nordrhein-Westfalen","Rheinland-Pfalz","Saarland","Sachsen","Sachsen-Anhalt","Schleswig-Holstein","Thüringen"]},{"type":"null"}],"default":null},"kirchensteuer":{"type":"boolean","default":false},"filing_status":{"type":"string","enum":["single","joint"],"default":"single"},"sparerpauschbetrag_remaining":{"type":"number","minimum":0,"maximum":2000,"default":1000,"description":"Remaining EUR allowance for single-year tax calculations. Multi-year projections use the full annual statutory allowance based on filing_status."}},"default":{"bundesland":null,"kirchensteuer":false,"filing_status":"single","sparerpauschbetrag_remaining":1000},"additionalProperties":false},"currency":{"type":"string","enum":["EUR","USD","GBP","CHF","PLN","CZK"],"default":"EUR","description":"Unit of every amount in the inputs and the result. The math is the same in every currency; German tax requires EUR."},"taxJurisdiction":{"type":"string","enum":["DE","OTHER"],"default":"DE","description":"DE applies the German tax model (EUR only). OTHER applies ownTaxRatePct to the gain share, with no German exemption, allowance or advance tax."},"ownTaxRatePct":{"type":"number","minimum":0,"maximum":60,"default":0,"description":"Percentage points of tax on investment gains: 15 means 15%. 0 shows the result before tax. Used only with taxJurisdiction OTHER."}},"additionalProperties":false},"resultSchema":{"type":"object","properties":{"yearlyData":{"type":"array","items":{"type":"object","properties":{"year":{"type":"integer","minimum":0,"description":"Year index from the start of the projection."},"balanceStart":{"type":"number","description":"EUR, not cents."},"withdrawal":{"type":"number","description":"EUR, not cents."},"grossWithdrawal":{"type":"number","description":"EUR, not cents."},"taxPaid":{"type":"number","description":"EUR, not cents."},"growth":{"type":"number","description":"EUR, not cents."},"balanceEnd":{"type":"number","description":"EUR, not cents."}},"required":["year","balanceStart","withdrawal","grossWithdrawal","taxPaid","growth","balanceEnd"],"additionalProperties":false}},"yearsUntilDepletion":{"type":["number","null"],"description":"Null means no depletion within the modeled horizon; it does not show that the withdrawals last for life."},"totalWithdrawals":{"type":"number","description":"EUR, not cents."},"totalTaxPaid":{"type":"number","description":"EUR, not cents."},"effectiveWithdrawalRate":{"type":"number","description":"First simulated gross withdrawal divided by the initial portfolio, in percentage points; zero when no withdrawal is modeled."},"remainingAt80":{"type":["number","null"],"description":"EUR at age 80; null if that age is outside the modeled age/horizon."},"remainingAt90":{"type":["number","null"],"description":"EUR at age 90; null if that age is outside the modeled age/horizon."}},"required":["yearlyData","yearsUntilDepletion","totalWithdrawals","totalTaxPaid","effectiveWithdrawalRate","remainingAt80","remainingAt90"],"additionalProperties":false},"operationId":"calculateEntnahmeplan","example":{"inputs":{"portfolioValue":500000,"monthlyWithdrawal":2000,"annualReturnPct":5,"inflationPct":2,"strategy":"constant_nominal","percentageRate":4,"taxProfile":{"bundesland":null,"kirchensteuer":false,"filing_status":"single","sparerpauschbetrag_remaining":1000},"currency":"EUR","taxJurisdiction":"DE","ownTaxRatePct":0},"locale":"en"}},{"slug":"schenkungsteuer","title":"Gift tax calculator (Germany)","description":"Calculate tax-free allowances and tax liability","endpoint":"/api/v1/public/calculators/schenkungsteuer","methodology":"https://investboard.com/calculators/api/methodology#calculator-schenkungsteuer","inputSchema":{"type":"object","properties":{"relationship":{"type":"string","enum":["spouse","child","grandchild","sibling","other"],"default":"child"},"giftAmount":{"type":"number","minimum":0,"maximum":100000000,"default":100000,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"previousGifts10y":{"type":"number","minimum":0,"maximum":100000000,"default":0,"description":"Total prior gifts within ten years, split equally across donors. Credits prior tax computed under current law; a higher actual prior assessment is not modeled."},"numberOfDonors":{"type":"integer","minimum":1,"maximum":2,"default":1,"description":"Current and prior gifts are split equally; each donor is taxed separately."},"optimizeOverTime":{"type":"boolean","default":false},"totalToTransfer":{"type":"number","minimum":0,"maximum":10000000,"default":100000,"description":"Used only when optimizeOverTime is true. Prior gifts are not modeled by optimization."}},"additionalProperties":false},"resultSchema":{"anyOf":[{"type":"object","properties":{"freibetrag":{"type":"number","description":"EUR, not cents."},"totalFreibetrag":{"type":"number","description":"EUR, not cents."},"taxableAmount":{"type":"number","description":"EUR, not cents."},"taxRate":{"type":"number","description":"Fraction: 0.25 means 25%."},"taxDue":{"type":"number","description":"EUR, not cents."},"netGiftAmount":{"type":"number","description":"EUR, not cents."},"steuerklasse":{"type":"string","enum":["I","II","III"]},"optimalSchedule":{"type":"array","items":{"type":"object","properties":{"year":{"type":"integer","minimum":0,"description":"Year index from the start of the projection."},"amount":{"type":"number","description":"EUR, not cents."},"taxFree":{"type":"boolean"},"taxDue":{"type":"number","description":"EUR, not cents."}},"required":["year","amount","taxFree","taxDue"],"additionalProperties":false}},"totalTaxSaved":{"type":"number","description":"EUR, not cents."},"yearsNeeded":{"type":"number","description":"Elapsed years, possibly fractional."}},"required":["freibetrag","totalFreibetrag","taxableAmount","taxRate","taxDue","netGiftAmount","steuerklasse","optimalSchedule","totalTaxSaved","yearsNeeded"],"additionalProperties":false},{"type":"object","properties":{"freibetrag":{"type":"number","description":"EUR, not cents."},"totalFreibetrag":{"type":"number","description":"EUR, not cents."},"taxableAmount":{"type":"number","description":"EUR, not cents."},"taxRate":{"type":"number","description":"Fraction: 0.25 means 25%."},"taxDue":{"type":"number","description":"EUR, not cents."},"netGiftAmount":{"type":"number","description":"EUR, not cents."},"steuerklasse":{"type":"string","enum":["I","II","III"]}},"required":["freibetrag","totalFreibetrag","taxableAmount","taxRate","taxDue","netGiftAmount","steuerklasse"],"additionalProperties":false}],"description":"Scheduling mode adds optimalSchedule, totalTaxSaved and yearsNeeded. Single-gift mode returns the base fields."},"operationId":"calculateSchenkungsteuer","example":{"inputs":{"relationship":"child","giftAmount":100000,"previousGifts10y":0,"numberOfDonors":1,"optimizeOverTime":false,"totalToTransfer":100000},"locale":"en"}},{"slug":"junior-depot","title":"Junior depot calculator (Germany)","description":"What will your child's savings plan grow to?","endpoint":"/api/v1/public/calculators/junior-depot","methodology":"https://investboard.com/calculators/api/methodology#calculator-junior-depot","inputSchema":{"type":"object","properties":{"childAge":{"type":"integer","minimum":0,"maximum":17,"default":0},"targetAge":{"type":"integer","minimum":1,"maximum":30,"default":18},"monthlyContribution":{"type":"number","minimum":0,"maximum":100000000,"default":100,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"initialDeposit":{"type":"number","minimum":0,"maximum":100000000,"default":0,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"annualReturnPct":{"type":"number","minimum":0,"maximum":15,"default":7,"description":"Annual percentage points: 6 means 6%, not 0.06."},"useKindergeld":{"type":"boolean","default":false},"hasNVBescheinigung":{"type":"boolean","default":false},"taxProfile":{"type":"object","properties":{"bundesland":{"anyOf":[{"type":"string","enum":["Baden-Württemberg","Bayern","Berlin","Brandenburg","Bremen","Hamburg","Hessen","Mecklenburg-Vorpommern","Niedersachsen","Nordrhein-Westfalen","Rheinland-Pfalz","Saarland","Sachsen","Sachsen-Anhalt","Schleswig-Holstein","Thüringen"]},{"type":"null"}],"default":null},"kirchensteuer":{"type":"boolean","default":false},"filing_status":{"type":"string","enum":["single","joint"],"default":"single"},"sparerpauschbetrag_remaining":{"type":"number","minimum":0,"maximum":2000,"default":1000,"description":"Remaining EUR allowance for single-year tax calculations. Multi-year projections use the full annual statutory allowance based on filing_status."}},"default":{"bundesland":null,"kirchensteuer":false,"filing_status":"single","sparerpauschbetrag_remaining":1000},"additionalProperties":false}},"additionalProperties":false},"resultSchema":{"type":"object","properties":{"yearlyData":{"type":"array","items":{"type":"object","properties":{"year":{"type":"integer","minimum":0,"description":"Year index from the start of the projection."},"age":{"type":"integer","description":"Child age in years."},"contributionsCumulative":{"type":"number","description":"EUR, not cents."},"valueGross":{"type":"number","description":"EUR, not cents."},"vorabpauschaleTax":{"type":"number","description":"EUR, not cents."}},"required":["year","age","contributionsCumulative","valueGross","vorabpauschaleTax"],"additionalProperties":false}},"finalValueGross":{"type":"number","description":"EUR, not cents."},"totalContributions":{"type":"number","description":"EUR, not cents."},"totalGrowth":{"type":"number","description":"EUR, not cents."},"finalValueAfterTax":{"type":"number","description":"EUR, not cents."},"taxOnSale":{"type":"number","description":"EUR, not cents."},"vorabpauschaleCredited":{"type":"number","description":"EUR, not cents."},"nvSavings":{"type":"number","description":"EUR, not cents."},"kindergeldEquivalent":{"type":"string","description":"Language-neutral contribution × 12 × years expression; use numeric result fields for arithmetic."}},"required":["yearlyData","finalValueGross","totalContributions","totalGrowth","finalValueAfterTax","taxOnSale","vorabpauschaleCredited","nvSavings","kindergeldEquivalent"],"additionalProperties":false},"operationId":"calculateJuniorDepot","example":{"inputs":{"childAge":0,"targetAge":18,"monthlyContribution":100,"initialDeposit":0,"annualReturnPct":7,"useKindergeld":false,"hasNVBescheinigung":false,"taxProfile":{"bundesland":null,"kirchensteuer":false,"filing_status":"single","sparerpauschbetrag_remaining":1000}},"locale":"en"}},{"slug":"fire-rechner","title":"FIRE calculator","description":"When will you reach financial independence?","endpoint":"/api/v1/public/calculators/fire-rechner","methodology":"https://investboard.com/calculators/api/methodology#calculator-fire-rechner","inputSchema":{"type":"object","properties":{"monthlyExpenses":{"type":"number","minimum":1,"maximum":100000000,"default":2000,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"currentPortfolio":{"type":"number","minimum":0,"maximum":100000000,"default":100000,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"monthlyContribution":{"type":"number","minimum":0,"maximum":100000000,"default":1500,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"annualReturnPct":{"type":"number","minimum":0,"maximum":15,"default":7,"description":"Annual percentage points: 6 means 6%, not 0.06."},"withdrawalRatePct":{"type":"number","minimum":2,"maximum":6,"default":3.5},"currentAge":{"type":"integer","minimum":18,"maximum":70,"default":30},"partTimeIncome":{"type":"number","minimum":0,"maximum":100000000,"default":1000,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"targetRetirementAge":{"type":"integer","minimum":19,"maximum":80,"default":55},"variant":{"type":"string","enum":["regular","coast","barista"],"default":"regular"},"taxProfile":{"type":"object","properties":{"bundesland":{"anyOf":[{"type":"string","enum":["Baden-Württemberg","Bayern","Berlin","Brandenburg","Bremen","Hamburg","Hessen","Mecklenburg-Vorpommern","Niedersachsen","Nordrhein-Westfalen","Rheinland-Pfalz","Saarland","Sachsen","Sachsen-Anhalt","Schleswig-Holstein","Thüringen"]},{"type":"null"}],"default":null},"kirchensteuer":{"type":"boolean","default":false},"filing_status":{"type":"string","enum":["single","joint"],"default":"single"},"sparerpauschbetrag_remaining":{"type":"number","minimum":0,"maximum":2000,"default":1000,"description":"Remaining EUR allowance for single-year tax calculations. Multi-year projections use the full annual statutory allowance based on filing_status."}},"default":{"bundesland":null,"kirchensteuer":false,"filing_status":"single","sparerpauschbetrag_remaining":1000},"additionalProperties":false},"currency":{"type":"string","enum":["EUR","USD","GBP","CHF","PLN","CZK"],"default":"EUR","description":"Unit of every amount in the inputs and the result. The math is the same in every currency; German tax requires EUR."},"taxJurisdiction":{"type":"string","enum":["DE","OTHER"],"default":"DE","description":"DE applies the German tax model (EUR only). OTHER applies ownTaxRatePct to the gain share, with no German exemption, allowance or advance tax."},"ownTaxRatePct":{"type":"number","minimum":0,"maximum":60,"default":0,"description":"Percentage points of tax on investment gains: 15 means 15%. 0 shows the result before tax. Used only with taxJurisdiction OTHER."}},"additionalProperties":false,"description":"Coast FIRE requires a future target age and a nominal return above 2% (the model inflation assumption)."},"resultSchema":{"type":"object","properties":{"fireNumber":{"type":"number","description":"EUR, not cents."},"fireNumberPreTax":{"type":"number","description":"EUR, not cents."},"yearsToFire":{"type":["number","null"],"description":"Null means the target was not reached within the 50-year modeled horizon."},"monthlyContributionNeeded":{"type":["number","null"],"description":"Null unless an independent target retirement age is supplied."},"coastFireNumber":{"type":["number","null"],"description":"Null when Coast FIRE does not apply."},"coastFireAge":{"type":["number","null"],"description":"Absolute age in years; null when Coast FIRE age is not applicable, including an already-funded portfolio."},"baristaIncomeNeeded":{"type":["number","null"],"description":"Annual part-time income in EUR; null when the Barista calculation does not apply."},"baristaPortfolioNeeded":{"type":["number","null"],"description":"Null when the Barista calculation does not apply."},"effectiveMultiplier":{"type":"number","description":"Multiple of annual expenses, not a percentage or EUR amount."}},"required":["fireNumber","fireNumberPreTax","yearsToFire","monthlyContributionNeeded","coastFireNumber","coastFireAge","baristaIncomeNeeded","baristaPortfolioNeeded","effectiveMultiplier"],"additionalProperties":false},"operationId":"calculateFireRechner","example":{"inputs":{"monthlyExpenses":2000,"currentPortfolio":100000,"monthlyContribution":1500,"annualReturnPct":7,"withdrawalRatePct":3.5,"currentAge":30,"partTimeIncome":1000,"targetRetirementAge":55,"variant":"regular","taxProfile":{"bundesland":null,"kirchensteuer":false,"filing_status":"single","sparerpauschbetrag_remaining":1000},"currency":"EUR","taxJurisdiction":"DE","ownTaxRatePct":0},"locale":"en"}},{"slug":"fondskosten","title":"Investment fee calculator","description":"What ongoing costs take from your wealth over the years.","endpoint":"/api/v1/public/calculators/fondskosten","methodology":"https://investboard.com/calculators/api/methodology#calculator-fondskosten","inputSchema":{"type":"object","properties":{"initialAmount":{"type":"number","minimum":0,"maximum":100000000,"default":10000,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"monthlyContribution":{"type":"number","minimum":0,"maximum":100000000,"default":300,"description":"EUR, numeric JSON value (not cents or a formatted string)."},"years":{"type":"integer","minimum":1,"maximum":50,"default":20},"annualReturnPct":{"type":"number","minimum":0,"maximum":15,"default":7,"description":"Yearly return before costs, percentage points: 7 means 7%."},"annualCostPct":{"type":"number","minimum":0,"maximum":5,"default":1.5,"description":"Your yearly cost rate, percentage points, 0 to 5."},"comparisonCostPct":{"type":"number","minimum":0,"maximum":5,"default":0.2,"description":"The cost rate to compare against, percentage points, 0 to 5."},"currency":{"type":"string","enum":["EUR","USD","GBP","CHF","PLN","CZK"],"default":"EUR","description":"Unit of every amount in the inputs and the result. The math is the same in every currency; German tax requires EUR."}},"additionalProperties":false},"resultSchema":{"type":"object","properties":{"yours":{"type":"object","properties":{"finalValue":{"type":"number","description":"In the inputs' currency, not cents."},"contributions":{"type":"number","description":"Initial amount plus every monthly contribution."},"feesPaid":{"type":"number","description":"In the inputs' currency, not cents."},"yearly":{"type":"array","items":{"type":"object","properties":{"year":{"type":"integer","minimum":0,"description":"Year index from the start of the projection."},"value":{"type":"number","description":"In the inputs' currency, not cents."}},"required":["year","value"],"additionalProperties":false},"description":"Year 0 (the initial amount) to the final year."}},"required":["finalValue","contributions","feesPaid","yearly"],"additionalProperties":false},"comparison":{"type":"object","properties":{"finalValue":{"type":"number","description":"In the inputs' currency, not cents."},"contributions":{"type":"number","description":"Initial amount plus every monthly contribution."},"feesPaid":{"type":"number","description":"In the inputs' currency, not cents."},"yearly":{"type":"array","items":{"type":"object","properties":{"year":{"type":"integer","minimum":0,"description":"Year index from the start of the projection."},"value":{"type":"number","description":"In the inputs' currency, not cents."}},"required":["year","value"],"additionalProperties":false},"description":"Year 0 (the initial amount) to the final year."}},"required":["finalValue","contributions","feesPaid","yearly"],"additionalProperties":false},"difference":{"type":"number","description":"comparison.finalValue - yours.finalValue: positive when your cost rate is the higher one."},"shareOfFinalValue":{"type":"number","description":"The difference as a share of the larger final value: 0.152 means 15.2%."}},"required":["yours","comparison","difference","shareOfFinalValue"],"additionalProperties":false},"operationId":"calculateFondskosten","example":{"inputs":{"initialAmount":10000,"monthlyContribution":300,"years":20,"annualReturnPct":7,"annualCostPct":1.5,"comparisonCostPct":0.2,"currency":"EUR"},"locale":"en"}},{"slug":"verlust-aufholen","title":"Loss recovery calculator","description":"How large a gain makes up a loss?","endpoint":"/api/v1/public/calculators/verlust-aufholen","methodology":"https://investboard.com/calculators/api/methodology#calculator-verlust-aufholen","inputSchema":{"type":"object","properties":{"lossPct":{"type":"number","exclusiveMinimum":0,"exclusiveMaximum":100,"default":30,"description":"The fall, percentage points above 0 and below 100: 30 means 30%."},"portfolioValue":{"type":"number","minimum":0,"maximum":100000000,"default":0,"description":"The value before the fall; 0 leaves valueAfterLoss and amountToRecover out (null)."},"annualReturnPct":{"type":"number","minimum":0,"maximum":15,"default":7,"description":"Steady yearly return for the recovery time, percentage points; 0 leaves yearsToRecover out (null)."},"currency":{"type":"string","enum":["EUR","USD","GBP","CHF","PLN","CZK"],"default":"EUR","description":"Unit of every amount in the inputs and the result. The math is the same in every currency; German tax requires EUR."}},"additionalProperties":false},"resultSchema":{"type":"object","properties":{"requiredGainPct":{"type":"number","description":"Percentage points: 4 means 4%."},"yearsToRecover":{"type":["number","null"],"description":"Null when annualReturnPct is 0."},"valueAfterLoss":{"type":["number","null"],"description":"Null when portfolioValue is 0."},"amountToRecover":{"type":["number","null"],"description":"Null when portfolioValue is 0."},"table":{"type":"array","items":{"type":"object","properties":{"lossPct":{"type":"number","description":"Percentage points: 4 means 4%."},"requiredGainPct":{"type":"number","description":"Percentage points: 4 means 4%."}},"required":["lossPct","requiredGainPct"],"additionalProperties":false},"description":"The common falls 10, 20, 30, 40, 50 and 60%."}},"required":["requiredGainPct","yearsToRecover","valueAfterLoss","amountToRecover","table"],"additionalProperties":false},"operationId":"calculateVerlustAufholen","example":{"inputs":{"lossPct":30,"portfolioValue":0,"annualReturnPct":7,"currency":"EUR"},"locale":"en"}},{"slug":"rebalancing","title":"Portfolio rebalancing calculator","description":"Calculate trades towards target weights, or allocate new contributions without selling. Compare the resulting portfolio mix. Tax and fees are excluded.","endpoint":"/api/v1/public/calculators/rebalancing","methodology":"https://investboard.com/calculators/api/methodology#calculator-rebalancing","inputSchema":{"type":"object","properties":{"rows":{"type":"array","items":{"type":"object","properties":{"assetClass":{"type":"string","enum":["equities","bonds","crypto","alternatives","gold","cash","real_estate","commodities"]},"currentValue":{"type":"number","minimum":0,"maximum":100000000,"description":"Current value of the asset class, in the inputs' currency."},"targetPct":{"type":"number","minimum":0,"maximum":100,"description":"Target weight, percentage points: 60 means 60%."}},"required":["assetClass","currentValue","targetPct"],"additionalProperties":false},"minItems":1,"maxItems":8,"default":[{"assetClass":"equities","currentValue":70000,"targetPct":60},{"assetClass":"bonds","currentValue":20000,"targetPct":30},{"assetClass":"cash","currentValue":10000,"targetPct":10}],"description":"One row per asset class, each class once; the targetPct values add up to 100."},"mode":{"type":"string","enum":["buy_and_sell","new_money"],"default":"buy_and_sell","description":"buy_and_sell: buys and sells back to the targets. new_money: newMoney only, no sells."},"newMoney":{"type":"number","minimum":0,"maximum":100000000,"default":10000,"description":"Money to add; used only when mode is new_money."},"currency":{"type":"string","enum":["EUR","USD","GBP","CHF","PLN","CZK"],"default":"EUR","description":"Unit of every amount in the inputs and the result. The math is the same in every currency; German tax requires EUR."}},"additionalProperties":false},"resultSchema":{"type":"object","properties":{"total":{"type":"number","description":"The current total, before any new money."},"rows":{"type":"array","items":{"type":"object","properties":{"assetClass":{"type":"string","enum":["equities","bonds","crypto","alternatives","gold","cash","real_estate","commodities"]},"currentValue":{"type":"number","description":"In the inputs' currency, not cents."},"targetPct":{"type":"number","description":"Percentage points: 4 means 4%."},"currentPct":{"type":"number","description":"Percentage points: 4 means 4%."},"change":{"type":"number","description":"Positive buys, negative sells."},"afterValue":{"type":"number","description":"In the inputs' currency, not cents."},"afterPct":{"type":"number","description":"Percentage points: 4 means 4%."}},"required":["assetClass","currentValue","targetPct","currentPct","change","afterValue","afterPct"],"additionalProperties":false}},"totalToMove":{"type":"number","description":"Sum of the buys."}},"required":["total","rows","totalToMove"],"additionalProperties":false},"operationId":"calculateRebalancing","example":{"inputs":{"rows":[{"assetClass":"equities","currentValue":70000,"targetPct":60},{"assetClass":"bonds","currentValue":20000,"targetPct":30},{"assetClass":"cash","currentValue":10000,"targetPct":10}],"mode":"buy_and_sell","newMoney":10000,"currency":"EUR"},"locale":"en"}},{"slug":"dividenden-einkommen","title":"Dividend income calculator","description":"How much capital does your dividend income goal need?","endpoint":"/api/v1/public/calculators/dividenden-einkommen","methodology":"https://investboard.com/calculators/api/methodology#calculator-dividenden-einkommen","inputSchema":{"type":"object","properties":{"monthlyNetIncome":{"type":"number","minimum":1,"maximum":100000000,"default":1000,"description":"The income wanted each month, after tax."},"dividendYieldPct":{"type":"number","minimum":0.1,"maximum":15,"default":3,"description":"Yearly dividend yield, percentage points: 3 means 3%."},"source":{"type":"string","enum":["equity_funds","shares"],"default":"equity_funds","description":"German model only: equity_funds get the 30% partial exemption, shares none."},"taxProfile":{"type":"object","properties":{"bundesland":{"anyOf":[{"type":"string","enum":["Baden-Württemberg","Bayern","Berlin","Brandenburg","Bremen","Hamburg","Hessen","Mecklenburg-Vorpommern","Niedersachsen","Nordrhein-Westfalen","Rheinland-Pfalz","Saarland","Sachsen","Sachsen-Anhalt","Schleswig-Holstein","Thüringen"]},{"type":"null"}],"default":null},"kirchensteuer":{"type":"boolean","default":false},"filing_status":{"type":"string","enum":["single","joint"],"default":"single"},"sparerpauschbetrag_remaining":{"type":"number","minimum":0,"maximum":2000,"default":1000,"description":"Remaining EUR allowance for single-year tax calculations. Multi-year projections use the full annual statutory allowance based on filing_status."}},"default":{"bundesland":null,"kirchensteuer":false,"filing_status":"single","sparerpauschbetrag_remaining":1000},"additionalProperties":false},"currency":{"type":"string","enum":["EUR","USD","GBP","CHF","PLN","CZK"],"default":"EUR","description":"Unit of every amount in the inputs and the result. The math is the same in every currency; German tax requires EUR."},"taxJurisdiction":{"type":"string","enum":["DE","OTHER"],"default":"DE","description":"DE applies the German tax model (EUR only). OTHER applies ownTaxRatePct to the gain share, with no German exemption, allowance or advance tax."},"ownTaxRatePct":{"type":"number","minimum":0,"maximum":60,"default":0,"description":"Percentage points of tax on investment gains: 15 means 15%. 0 shows the result before tax. Used only with taxJurisdiction OTHER."}},"additionalProperties":false},"resultSchema":{"type":"object","properties":{"capitalNeeded":{"type":"number","description":"In the inputs' currency, not cents."},"annualGross":{"type":"number","description":"In the inputs' currency, not cents."},"annualTax":{"type":"number","description":"In the inputs' currency, not cents."},"annualNet":{"type":"number","description":"In the inputs' currency, not cents."},"monthlyGross":{"type":"number","description":"In the inputs' currency, not cents."},"monthlyNet":{"type":"number","description":"In the inputs' currency, not cents."},"effectiveTaxRatePct":{"type":"number","description":"Percentage points: 4 means 4%."}},"required":["capitalNeeded","annualGross","annualTax","annualNet","monthlyGross","monthlyNet","effectiveTaxRatePct"],"additionalProperties":false},"operationId":"calculateDividendenEinkommen","example":{"inputs":{"monthlyNetIncome":1000,"dividendYieldPct":3,"source":"equity_funds","taxProfile":{"bundesland":null,"kirchensteuer":false,"filing_status":"single","sparerpauschbetrag_remaining":1000},"currency":"EUR","taxJurisdiction":"DE","ownTaxRatePct":0},"locale":"en"}}]},"error":null,"meta":{}}