Skip to content

Instantly share code, notes, and snippets.

View Morendil's full-sized avatar

Laurent Bossavit Morendil

View GitHub Profile
@Morendil
Morendil / fiche-de-poste-lbo.md
Created September 12, 2018 08:18
Quand on m'a demandé fin 2014 d'écrire ma fiche de poste…

L'un des dictons de la nouvelle économie est "culture eats strategy for breakfast": non pas définir une stratégie au sommet, puis l'imposer a la base par le jeu classique de la hiérarchie, mais veiller a partager des valeurs, et laisser chacun les transcrire en actes en s'adaptant aux situations. Le paradoxe, c'est qu'on ne décrète pas un changement culturel: la culture, c'est la somme de ce que l'on fait de façon si habituelle qu'on y réfléchit meme plus. La culture émerge de pratiques, d'invariants de comportement.

On ne décrete pas le recours a la multitude, le changement culturel, la transformation de l'entreprise en plateforme: on en crée les conditions. On peut encourager, protéger, récompenser (sans ostentation) des comportements et des pratiques; vérifier périodiquement leur adéquation aux valeurs. C'est aux individus de faire le reste, c'est-à-dire l'essentiel.

Voici donc un catalogue de pratiques, de comportements, de tactiques: nécessairement provisoire, mais visant à servir de point de départ.

@Morendil
Morendil / test_yamls.py
Created October 20, 2018 20:15
openfisca-run-test replacement using Pytest
from yaml import CLoader as Loader, CDumper as Dumper
import pytest
import glob
import yaml
import numpy
from openfisca_core import scenarios
from openfisca_core.scripts import build_tax_benefit_system
asf for 2014-11
asf_elig for 2014-11
en_couple for 2014-11
nb_parents for 2014-11
residence_mayotte for 2014-11
asf_elig_enfant for 2014-11
autonomie_financiere for 2014-11
salaire_net for 2014-05
salaire_imposable for 2014-05
salaire_de_base for 2014-05
asf for 2014-11
asf_elig for 2014-11
en_couple for 2014-11
nb_parents for 2014-11
residence_mayotte for 2014-11
asf_elig_enfant for 2014-11
autonomie_financiere for 2014-11
salaire_net for 2014-05
salaire_imposable for 2014-05
crds_salaire for 2014-05

An overview of the most important classes in OpenFisca Core, from an implementation perspective. This does not tell you what the classes are conceptually, but sketches what their collaboration looks like as of this writing.

Keep in mind that this being an implementation-level model, it may have room for improvement. For instance, if you want to know the Entity associated with a Variable, you cannot ask a TaxBenefitSystem directly, you have to have built a Simulation first.

TaxBenefitSystem

  • is a repository of Variable instances
  • is a repository of ParameterNode instances
  • is a repository of Entity types (not instances)

Variable

- version: 2
preprocess: [preprocessor_module1, preprocessor_module2]
name: Title of the situation
description: Description of the situation
period: 2015-02
relative_error_margin: 0.02
absolute_error_margin: 0.02
input:
- instance: individu
- id: ind1

When we talk about "entities" we talk about two different realities:

  • first, we talk in the abstract about what sort of "things" exist in our model - people, families, tax households - and what sort of relationships exist; for instance, people in a family are either parents or children
  • but also, when we start loading data, we talk about concrete people and families; how many people, how many families, how many parents and children are in the first and second family, and so on.

This is one of the strengths of OpenFisca, conceptually. The implementation… left a lot to be desired.

Previously we had this:

Figure 1

{"individus":{"592daa923889d66bb4309e89":{"salaire_net":{},"boursier":{"2017-05":false,"2017-04":false,"2017-03":false,"2017-02":false},"date_naissance":{"2017-05":"1989-03-12","2017-04":"1989-03-12","2017-03":"1989-03-12","2017-02":"1989-03-12"},"echelon_bourse":{"2017-05":-1,"2017-04":-1,"2017-03":-1,"2017-02":-1},"enfant_a_charge":{"2017":false},"enfant_place":{"2017-05":false,"2017-04":false,"2017-03":false,"2017-02":false},"epargne_revenus_non_imposables":{"month:2012-01:120":0},"livret_a":{"month:2012-01:120":0},"statut_marital":{"2017-05":"celibataire","2017-04":"celibataire","2017-03":"celibataire","2017-02":"celibataire"},"taux_incapacite":{"2017-05":false,"2017-04":false,"2017-03":false,"2017-02":false},"tns_auto_entrepreneur_type_activite":{"2017-05":"bic","2017-04":"bic","2017-03":"bic","2017-02":"bic"},"tns_autres_revenus_type_activite":{"2017-05":"bic","2017-04":"bic","2017-03":"bic","2017-02":"bic"},"tns_micro_entreprise_type_activite":{"2017-05":"bic","2017-04":"bic","2017-03":"bic","2017-02":
Time for revenu_disponible was 4.306314468383789
Time for impots_directs was 9.870529174804688e-05
Time for revenu_disponible was 4.315067291259766
Time for impots_directs was 0.0001049041748046875
Time for ass was 1.1636996269226074
Time for ass was 0.00011420249938964844
Time for ass was 7.963180541992188e-05
Time for ass was 0.03228926658630371
Time for caah was 0.030699729919433594
Time for caah was 0.019005537033081055
Time for revenu_disponible was 5.119938373565674
Time for impots_directs was 9.012222290039062e-05
Time for revenu_disponible was 5.181142807006836
Time for impots_directs was 9.059906005859375e-05
Time for ass was 2.4069666862487793
Time for ass was 0.09560823440551758
Time for ass was 0.09212183952331543
Time for ass was 0.11110782623291016
Time for caah was 0.23575711250305176
Time for caah was 0.1710975170135498