Optimisation fiscale avec R

Le cas du deuxième pilier suisse

La difficulté – toute relative – de la fiscalité suisse réside dans ses 3 niveaux – fédéral, cantonal et communal – ainsi que dans son système de retraite partiellement privé et individuel – ce qui n'exclut pas pour autant la mutualisation et le collectif.

Ces caractéristiques en font un parfait exemple pour une programmation avec R, notamment dans le cadre du rachat du deuxième pilier pour mettre en place une stratégie visant à maximaliser la réduction d'impôts qui en découle.

La problématique du deuxième pilier

La prévoyance suisse repose sur 3 piliers : le premier, universel et étatique pourvoyant au strict minimum, le deuxième, la prévoyance professionnelle passant par des caisses de pensions, et enfin le dernier purement individuel.

La fiscalité du troisième pilier limite sa déduction fiscale à un certain montant par année et par personne.

Dans certains cas, lorsque la personne n'a pas cotisé pour toutes ses années – parce qu'elle est arrivée en Suisse tardivement ou qu'elle était à l'étranger durant un certain temps – la question du rachat des cotisations du deuxième pilier peut se poser, notamment pour déterminer s'il vaut mieux se concentrer sur le deuxième ou troisième pilier.

Mais les cotisations versées au deuxième pilier sont aussi soumises à déductions fiscales et, contrairement au troisième pilier, cette déduction n'a pas d'autre limite que celle du rachat maximum.

La question qui se pose donc est : Quelle stratégie de rachat mettre en place pour maximaliser les déductions fiscales sur le deuxième pilier ?

Méthode de calcul du revenu imposable

Pour calculer cette optimisation fiscale, il convient d'abord de comprendre le calcul de l'impôt sur le revenu.

Impôt fédéral

C'est le plus simple à calculer car il n'y a qu'un seul barème pour tous et il ne dépend que du revenu – et aussi si vous êtes célibataire ou marié avec des enfants.

La seule difficulté réside dans le fait que les données ne sont fournies qu'au format PDF et non dans un autre exploitable directement par l'informatique. Mais comme ce barème est assez léger – en comparaison des autres – copier/coller le contenu du PDF dans une fichier ne prend que quelques minutes.

À partir du barème, il ne reste plus qu'à trouver le revenu imposable – ou, plus exactement, la tranche de revenu – et de lire la correspondance dans la colonne suivante.

Impôt cantonal

L'impôt cantonal repose sur un deuxième barème propre au canton dans lequel l'individu est imposable. Chaque canton a le sien, il peut être progressif ou uniforme – flat tax. En règle générale, ce barème est disponible au format PDF et csv et mis à disposition par l'administration fiscale. Ce barème permet notamment de calculer l'impôt cantonal mais également les différences entre les cantons.

De la même façon que pour le barème fédéral, le montant de l'impôt cantonal ne correspond qu'à la ligne du revenu imposable – sauf qu'il est bien plus détaillé que le niveau fédéral.

Impôt communal

L'impôt communal est plus compliqué. Tout comme les cantons, les communes ont leur propre imposition. Cette imposition est fondée sur le barème cantonal, affublé d'une indexation et d'un coefficient.

Pour chaque indexation, il y a un barème différent – il y a en a généralement entre 10 et 15 par canton – et pour chaque commune, il y a un coefficient différent.

Pour la commune, il convient donc de calculer l'impôt comme suit :

  1. Trouver le coefficient et l'indexation de la commune – document généralement mis à disposition par l'administration fiscale– ;

  2. Sélectionner le barème correspondant à l'indexation – document généralement mis à disposition par l'administration fiscale– ;

  3. Identifier le montant de l'impôt pour la tranche de revenu imposable et multiplier ce montant par le coefficient.

Remarque

La méthode de calcul des impôts communaux peuvent éventuellement changer d'un canton à l'autre. Il faut donc vérifier auparavant auprès de l'administration cantonale compétente pour ajuster le calcul, le cas échéant. En général, la méthode de calcul est documentée et mise à disposition.

Quand on vous dit que c'est plus compliqué…

Exemple

Maintenant que nous savons comment calculer l'impôt sur le revenu, prenons un petit exemple.

Prenons le cas d'un individu célibataire sans enfants, ayant un revenu imposable de 103'457 CHF – ce montant est pris au hasard afin d'être plus proche d'une réalité plutôt qu'un compte rond qui ne provoquerait pas d'effet de bord.

Pour ce revenu, l'impôt fédéral, selon le barême, la tranche correspondante est 103'400, soit un impôt fédéral de 3'098,40 CHF.

Notre individu vit dans un canton K, une commune S, avec pour indexation 160 et un coefficient le 1.10 – informations fournies par son administration fiscale.

L'impôt cantonal dépend du barème cantonal. Ce tableau indique que pour son revenu imposable, la tranche est de 103'400, soit un impôt de 10'603,25 CHF.

L'impôt communal dépend du barème communal pour l'indexation 160. Ce tableau indique que pour son revenu imposable, la tranche est de 103'400, soit un impôt de 8'187,40 CHF qu'il faut multiplier par le coefficient de 1.10, soit 9'006,14 CHF.

Au total, notre individu devra aux services fiscaux : 3'098,40 + 10'603,25 + 9'006,14 = 22'707,79 CHF.

Déduction du deuxième pilier

La déduction fiscale du deuxième pilier est légèrement moins intuitive qu'elle en a l'air. En effet, plus notre individu remboursera une somme annuelle importante, plus il bénéficiera d'une réduction d'impôt importante. Cependant, comme il remboursera plus vite, cette déduction fiscale s'étalera moins dans le temps – sur un moins grand nombre d'années. A contrario, plus la somme remboursée sera petite, plus elle s'étalera sur un grand nombre d'années, bénéficiant donc d'une réduction fiscale sur un grand nombre d'années. Vaut-il donc mieux rembourser beaucoup et vite que peu et longtemps ?

C'est donc cette double dimension qui requiert une petite simulation pour déterminer l'optimal.

Ce calcul repose sur l'opération que nous venons de réaliser en définissant un nouveau revenu imposable, c'est-à-dire le revenu imposable de référence moins le montant de rachat.

Exemple

Imaginons que notre individu ait à rembourser – s'il le souhaite – le montant maximal de 85'673 CHF – chiffre encore pris au hasard pour éviter les effets de bord – pour bénéficier de son deuxième pilier à taux plein – le montant de rachat est fourni par la caisse de prévoyance.

S'il décide de rembourser 10'000 CHF par an, son nouveau revenu imposable sera donc de 103'457 - 10'000 = 93'457 CHF, car les cotisations sont déductibles des impôts. Ceci lui fait un nouvel impôt sur le revenu de 19'011,25 CHF.

Il a donc gagné 22'707,79 - 19'011,25 = 3'696,54 CHF pour l'année fiscale.

Cependant, à ce rythme de 10'000 CHF par an, il lui faudra 9 ans pour racheter ses cotisations, selon 8 x 10'000 + 5'673 – la dernière année.

Pour cette dernière année, il déclarera 103'457 - 5'673 = 97'784 CHF, soit un impôt de 20'428,25 CHF, et une réduction fiscale de 22'707,79 - 20'428,25 = 2'279,54 CHF.

Au total, il aura bénéficié d'une réduction d'impôts de : 8 x 3'696,54 + 2'279,54 = 31'851,86 CHF, soit 31'851,86 / 85'673 = 37,2 %, ce qui signifie que les déductions fiscales lui permettent de financer 37,2 % des 85'673 CHF initiaux.

Simulation de l'optimal

Dans notre exemple, nous avons pris au hasard un rembousement annuel de 10'000 CHF. Mais peut-être existe-t-il un montant qui permette de bénéficier d'une déduction fiscale plus importante. Pour répondre à cette question, nous devons mettre en place une simulation.

Cette simulation balayera tous les montants entre 0 et le montant à rembourser afin de déterminer l'optimal. R se prête particulièrement bien à cette simulation grâce à sa capacité à effectuer des opérations sur des vecteurs.

Chargement des données

Les données sont sous la forme de fichiers csv, le barème fédéral réalisé à la main à partir du PDF, le second contenant le barème contonal et communal, un fichier par indexation, fournis par l'administration fiscale.

Pour charger le barème fédéral :

bareme_federal <- read.csv("2-090-D-2011-dfi_Tabelle.txt")

Pour charger le barème cantonal + communal – ici pour l'indexation 160 :

bareme_coms <- read.csv("IC-BAREME-160.txt")

Découpage des deux barèmes pour plus de lisibilité – avec conversion des nombres en taux et montants :

bareme_cantonal <- data.frame("revenus" = bareme_coms$revenus, "impot_cantonal" = bareme_coms$impot_cantonal/ 100, "taux_cantonal" = bareme_coms$taux_cantonal/ 10000)
bareme_communal <- data.frame("revenus" = bareme_coms$revenus, "impot_communal" = bareme_coms$impot_communal/ 100, "taux_communal" = bareme_coms$taux_communal/ 10000)

Définition des paramètres de calcul

Pour effectuer la simulation, nous aurons besoin de quelques paramètres.

Le revenu imposable de référence :

revenu_imposable <- 103457

Le montant de rachat :

total_rachat <- 85673

La durée maximale de rachat (par exemple 45 ans) :

max_duree_rachat <- 45

Le montant annuel de rachat :

rachat_annuel <- 500

Le coefficient communal :

coefficient_communal <- 1.10

Détermination des variables

À partir de ces paramètres, calculons quelques variables.

Le montant minimal de rachat annuel :

montant_min_rachat_par_an <- total_rachat %/% max_duree_rachat

La durée de rachat :

quotient <- total_rachat %/% rachat_annuel
reste <- total_rachat %% rachat_annuel

# Durée de rachat : Nombre d'années de remboursement
duree <- if (reste==0) {
quotient
} else {
quotient + 1
}

Et à partir de là, construisons un vecteur contenant notre base de simulation, l'ensemble des montants annuels possibles à rembourser :

total <- duree * rachat_annuel
paliers <- seq(rachat_annuel, total, rachat_annuel)
# Si le dernier palier est supérieur au montant à rembourser alors le positionner à la valeur à rembourser
paliers_ind <- which.max(paliers)
if (paliers[paliers_ind] > total_rachat) {paliers[paliers_ind] = total_rachat}

Ici, une suite de montants incrémentés de 500 en 500. C'est ce vecteur qui nous permettra de bayaler toutes les possibilités – plutôt que seulement une au hasard.

Une calculette pour les impôts

Il convient aussi de créer une fonction qui calculera le montant total d'imposition pour un revenu imposable donné x :

min_bareme_federal <- min(bareme_federal$revenu_imposable)
min_bareme_cantonal <- min(bareme_cantonal$revenus)
min_bareme_communal <- min(bareme_communal$revenus)

calcul_impots = function(x){
if (x<=0) {
x <- 0
} else {
x <- x
}

if (x<=min_bareme_federal) {x_federal <- min_bareme_federal} else {x_federal <- x}
ind_federal <- max(which(bareme_federal$revenu_imposable<=x_federal))
impot_federal <- bareme_federal$montant[ind_federal]

if (x<=min_bareme_cantonal) {x_cantonal <- min_bareme_cantonal} else {x_cantonal <- x}
ind_cantonal <- max(which(bareme_cantonal$revenus<=x_cantonal))
impot_cantonal <- bareme_cantonal$impot_cantonal[ind_cantonal]

if (x<=min_bareme_communal) {x_communal <- min_bareme_communal} else {x_communal <- x}
ind_communal <- max(which(bareme_communal$revenus<=x_communal))
impot_communal <- bareme_communal$impot_communal[ind_communal] * coefficient_communal

impot_federal + impot_cantonal + impot_communal
}

Calculons avec cela le montant d'imposition pour le revenu imposable de référence, il nous servira à déterminer le gain :

impot_reference <- calcul_impots(revenu_imposable)

Simulation

Créons le dataframe qui permettra de stocker le résultat des calculs :

revenu_declare <- data.frame("reference" = impot_reference, "montant_declare" = revenu_imposable - paliers, "rachat_annuel" = paliers, "impots" = 0, "duree" = total_rachat %/% paliers, "gain_annuel" = 0, "gain_total" = 0, "reste" = 0 )

La simulation s'effectue sur le vecteur de montants et stocke le résultat dans revenu_declare :

# Calcul pour tous les montants annuels
for (x in 1:duree) {
revenu_declare$impots[x] = calcul_impots(revenu_declare$montant[x])
revenu_declare$gain_annuel[x] = impot_reference - revenu_declare$impots[x]
reste <- total_rachat %% (revenu_declare$rachat_annuel[x] * revenu_declare$duree[x])
revenu_declare$reste[x] = reste
revenu_declare$gain_total[x] = (revenu_declare$gain_annuel[x] * revenu_declare$duree[x]) + (impot_reference - calcul_impots(revenu_imposable - reste))
}

Il ne reste plus qu'à faire un peu de nettoyage pour éliminer les valeurs incohérentes.

Ôtons déjà toutes les valeurs qui conduiraient à une durée de rachat trop importante – selon notre paramétrage :

simulation <- subset(revenu_declare, (revenu_declare$rachat_annuel >= montant_min_rachat_par_an))

Déterminons l'optimal :

optimal <- which.max(simulation$gain_total)

Affichons sa valeur :

simulation$rachat_annuel[optimal]

Dans notre cas, l'optimal est de 2'000 CHF.

Conclusion

Tout dépend du contexte

Notre exemple pris au hasard donne la simulation suivante :

Cependant, en changeant légèrement le revenu de référence et le montant de rachat, nous obtenons la simulation :

Nous voyons donc que la plus infime variation donne des résultats complètement différents – ici un optimum à 9'500 CHF –, ce qui confirme la nécessité de réaliser une simulation car il n'y a pas de réponse simple. Chaque cas est unique.

Les limites du calcul

Pour effectuer la simulation, nous avons fait un certain nombre d'hypothèses :

  • Le revenu imposable de référence est fixe. En réalité, il doit varier chaque année. Il est peu probable qu'il soit identique d'une année sur l'autre.

  • Les barèmes d'imposition sont fixes. De la même façon, ils peuvent varier d'une année sur l'autre.

Cependant, la simulation permet de calculer des optima. En répétant l'opération chaque année avec des données réelles et réajustées, le résultat obtenu ne devrait pas trop s'en éloigner.

Le modèle pourrait aussi est affiné avec le calcul de moyennes et de tendances à partir de données sur les n dernières années.

Les voies de la fiscalité sont impénétrables

En calculant l'optimal brutalement, sans restricitions sur la durée, on déduit que notre individu peut bénéficier d'une réduction fiscale de 121'822,52 CHF – soit plus que le montant de rachat initial – pour peu qu'il rembourse 500 CHF par an durant 171 années.

Si cette durée est irréaliste du simple fait qu'elle dépasse la durée de vie d'un individu normalement constitué, elle montre bien cependant que l'effet de la durée de remboursement joue un rôle central, au point de bénéficier d'une réduction fiscale plus importante que la somme de rachat, ce qui signifie que l'état paie notre individu pour qu'il mette de l'argent sur son deuxième pilier.

R