{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Variation du salaire de base" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Initialisations Python" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from datetime import date\n", "import matplotlib.pyplot as plt\n", "#importer numpy permet de coler deux sections de courbes (nécessaire quand on fait varier le salaire de base en-dessous du SMIC mensuel)\n", "import numpy as np\n", "import openfisca_france\n", "from openfisca_core import tools\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Initialisations OpenFisca" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "tax_benefit_system = openfisca_france.FranceTaxBenefitSystem()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "date_naissance_parent1 = date(1980, 1, 1)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "nb_heures_par_mois_temps_plein = 35 * 52 / 12.0\n", "smic_horaire = 9.670" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# On commence par simuler la variation de salaire entre 0 € et le SMIC mensuel\n", "# Entre 0 € et le SMIC mensuel, quand le salaire de base augmente, c'est le volume horaire qui augmente (de 0 à 35 heures hendomadaires)\n", "# Le salaire horaire quant à lui reste fixé au SMIC horaire\n", "\n", "scenario_under_smic = tax_benefit_system.new_scenario().init_single_entity(\n", " axes = [\n", " [\n", " dict(\n", " count = 10,\n", " min = 0,\n", " max = nb_heures_par_mois_temps_plein,\n", " name = 'heures_remunerees_volume',\n", " ),\n", " dict(\n", " count = 10,\n", " min = 0,\n", " max = nb_heures_par_mois_temps_plein * smic_horaire,\n", " name = 'salaire_de_base',\n", " ),\n", " ],\n", " ],\n", " period = '2016-01',\n", " parent1 = dict(\n", " date_naissance = date_naissance_parent1,\n", " contrat_de_travail = 1, # temps partiel\n", " allegement_fillon_mode_recouvrement = 1, # anticipe_regularisation_fin_de_periode\n", " ),\n", " )" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "simulation_under_smic = scenario_under_smic.new_simulation()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "salaire_de_base_under_smic = simulation_under_smic.calculate('salaire_de_base', '2016-01')\n", "salaire_de_base_under_smic" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [], "source": [ "allegement_fillon_under_smic = simulation_under_smic.calculate('allegement_fillon', '2016-01')\n", "allegement_fillon_under_smic" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "plt.plot(salaire_de_base_under_smic, allegement_fillon_under_smic)\n", "plt.xlabel(u'Salaire de base (€/mois)')\n", "plt.ylabel(u'Allègement Fillon (€/mois)')\n", "plt.title(u'Au-dessous du SMIC')\n", "plt.grid(True)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "smic_mensuel = nb_heures_par_mois_temps_plein * smic_horaire\n", "smic_mensuel" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Au-delà du SMIC mensuel, on suppose que le volume horaire reste fixé à 35 heures,\n", "# et que c'est le salaire horaire qui augmente\n", "\n", "scenario_over_smic = tax_benefit_system.new_scenario().init_single_entity(\n", " axes = [\n", " dict(\n", " count = 50,\n", " min = smic_mensuel,\n", " max = 5000,\n", " name = 'salaire_de_base',\n", " ),\n", " ],\n", " period = '2016-01',\n", " parent1 = dict(\n", " date_naissance = date_naissance_parent1,\n", " contrat_de_travail = 0, # temps plein\n", " allegement_fillon_mode_recouvrement = 1, # anticipe_regularisation_fin_de_periode\n", " ),\n", " )" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "simulation_over_smic = scenario_over_smic.new_simulation()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "salaire_de_base_over_smic = simulation_over_smic.calculate('salaire_de_base', '2016-01')\n", "salaire_de_base_over_smic" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "allegement_fillon_over_smic = simulation_over_smic.calculate('allegement_fillon', '2016-01')\n", "allegement_fillon_over_smic" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "plt.plot(salaire_de_base_over_smic, allegement_fillon_over_smic)\n", "plt.xlabel(u'Salaire de base (€/mois)')\n", "plt.ylabel(u'Allègement Fillon (€/mois)')\n", "plt.title(u'Au-dessus du SMIC')\n", "plt.grid(True)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# On crée ici la variable \"salaire_de_base\" qui est l'enchainement du segment : 0 €- SMIC mensuel et du segment SMIC mensuel - au-delà\n", "# le crochet [:-1] permet d'éviter que l'on ait l'observation \"SMIC mensuel\" en doublon\n", "\n", "salaire_de_base = np.concatenate([salaire_de_base_under_smic[:-1], salaire_de_base_over_smic])" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "allegement_fillon = np.concatenate([allegement_fillon_under_smic[:-1], allegement_fillon_over_smic])" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "plt.plot(salaire_de_base, allegement_fillon)\n", "# plt.plot(salaire_de_base_under_smic, allegement_fillon_under_smic, label=u'Temps partiel de 0 à 35h/mois')\n", "# plt.plot(salaire_de_base_over_smic, allegement_fillon_over_smic, label=u'Temps plein')\n", "plt.xlabel(u'Salaire de base (€/mois)')\n", "plt.ylabel(u'Allègement Fillon (€/mois)')\n", "plt.title(u'Variation du salaire de base mensuel avec réduction du volume horaire au-dessous du SMIC')\n", "plt.grid(True)\n", "plt.axvline(x=smic_mensuel, color='r', label='SMIC')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.9" } }, "nbformat": 4, "nbformat_minor": 0 }