Skip to main content

OpenFisca Rules as Code model for Czechia.

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.1.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.1-py3-none-any.whl (69.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: openfisca_czechia-0.1.1.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.1.tar.gz
Algorithm Hash digest
SHA256 c0ef0fc5373019d24ca99a018069e20d8c6d375c883a33ea2db276f3241e2464
MD5 35c40037eb817f7519e1a4c0ced96e44
BLAKE2b-256 ceaf5d92a0d11839f4088e853a1f1c15eb2fad90d5d38c466643bb0dccaa4e53

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for openfisca_czechia-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d702286ecc98a721fd9b57438ab794fcf9ff19f8887982fd048e419127b8af12
MD5 c6b7e5fa847b847eb9c8e48fda5fefd8
BLAKE2b-256 5dd1507362c2c6d886898318fbd48aa40a002c4a6f1174780945dc034b32f6cf

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