Skip to main content

Czech tax and benefit model for OpenFisca

Project description

OpenFisca-Czechia

PyPi

[EN] Introduction

OpenFisca is a versatile simulation and microsimulation free software. This repository contains the OpenFisca model of the Czech tax and benefit system. Therefore, the working language here is Czech. You can however check the general OpenFisca documentation in English.

[CS] Introduction

OpenFisca je svobodný software pro simulace a mikrosimulace. Tento repozitář obsahuje OpenFisca model českého daňového a dávkového systému. Dále najdete instrukce k použití modelu, doporučujeme ale nejdřív projít obecnou dokumentaci k OpenFisca.

Co model obsahuje

Model aktuálně obsahuje:

  • výpočet DSSP (dávky státní sociální pomoci) podle legislativy platné k červenci 2026 (bez majetkového testu)
  • výpočet daně z příjmu fyzických osob

Soubory modelu najdete ve složce openfisca_czechia.

  • Parametry použité v modelu jsou v podsložce parameters
  • Vstupy a výpočty jsou v podsložce variables
  • Testy pro výpočty najdete v podsložce tests

Plán dalšího vývoje

  • Slevy DPFO
  • Zdravotní a sociální odvody z pracovního příjmu
  • Exekuční a insolvenční srážky
  • Změny DSSP s plánovanou platností k 1. říjnu 2026 (normativy podle okresů)
  • Majetkový test DSSP
  • Příjmy z podnikání (OSVČ)

Použití jako balíček v Python skriptech

Doporučujeme použít nástroj uv pro správu verzí Pythonu a virtuálního prostředí.

Pokud nemáte připravený projekt pomocí uv, pak v nové složce nejdříve spusťte následující příkaz, který i nainstaluje vhodnou verzi Pythonu. Doporučená verze je 3.13, nejnižší podporovaná je 3.9.

uv init --python 3.13

Následně přidejte do projektu balíček openfisca-czechia.

uv add openfisca-czechia

A pak použijte balíček například pomocí následujícího kódu (dokumentace k Python API):

from openfisca_core.simulation_builder import SimulationBuilder
from openfisca_czechia import CountryTaxBenefitSystem

TEST_CASE = {
    "osoby": {
        "dospely1": {
            "cisty_prijem_osoby": {"2026-01": 8000},
            "dssp_je_osoba_pracovne_aktivni": {"2026-01": True},
            "dssp_je_osoba_zranitelna": {"2026-01": True},
        },
        "dite1": {
            "vek": {"2026-01": 2},
            "je_nezaopatrene_dite": {"2026-01": True},
            "dssp_je_osoba_zranitelna": {"2026-01": True},
        },
    },
    "domacnosti": {
        "domacnost1": {
            "clenove": ["dospely1", "dite1"],
            "typ_bydleni": {"2026-01": "byt_nebo_rodinny_dum"},
            "vztah_k_nemovitosti": {"2026-01": "najemni_podnajemni"},
            "dssp_velikost_obce_bydliste": {"2026-01": "praha_a_brno"},
            "naklady_na_najemne": {"2026-01": 12000},
            "dalsi_poplatky_spojene_s_bydlenim": {"2026-01": 2000},
            "naklady_na_energie": {"2026-01": 5000},
        }
    },
}


def main():
    tax_benefit_system = CountryTaxBenefitSystem()

    simulation_builder = SimulationBuilder()
    simulation = simulation_builder.build_from_entities(tax_benefit_system, TEST_CASE)

    dssp = simulation.calculate("dssp", "2026-01")

    slozka_na_bydleni = simulation.get_array("dssp_slozka_na_bydleni", "2026-01")
    slozka_na_zivobyti = simulation.get_array("dssp_slozka_na_zivobyti", "2026-01")
    bonus_na_dite = simulation.get_array("dssp_bonus_na_dite", "2026-01")
    pracovni_bonus = simulation.get_array("dssp_pracovni_bonus", "2026-01")

    print(f"DSSP: {dssp}")
    print(f"- slozka na bydleni: {slozka_na_bydleni}")
    print(f"- slozka na zivobyti: {slozka_na_zivobyti}")
    print(f"- bonus na dite: {bonus_na_dite}")
    print(f"- pracovni bonus: {pracovni_bonus}")


if __name__ == "__main__":
    main()

Pokud je kód v souboru main.py, pak ho spustíte následujícím způsobem:

uv run main.py

Použití přes webové API

Balíček jde spustit jako webový server například pomocí uv následujícím způsobem:

uv run --python 3.13 --with openfisca-core --with openfisca-czechia openfisca serve

To spustí webový server na lokálním portu 5000, tj. http://localhost:5000.

Pak jde spustit simulaci před webové API (dokumentace k webovému API) například pomocí Node.js:

const input = {
  osoby: {
    dospely1: {
      cisty_prijem_osoby: { "2026-01": 8000 },
      dssp_je_osoba_pracovne_aktivni: { "2026-01": true },
      dssp_je_osoba_zranitelna: { "2026-01": true },
    },
    dite1: {
      vek: { "2026-01": 2 },
      je_nezaopatrene_dite: { "2026-01": true },
      dssp_je_osoba_zranitelna: { "2026-01": true },
    },
  },
  domacnosti: {
    domacnost1: {
      clenove: ["dospely1", "dite1"],
      typ_bydleni: { "2026-01": "byt_nebo_rodinny_dum" },
      vztah_k_nemovitosti: { "2026-01": "najemni_podnajemni" },
      dssp_velikost_obce_bydliste: { "2026-01": "praha_a_brno" },
      naklady_na_najemne: { "2026-01": 12000 },
      dalsi_poplatky_spojene_s_bydlenim: { "2026-01": 2000 },
      naklady_na_energie: { "2026-01": 5000 },

      // Proměnné, které pošleme s null se dopočítají
      dssp: { "2026-01": null },
      dssp_slozka_na_bydleni: { "2026-01": null },
      dssp_slozka_na_zivobyti: { "2026-01": null },
      dssp_bonus_na_dite: { "2026-01": null },
      dssp_pracovni_bonus: { "2026-01": null },
    },
  },
};

fetch("http://localhost:5000/calculate", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify(input),
})
  .then((response) => response.json())
  .then((output) => {
    const domacnost1 = output.domacnosti.domacnost1;

    console.log("Výše DSSP pro zadanou domácnost:", {
      dssp: domacnost1.dssp,
      slozka_na_bydleni: domacnost1.dssp_slozka_na_bydleni,
      slozka_na_zivobyti: domacnost1.dssp_slozka_na_zivobyti,
      bonus_na_dite: domacnost1.dssp_bonus_na_dite,
      pracovni_bonus: domacnost1.dssp_pracovni_bonus,
    });
  });

Licence

Kód je dostupný pod licencí AGPLv3

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openfisca_czechia-0.1.2.tar.gz (94.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

openfisca_czechia-0.1.2-py3-none-any.whl (69.2 kB view details)

Uploaded Python 3

File details

Details for the file openfisca_czechia-0.1.2.tar.gz.

File metadata

  • Download URL: openfisca_czechia-0.1.2.tar.gz
  • Upload date:
  • Size: 94.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for openfisca_czechia-0.1.2.tar.gz
Algorithm Hash digest
SHA256 c455953c53e43e9d8dd2b7fd44a8940545c73864cd539f7b6bc88b4fe34d3214
MD5 2bf08b3f6d1f48e40515ac259c6f2ad9
BLAKE2b-256 4547a69fd936b0708b1911c1103187f3a834adef73eee859dc62b8a742a5aa66

See more details on using hashes here.

File details

Details for the file openfisca_czechia-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for openfisca_czechia-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b58334a6ee44dbda6b57139cb69ea679765bb0f5f61ca5e70290ba9d7af2437c
MD5 21d4d6367e77a54f50b98b62bc61ccce
BLAKE2b-256 dfdc3040591d4338b209c6287d7cc11dfd6ebab24604e5b21caca72a48a2ad14

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page