Claude
Skills
Sign in
Back

financial-analysis

Included with Lifetime
$97 forever

This skill should be used when the user asks to "analyze finances", "financial position", "German tax", "pension analysis", "real estate purchase Germany", "expat finances Berlin", "Steuerklasse", "Kapitalertragsteuer", "investment comparison", "net worth overview", "savings rate", "Steuererklarung", "Grunderwerbsteuer", "retirement projection", "financial snapshot", "how much am I worth", or "budget review". Core knowledge skill providing German financial system context for an English-speaking expat in Berlin.

Code Review

What this skill does


# Financial Analysis — Core Context

Provide quantitative, German-regulation-grounded financial analysis for an English-speaking expat living in Berlin. All output in English. All currency in EUR. All tax law references based on current German Einkommensteuergesetz (EStG) and related statutes.

## User Profile (Baseline Assumptions)

Apply these assumptions to every analysis unless overridden by data in `finance/data/`:

| Parameter | Value |
|---|---|
| Residence | Berlin, Germany |
| Tax residency | Germany — unbeschrankte Steuerpflicht (unlimited tax liability) |
| Steuerklasse | I (single, no dependents) |
| Household | Single, no children |
| Citizenship status | In progress (Einburgerung) |
| Real estate status | Currently renting; exploring purchase in Berlin and Brandenburg |
| Financial literacy | Beginner for German-specific topics; skip universally obvious concepts |
| Language | Source documents in German; all output in English |

## Analysis Principles

### Be Quantitative

Never state "this is expensive" or "returns are low" without numbers. Calculate actual amounts. Compare against benchmarks. Show projections over 5, 10, 20, and 30-year horizons where relevant. Express percentages to two decimal places and absolute amounts to the nearest euro.

Present every financial comparison as a numbered scenario analysis. For example, when comparing rent vs. buy: label Scenario A (continue renting) and Scenario B (purchase), then calculate the net position at year 10, 20, and 30 under each. Include opportunity cost — capital not spent on Kaufnebenkosten could be invested elsewhere.

When analyzing pension products, always compute the internal rate of return (IRR) net of all fees and taxes. Compare against a benchmark: a low-cost MSCI World ETF accumulating at an assumed 7% gross nominal return, minus Abgeltungsteuer on realization. This benchmark makes the true cost of insurance wrappers and guarantee fees visible.

For savings rate analysis, express the savings rate as a percentage of Nettoeinkommen (not gross). Break down where savings flow: emergency fund, ETF-Sparplan, pension, Bausparvertrag, or other vehicles. Flag when the total savings allocation exceeds available Nettoeinkommen minus fixed costs.

### Show Math

Include formulas and state assumptions explicitly. State every assumption in a dedicated "Assumptions" block at the top of each calculation section. Flag which assumptions are user-provided data and which are estimates or defaults.

For tax calculations, write out each step:

```
Gross salary:                    €X
- Sozialversicherungsbeitrage:   €Y
= Bruttoeinkommen (taxable):    €Z
- Income tax (per EStG tariff):  €A
- Solidaritatszuschlag:          €B
= Nettoeinkommen:               €C
```

When projecting investment growth, state the assumed return rate, inflation rate, and fee drag separately. Use compound interest formula: `FV = PV * (1 + r)^n` and show intermediate values at key milestones (year 5, 10, 15, 20, 25, 30).

For real-value projections, always present both nominal and inflation-adjusted (real) figures. Use the ECB target inflation rate of 2% as default unless a different rate is specified or retrieved via web search. Label columns clearly: "Nominal EUR" vs. "Real EUR (2026 purchasing power)."

### Cross-Check Results

After every major calculation, perform a sanity check. Compare the result against known benchmarks or rules of thumb:

- Net salary should be approximately 55–65% of gross for Steuerklasse I at typical Berlin salaries
- Total Kaufnebenkosten in Berlin should be 8–12% of purchase price (depending on broker involvement)
- A Riester contract with fees above 1.5% Effektivkosten per year is expensive relative to market average
- Savings rate above 20% of Nettoeinkommen is above the German median; below 10% warrants a budget review

If results deviate significantly from these ranges, re-examine the inputs and flag the discrepancy.

### Use Current Data

Use web search to retrieve current figures before every analysis. Do not rely on cached or training data for:

- Mortgage interest rates (Bauzinsen) — check Interhyp, Dr. Klein, or Europace
- Berlin and Brandenburg property prices per square meter — check Immoscout24 Preisatlas or Guthmann
- ETF total expense ratios and performance — check justETF or extraETF
- German tax thresholds and social insurance contribution ceilings (Beitragsbemessungsgrenze) — check Bundesfinanzministerium or Haufe
- Inflation rates — check Destatis (Statistisches Bundesamt)

### Apply German Tax Law

Reference the following tax parameters in calculations:

**Income Tax (Einkommensteuer)**
- Apply the current EStG tariff (progressive rates from 14% to 45%)
- Grundfreibetrag (basic tax-free allowance): look up current year value via web search
- Solidaritatszuschlag (Soli): 5.5% of income tax, but only when income tax exceeds the Freigrenze
- Kirchensteuer: not applicable unless the user states church membership (assume none)

**Capital Gains Tax (Kapitalertragsteuer / Abgeltungsteuer)**
- Flat rate: 25%
- Plus Solidaritatszuschlag: 5.5% of the 25% = 1.375%
- Effective rate without Kirchensteuer: 26.375%
- Sparerpauschbetrag (saver's lump sum): EUR 1,000 for singles
- Apply Freistellungsauftrag before calculating tax on investment income
- For Gunstigerprufung: if the marginal income tax rate is below 25%, apply the lower rate instead

**Real Estate Transfer Tax (Grunderwerbsteuer)**
- Berlin: 6.0%
- Brandenburg: 6.5%
- Include in total purchase cost calculations alongside notary fees (~1.5%), land registry fees (~0.5%), and optional broker commission (Maklerprovision, typically 3.57% including VAT, split buyer/seller in Berlin)

**Savings Incentives**
- Wohnungsbauprämie: available for income below threshold; contribute to Bausparvertrag
- Arbeitnehmersparzulage: employer vermogenswirksame Leistungen (VL) contribution; check eligibility based on income limits
- Riester-Zulage: EUR 175 basic allowance; check if the user qualifies based on pension insurance membership

## Data Sources

### Input Data

Read financial data from the following locations within the Obsidian vault:

- **`finance/data/`** — structured markdown files: `pension.md`, `bank-accounts.md`, `employment.md`, `monthly-budget.md`, `property-goals.md`
- **`finance/docs/`** — raw German document transcriptions: Standmitteilungen, Kontoauszuge, Arbeitsvertrag, Nebenkostenabrechnungen

Parse markdown tables and key-value pairs from these files. When a data file is missing or incomplete, flag the gap and state what assumptions were made.

### Reference Material

Load the German financial system reference from `${CLAUDE_PLUGIN_ROOT}/skills/financial-analysis/references/german-financial-system.md` for term definitions, tax bracket details, and regulatory background.

For specific analyses, use the dedicated skills: `retirement-readiness` for three-pillar pension projections and Versorgungslücke analysis, `capital-allocation` for integrated pension vs. real estate allocation recommendations, and `evaluate-pension` for single-product pension evaluation.

### Output Destination

Write all generated reports to `finance/reports/` using the naming pattern:

```
[analysis-type]-YYYY-MM.md
```

Examples: `pension-evaluation-2026-04.md`, `real-estate-readiness-2026-04.md`, `tax-check-2026-04.md`, `net-worth-2026-04.md`.

## Output Format

### Obsidian-Compatible Markdown

Generate all reports as Obsidian-compatible markdown with the following structure:

**YAML Frontmatter (required):**

```yaml
---
title: "[Analysis Type] — [Month Year]"
date: YYYY-MM-DD
type: financial-report
status: draft
tags:
  - finance
  - [analysis-type]
---
```

**Wiki-Links:** Use `[[double-bracket]]` links when referencing other vault files, e.g., `[[pension]]`, `[[bank-accounts]]`, `[[glossary]]`.

**Callouts:** Use Obsidian callout syntax for inline explanations and warnings:

```markdown
> [!info] Kapitalertragsteuer (Capital Gains Tax)
> 

Related in Code Review