Balance des paiements - 6ème manuel

Data - BDF

Info

source dataset .html .RData
bdf BPM6 2025-09-05 2025-09-04
eurostat bop_iip6_q 2025-08-28 2025-05-18

LAST_COMPILE

LAST_COMPILE
2025-09-05

Last

date Nobs
2025-06-30 218

Data Structure

Code
BPM6_metadata %>%
  select(key, name) %>%
  unique %>%
  print_table_conditional()
key name
FREQ Frequency
ADJUSTMENT Adjustment
REF_AREA Reference area - ISO2
COUNTERPART_AREA Counterpart area
REF_SECTOR Reference sector
COUNTERPART_SECTOR Counterpart sector
FLOW_STOCK_ENTRY Flows and stocks indicator
ACCOUNTING_ENTRY Accounting entries
INT_ACC_ITEM International accounts item
FUNCTIONAL_CAT Functional category
INSTR_ASSET Instrument and assets classification
MATURITY Maturity
UNIT_MEASURE Unit of measure
CURRENCY_DENOM Currency denominator
VALUATION Valuation
COMP_METHOD Compiliation methodology
TYPE_ENTITY Structural and locational characteristics of the statistical unit

Balance des Paiements de la France

Novembre 2024

Source. html pdf

Octobre 2024

Solde des transactions courantes

Code
ig_b("bdf", "FR_Stat_Info_Balance_des_paiements_de_la_France_202410", "balance-courante")

Solde des opérations financières

Code
ig_b("bdf", "FR_Stat_Info_Balance_des_paiements_de_la_France_202410", "solde-des-operations-financieres")

Janvier 2024

Compte Courant

Table

Code
ig_b("bdf", "BDP_FRA_2284_fr__BDP_Stat_Info_janvier_2024_FR", "table1")

Figure

Code
ig_b("bdf", "BDP_FRA_2284_fr__BDP_Stat_Info_janvier_2024_FR", "figure1")

Compte Financier

Table

Code
ig_b("bdf", "BDP_FRA_2284_fr__BDP_Stat_Info_janvier_2024_FR", "table2")

Figure

Code
ig_b("bdf", "BDP_FRA_2284_fr__BDP_Stat_Info_janvier_2024_FR", "figure2")

Novembre 2021

Code
ig_b("bdf", "bdp_fra_2241_fr_bdp_stat_info_septembre_2021_fr", "comptes")

Mai 2020

Code
ig_b("bdf", "BPM6-2021-07")

Novembre 2020

Code
ig_b("bdf", "BPM6-2020-11-compte")

FREQ Frequency

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  left_join(FREQ, by = "FREQ") %>%
  group_by(FREQ, Freq) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional
FREQ Freq Nobs
Q Trimestriel 61053
M Mensuel 32700
A Annuel 22341

ADJUSTMENT Adjustment

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  left_join(ADJUSTMENT, by = "ADJUSTMENT") %>%
  group_by(ADJUSTMENT, Adjustment) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional
ADJUSTMENT Adjustment Nobs
N Brut 109944
S CVS 6150

REF_AREA Reference area - ISO2

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  group_by(REF_AREA, Ref_area) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional
REF_AREA Ref_area Nobs
FR France 116094

COUNTERPART_AREA Counterpart area

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  left_join(COUNTERPART_AREA, by = "COUNTERPART_AREA") %>%
  group_by(COUNTERPART_AREA, Counterpart_area) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional

REF_SECTOR Reference sector

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  left_join(REF_SECTOR, by = "REF_SECTOR") %>%
  group_by(REF_SECTOR, Ref_sector) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional
REF_SECTOR Ref_sector Nobs
S1 Ensemble de l`économie 85961
S13 Administrations publiques 5956
S12T IFM autres que la Banque Centrale 5823
S121 Banque Centrale 4840
S12M Sociétés financières autres que les IFM 3287
S1P Autres secteurs que les IFM et les administrations publiques 3046
S1V Sociétés non-financières, ménages et NPISH 2986
S1W Secteurs hors administrations publiques 2588
S122 Etablissements de crédits 637
S1Z Agents non financiers 637
S12K Institutions financières monétaires 216
S1311 de l`Etat 117

COUNTERPART_SECTOR Counterpart sector

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  left_join(COUNTERPART_SECTOR, by = "COUNTERPART_SECTOR") %>%
  group_by(COUNTERPART_SECTOR, Counterpart_sector) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional
COUNTERPART_SECTOR Counterpart_sector Nobs
S1 Ensemble de l`économie 114978
S1N Non sectorisé 392
_Z Non applicable 216
S12T IFM autres que la Banque Centrale 196
S12K Institutions financières monétaires 108
S1Q Autres secteurs que les IFM 108
S1311 de l`Etat 96

FLOW_STOCK_ENTRY Flows and stocks indicator

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  left_join(FLOW_STOCK_ENTRY, by = "FLOW_STOCK_ENTRY") %>%
  group_by(FLOW_STOCK_ENTRY, Flow_stock_entry) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional
FLOW_STOCK_ENTRY Flow_stock_entry Nobs
T Flux 88133
LE Stocks 27661
T3M moyenne mobile sur 3 mois 300

ACCOUNTING_ENTRY Accounting entries

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  left_join(ACCOUNTING_ENTRY, by = "ACCOUNTING_ENTRY") %>%
  group_by(ACCOUNTING_ENTRY, Accounting_entry) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional
ACCOUNTING_ENTRY Accounting_entry Nobs
A Créances 24564
C Crédit (recettes) 20554
B Balance (Crédit moins débit) 18756
D Débit (dépenses) 18751
L Engagements 17355
N Net (avoirs moins engagements) 16053
NE Engagements Nets (engagements moins avoirs) 61

INT_ACC_ITEM International accounts item

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  left_join(INT_ACC_ITEM, by = "INT_ACC_ITEM") %>%
  group_by(INT_ACC_ITEM, Int_acc_item) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional

FUNCTIONAL_CAT Functional category

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  left_join(FUNCTIONAL_CAT, by = "FUNCTIONAL_CAT") %>%
  group_by(FUNCTIONAL_CAT, Functional_cat) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional
FUNCTIONAL_CAT Functional_cat Nobs
_Z Non applicable 45761
O Autres investissements 22802
P Investissements de portefeuille 21837
D Investissements directs 16813
_T Toutes catégories fonctionnelles confondues 4447
R Avoirs de réserves 2238
F Dérivés financiers (autres que les réserves) et options sur titres des salariés 1401
TXD Toutes catégories fonctionnelles hors investissements directs 648
D1 Investisseur direct par rapport aux entreprises investies 49
D2 Entreprises investies par rapport à l`investisseur direct 49
D3 Investissement direct entre les sociétés soeurs 49

INSTR_ASSET Instrument and assets classification

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  left_join(INSTR_ASSET, by = "INSTR_ASSET") %>%
  group_by(INSTR_ASSET, Instr_asset) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional
INSTR_ASSET Instr_asset Nobs
_Z Non applicable 45797
F Total 24192
F3 Instruments de dette 10134
F4 Crédits 5670
F2 Monnaie et dépôts 5038
F5 Actions et parts de fonds de placement 4800
FL Instruments de dette (IDE) 3898
F51 d`actions et titres d`OPC 3695
F52 d`actions et OPC 2359
F81 Crédits commerciaux et avances 2278
F7 Dérivés financiers (autres que les réserves) et options sur titres des salariés 1401
F12 Droits de Tirage spéciaux (DTS) 1046
FGED Dette extérieure brute 913
FLA Instruments de dette autre que assurance, pension et plans d`épargnes standardisés 882
F89 Autres comptes debiteur /créditeur à l`exception des crédits commerciaux et avances 812
F5A Actions et parts de fonds de placement autres que réinvestissements des bénéfices 681
F5B Actions et parts de fonds de placement, réinvestissement des bénéfices 669
F519 des autres participations 401
F6 Assurance, retraites et régimes de garanties standard (F6) 354
F11 Or monétaire 314
FK Position de réserve au FMI 272
FR2 Autres avoirs de réserves (devises, dépôts, titres, produits financiers dérivés et autres créances) 272
F511 d`actions cotées 72
F512 d`actions non cotées 72
FNED Dette extérieure nette 72

MATURITY Maturity

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  left_join(MATURITY, by = "MATURITY") %>%
  group_by(MATURITY, Maturity) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional
MATURITY Maturity Nobs
_Z Non applicable 83870
T Toutes maturités d`origine 17463
S Maturité d`origine à court terme (inférieure à 1 an) 7880
L Maturité d`origine à long terme (supérieure à un an ou pas de maturité) 6881

UNIT_MEASURE Unit of measure

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  left_join(UNIT_MEASURE, by = "UNIT_MEASURE") %>%
  group_by(UNIT_MEASURE, Unit_measure) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional
UNIT_MEASURE Unit_measure Nobs
EUR Euro 116061
PCPIB pourcentage du PIB 33

CURRENCY_DENOM Currency denominator

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  left_join(CURRENCY_DENOM, by = "CURRENCY_DENOM") %>%
  group_by(CURRENCY_DENOM, Currency_denom) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional
CURRENCY_DENOM Currency_denom Nobs
_T Toutes monnaies d`opération 111294
EUR Euro 1379
XO Toutes devises sauf Euro 1142
X1 Toutes monnaies sauf monnaie nationale 593
XDR Droit de Tirage Special (D.T.S.) (=3.61 Xfo) 544
XAU Or Monetaire 314
GBP Livre Sterling 216
JPY Yen 216
USD Dollar des Etats-Unis 216
CNY Yuan Ren Min Bi 180

VALUATION Valuation

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  left_join(VALUATION, by = "VALUATION") %>%
  group_by(VALUATION, Valuation) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional
VALUATION Valuation Nobs
_X Tous types de valorisation 78618
M Valeur de marché 19664
N Valeur nominale (N) 10365
V Valeur comptable 6046
T Net marked to market value 1401

COMP_METHOD Compiliation methodology

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  left_join(COMP_METHOD, by = "COMP_METHOD") %>%
  group_by(COMP_METHOD, Comp_method) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional
COMP_METHOD Comp_method Nobs
N Méthodologie d`agrégation conforme aux règles nationales 113222
P Méthodologie de compilation appliquée au principe directionnel étendu 2872

Compte financier vs compte courant, Différence

Compte financier et compte courant

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(variable == "BPM6.M.N.FR.W1.S1.S1.T.N.FA._T.F._Z.EUR._T.V.N.ALL" |
           variable == "BPM6.M.S.FR.W1.S1.S1.T.B.CA._Z._Z._Z.EUR._T._X.N.ALL") %>%
  left_join(INT_ACC_ITEM, by = "INT_ACC_ITEM") %>%
  left_join(ACCOUNTING_ENTRY, by = "ACCOUNTING_ENTRY") %>%
  group_by(Accounting_entry) %>%
  arrange(date) %>%
  mutate(value = zoo::rollsum(x = value, 12, align = "right", fill = NA)) %>%
  na.omit %>%
  mutate(Int_acc_item = ifelse(Int_acc_item == "Transactions courantes", "Compte de transactions courantes", Int_acc_item)) %>%
   ggplot + geom_line(aes(x = date, y = value/1000, color = Int_acc_item)) +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  scale_y_continuous(labels = dollar_format(pre = "", su = " Md€"),
                     breaks = seq(-300000, 300000, 10000)/1000) +
  theme_minimal() + xlab("") + ylab("Cumul sur 12 mois") +
  theme(legend.position = c(0.2, 0.3),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  geom_label(data = . %>% filter(date == max(date)),
             aes(x = date, y = value/1000, label = paste0(round(value/1000, 1)), color = Int_acc_item)) +
  geom_hline(yintercept = 0, linetype = "dashed")

Différence

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(variable == "BPM6.M.N.FR.W1.S1.S1.T.N.FA._T.F._Z.EUR._T.V.N.ALL" |
           variable == "BPM6.M.S.FR.W1.S1.S1.T.B.CA._Z._Z._Z.EUR._T._X.N.ALL") %>%
  left_join(INT_ACC_ITEM, by = "INT_ACC_ITEM") %>%
  left_join(ACCOUNTING_ENTRY, by = "ACCOUNTING_ENTRY") %>%
  group_by(Accounting_entry) %>%
  arrange(date) %>%
  mutate(value = zoo::rollsum(x = value, 12, align = "right", fill = NA)) %>%
  ungroup %>%
  select(date, value, Int_acc_item) %>%
  na.omit %>%
  spread(Int_acc_item, value) %>%
  mutate(`Différence` = `Compte financier` - `Transactions courantes`) %>%
  gather(Int_acc_item, value, -date) %>%
   ggplot + geom_line(aes(x = date, y = value/1000, color = Int_acc_item)) +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  scale_y_continuous(labels = dollar_format(pre = ""),
                     breaks = seq(-300000, 300000, 10000)/1000) +
  theme_minimal() + xlab("") + ylab("") +
  theme(legend.position = c(0.2, 0.3),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  geom_label(data = . %>% filter(date == max(date)),
             aes(x = date, y = value/1000, label = round(value/1000, 1), color = Int_acc_item))

Investissement direct étranger

Flux

All

Monthly

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(variable == "BPM6.M.N.FR.W1.S1.S1.T.A.FA.D.F._Z.EUR._T.V.N.ALL" |
           variable == "BPM6.M.N.FR.W1.S1.S1.T.L.FA.D.F._Z.EUR._T.V.N.ALL" |
           variable == "BPM6.M.N.FR.W1.S1.S1.T.N.FA.D.F._Z.EUR._T.V.N.ALL") %>%
  left_join(INT_ACC_ITEM, by = "INT_ACC_ITEM") %>%
  left_join(ACCOUNTING_ENTRY, by = "ACCOUNTING_ENTRY") %>%
  group_by(Accounting_entry) %>%
  arrange(date) %>%
  mutate(value = zoo::rollsum(x = value, 36, align = "right", fill = NA)/3) %>%
  na.omit %>%
   ggplot + geom_line(aes(x = date, y = value, color = Accounting_entry)) +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  scale_y_continuous(labels = dollar_format(pre = ""),
                     breaks = seq(-10000, 300000, 5000)) +
  theme_minimal() + xlab("") + ylab("") +
  theme(legend.position = c(0.2, 0.8),
        legend.title = element_blank(),
        legend.direction = "vertical")

Quarterly

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(variable == "BPM6.Q.N.FR.W1.S1.S1.T.A.FA.D.F._Z.EUR._T.V.N.ALL" |
           variable == "BPM6.Q.N.FR.W1.S1.S1.T.L.FA.D.F._Z.EUR._T.V.N.ALL" |
           variable == "BPM6.Q.N.FR.W1.S1.S1.T.N.FA.D.F._Z.EUR._T.V.N.ALL") %>%
  left_join(INT_ACC_ITEM, by = "INT_ACC_ITEM") %>%
  left_join(ACCOUNTING_ENTRY, by = "ACCOUNTING_ENTRY") %>%
  group_by(Accounting_entry) %>%
  arrange(date) %>%
  mutate(value = zoo::rollsum(x = value, 12, align = "right", fill = NA)/3) %>%
  na.omit %>%
   ggplot + geom_line(aes(x = date, y = value, color = Accounting_entry)) +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  scale_y_continuous(labels = dollar_format(pre = ""),
                     breaks = seq(-10000, 300000, 5000)) +
  theme_minimal() + xlab("") + ylab("") +
  theme(legend.position = c(0.2, 0.8),
        legend.title = element_blank(),
        legend.direction = "vertical")

Annual

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(variable == "BPM6.A.N.FR.W1.S1.S1.T.A.FA.D.F._Z.EUR._T.V.N.ALL" |
           variable == "BPM6.A.N.FR.W1.S1.S1.T.L.FA.D.F._Z.EUR._T.V.N.ALL" |
           variable == "BPM6.A.N.FR.W1.S1.S1.T.N.FA.D.F._Z.EUR._T.V.N.ALL") %>%
  left_join(INT_ACC_ITEM, by = "INT_ACC_ITEM") %>%
  left_join(ACCOUNTING_ENTRY, by = "ACCOUNTING_ENTRY") %>%
  group_by(Accounting_entry) %>%
  arrange(date) %>%
  mutate(value = zoo::rollsum(x = value, 4, align = "right", fill = NA)/4) %>%
  na.omit %>%
   ggplot + geom_line(aes(x = date, y = value, color = Accounting_entry)) +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  scale_y_continuous(labels = dollar_format(pre = ""),
                     breaks = seq(-10000, 300000, 5000)) +
  theme_minimal() + xlab("") + ylab("") +
  theme(legend.position = c(0.2, 0.8),
        legend.title = element_blank(),
        legend.direction = "vertical")

2017

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(variable == "BPM6.M.N.FR.W1.S1.S1.T.A.FA.D.F._Z.EUR._T.V.N.ALL" |
           variable == "BPM6.M.N.FR.W1.S1.S1.T.L.FA.D.F._Z.EUR._T.V.N.ALL" |
           variable == "BPM6.M.N.FR.W1.S1.S1.T.N.FA.D.F._Z.EUR._T.V.N.ALL",
            date >= as.Date("2017-01-01")) %>%
  left_join(INT_ACC_ITEM, by = "INT_ACC_ITEM") %>%
  left_join(ACCOUNTING_ENTRY, by = "ACCOUNTING_ENTRY") %>%
  arrange(desc(date)) %>%
   ggplot + geom_line(aes(x = date, y = value, color = Accounting_entry)) +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme_minimal() + xlab("") + ylab("") +
  theme(legend.position = c(0.2, 0.2),
        legend.title = element_blank(),
        legend.direction = "vertical")

Compte de transactions courantes

Biens, Services, Biens & Services

Annual

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(variable == "BPM6.A.N.FR.W1.S1.S1.T.B.G._Z._Z._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.A.N.FR.W1.S1.S1.T.B.GS._Z._Z._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.A.N.FR.W1.S1.S1.T.B.S._Z._Z._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.A.N.FR.W1.S1.S1.T.B.CA._Z._Z._Z.EUR._T._X.N.ALL") %>%
  left_join(INT_ACC_ITEM, by = "INT_ACC_ITEM") %>%
  left_join(gdp, by = "date") %>%
  ggplot + geom_line(aes(x = date, y = value /gdp / 1000, color = Int_acc_item)) +
  
  theme_minimal() +
  scale_x_date(breaks = "2 years",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2, 0.2),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  xlab("") + ylab("Biens, Services, Biens et Services (Net)") +
  scale_y_continuous(breaks = 0.01*seq(-200, 200, 1),
                labels = percent_format(accuracy = 1))

Quarterly

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(variable %in%c("BPM6.Q.N.FR.W1.S1.S1.T.B.GS._Z._Z._Z.EUR._T._X.N.ALL",
                        "BPM6.Q.N.FR.W1.S1.S1.T.B.G._Z._Z._Z.EUR._T._X.N.ALL",
                        "BPM6.Q.N.FR.W1.S1.S1.T.B.S._Z._Z._Z.EUR._T._X.N.ALL",
                        "BPM6.Q.N.FR.W1.S1.S1.T.B.CA._Z._Z._Z.EUR._T._X.N.ALL")) %>%
  left_join(INT_ACC_ITEM, by = "INT_ACC_ITEM") %>%
  left_join(gdp_quarterly, by = "date") %>%
  ggplot + geom_line(aes(x = date, y = value/gdp, color = Int_acc_item)) +
  
  theme_minimal() +
  scale_x_date(breaks = "2 years",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2,0.2),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  xlab("") + ylab("Balance") +
  scale_y_continuous(breaks = 0.01*seq(-200, 200, 1),
                labels = percent_format(accuracy = 1))

Monthly

Par mois

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(variable == "BPM6.M.S.FR.W1.S1.S1.T.B.GS._Z._Z._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.M.S.FR.W1.S1.S1.T.B.G._Z._Z._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.M.S.FR.W1.S1.S1.T.B.S._Z._Z._Z.EUR._T._X.N.ALL" |
           variable == "BPM6.M.S.FR.W1.S1.S1.T.B.CA._Z._Z._Z.EUR._T._X.N.ALL") %>%
  left_join(INT_ACC_ITEM, by = "INT_ACC_ITEM") %>%
  ggplot + geom_line(aes(x = date, y = value / 1000, color = Int_acc_item)) +
  
  theme_minimal() +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2,0.9),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  xlab("") + ylab("Par mois") +
  scale_y_continuous(breaks = seq(-200, 200, 2),
                labels = dollar_format(suffix = " Md€",  accuracy = 1, prefix = ""))

Cumul sur 12 mois

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(variable == "BPM6.M.S.FR.W1.S1.S1.T.B.GS._Z._Z._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.M.S.FR.W1.S1.S1.T.B.G._Z._Z._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.M.S.FR.W1.S1.S1.T.B.S._Z._Z._Z.EUR._T._X.N.ALL" |
           variable == "BPM6.M.S.FR.W1.S1.S1.T.B.CA._Z._Z._Z.EUR._T._X.N.ALL") %>%
  left_join(INT_ACC_ITEM, by = "INT_ACC_ITEM") %>%
  group_by(Int_acc_item) %>%
  arrange(desc(date)) %>%
  mutate(value = zoo::rollsum(value, 12, align = "left", fill = NA)) %>%
  na.omit %>%
  ggplot + geom_line(aes(x = date, y = value / 1000, color = Int_acc_item)) +
  
  theme_minimal() +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.2),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  xlab("") + ylab("Cumul sur 12 mois") +
  scale_y_continuous(breaks = seq(-200, 200, 10),
                labels = dollar_format(suffix = " Md€",  accuracy = 1, prefix = "")) +
  geom_hline(yintercept = 0, linetype = "dashed") +
  geom_label_repel(data = . %>% filter(date == max(date)),
             aes(x = date, y = value/1000, color = Int_acc_item, label = round(value/1000, digits = 1)))

Balance des services

BPM6.M.S.FR.W1.S1.S1.T.B.S._Z._Z._Z.EUR._T._X.N.ALL (Services) BPM6.M.S.FR.W1.S1.S1.T.B.SXD._Z._Z._Z.EUR._T._X.N.ALL (Services hors voyages) BPM6.M.S.FR.W1.S1.S1.T.B.SC._Z._Z._Z.EUR._T._X.N.ALL (Services - Transport) BPM6.M.N.FR.W1.S1.S1.T.D.SD._Z._Z._Z.EUR._T._X.N.ALL (Services, Voyages)

Cumul sur 12 mois

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  # Services
  filter(variable == "BPM6.M.S.FR.W1.S1.S1.T.B.S._Z._Z._Z.EUR._T._X.N.ALL" |
           # Services hors voyages
         variable == "BPM6.M.S.FR.W1.S1.S1.T.B.SXD._Z._Z._Z.EUR._T._X.N.ALL" |
           # Services - Transport
         variable == "BPM6.M.S.FR.W1.S1.S1.T.B.SC._Z._Z._Z.EUR._T._X.N.ALL" |
           # Services, Voyages
         variable == "BPM6.M.N.FR.W1.S1.S1.T.D.SD._Z._Z._Z.EUR._T._X.N.ALL") %>%
  left_join(INT_ACC_ITEM, by = "INT_ACC_ITEM") %>%
  group_by(Int_acc_item) %>%
  arrange(desc(date)) %>%
  mutate(value = zoo::rollsum(value, 12, align = "left", fill = NA)) %>%
  na.omit %>%
  ggplot + geom_line(aes(x = date, y = value / 1000, color = Int_acc_item)) +
  
  theme_minimal() +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.8),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  xlab("") + ylab("Cumul sur 12 mois") +
  scale_y_continuous(breaks = seq(-200, 200, 10),
                labels = dollar_format(suffix = " Md€",  accuracy = 1, prefix = "")) +
  geom_hline(yintercept = 0, linetype = "dashed") +
  geom_label_repel(data = . %>% filter(date == max(date)),
             aes(x = date, y = value/1000, color = Int_acc_item, label = round(value/1000, digits = 1)))

Cumul sur 12 mois

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  # Services
  filter(variable == "BPM6.M.S.FR.W1.S1.S1.T.B.S._Z._Z._Z.EUR._T._X.N.ALL" |
           # Services hors voyages
         variable == "BPM6.M.S.FR.W1.S1.S1.T.B.SXD._Z._Z._Z.EUR._T._X.N.ALL" |
           # Services, Voyages
         variable == "BPM6.M.N.FR.W1.S1.S1.T.B.SD._Z._Z._Z.EUR._T._X.N.ALL") %>%
  left_join(INT_ACC_ITEM, by = "INT_ACC_ITEM") %>%
  group_by(Int_acc_item) %>%
  arrange(desc(date)) %>%
  mutate(value = zoo::rollsum(value, 12, align = "left", fill = NA)) %>%
  na.omit %>%
  ggplot + geom_line(aes(x = date, y = value / 1000, color = Int_acc_item)) +
  
  theme_minimal() +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.8),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  xlab("") + ylab("Cumul sur 12 mois") +
  scale_y_continuous(breaks = seq(-200, 200, 10),
                labels = dollar_format(suffix = " Md€",  accuracy = 1, prefix = "")) +
  geom_hline(yintercept = 0, linetype = "dashed") +
  geom_label_repel(data = . %>% filter(date == max(date)),
             aes(x = date, y = value/1000, color = Int_acc_item, label = round(value/1000, digits = 1)))

Balance des biens (Douanes vs. BPM6)

Cumul sur 12 mois

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(variable == "BPM6.M.S.FR.W1.S1.S1.T.B.G1X._Z._Z._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.M.S.FR.W1.S1.S1.T.B.G._Z._Z._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.M.S.FR.W1.S1.S1.T.B.GX._Z._Z._Z.EUR._T._X.N.ALL") %>%
  left_join(INT_ACC_ITEM, by = "INT_ACC_ITEM") %>%
  group_by(Int_acc_item) %>%
  arrange(desc(date)) %>%
  mutate(value = zoo::rollsum(value, 12, align = "left", fill = NA)) %>%
  na.omit %>%
  ggplot + geom_line(aes(x = date, y = value / 1000, color = Int_acc_item)) +
  
  theme_minimal() +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.2),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  xlab("") + ylab("Cumul sur 12 mois") +
  scale_y_continuous(breaks = seq(-200, 200, 10),
                labels = dollar_format(suffix = " Md€",  accuracy = 1, prefix = "")) +
  geom_hline(yintercept = 0, linetype = "dashed") +
  geom_label_repel(data = . %>% filter(date == max(date)),
             aes(x = date, y = value/1000, color = Int_acc_item, label = round(value/1000, digits = 1)))

Solde - Services, Transport, Voyage

Annual

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(variable %in% c("BPM6.A.N.FR.W1.S1.S1.T.B.S._Z._Z._Z.EUR._T._X.N.ALL",
                         "BPM6.A.N.FR.W1.S1.S1.T.B.SD._Z._Z._Z.EUR._T._X.N.ALL",
                         "BPM6.A.N.FR.W1.S1.S1.T.B.SC._Z._Z._Z.EUR._T._X.N.ALL",
                         "BPM6.A.N.FR.W1.S1.S1.T.B.SXCD._Z._Z._Z.EUR._T._X.N.ALL")) %>%
  left_join(INT_ACC_ITEM, by = "INT_ACC_ITEM") %>%
  left_join(gdp, by = "date") %>%
  ggplot + geom_line(aes(x = date, y = value/gdp / 1000, color = Int_acc_item)) +
  
  theme_minimal() +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank(),
        legend.direction = "vertical",
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  xlab("") + ylab("Balance des Services (% du PIB)") +
  scale_y_continuous(breaks = 0.01*seq(-200, 200, .2),
                labels = percent_format(accuracy = .1),
                limits = 0.01*c(-0.6, 2.2)) +
  geom_hline(yintercept = 0, linetype = "dashed")

Quarterly

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(variable %in% c("BPM6.Q.N.FR.W1.S1.S1.T.B.S._Z._Z._Z.EUR._T._X.N.ALL",
                         "BPM6.Q.N.FR.W1.S1.S1.T.B.SD._Z._Z._Z.EUR._T._X.N.ALL",
                         "BPM6.Q.N.FR.W1.S1.S1.T.B.SC._Z._Z._Z.EUR._T._X.N.ALL",
                         "BPM6.Q.N.FR.W1.S1.S1.T.B.SXCD._Z._Z._Z.EUR._T._X.N.ALL")) %>%
  left_join(INT_ACC_ITEM, by = "INT_ACC_ITEM") %>%
  left_join(gdp_quarterly, by = "date") %>%
  ggplot + geom_line(aes(x = date, y = value/gdp / 1000, color = Int_acc_item)) +
  
  theme_minimal() +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2,0.9),
        legend.title = element_blank(),
        legend.direction = "vertical",
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  xlab("") + ylab("Services (Balance)") +
  scale_y_continuous(breaks = 0.01*seq(-200, 200, .2),
                labels = percent_format(accuracy = .1)) +
  geom_hline(yintercept = 0, linetype = "dashed")

Biens

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(variable == "BPM6.A.N.FR.W1.S1.S1.T.C.G._Z._Z._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.A.N.FR.W1.S1.S1.T.D.G._Z._Z._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.A.N.FR.W1.S1.S1.T.B.G._Z._Z._Z.EUR._T._X.N.ALL") %>%
  left_join(ACCOUNTING_ENTRY, by = "ACCOUNTING_ENTRY") %>%
  left_join(gdp, by = "date") %>%
  ggplot + geom_line(aes(x = date, y = value / gdp / 1000, color = Accounting_entry)) +
  
  theme_minimal() +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2,0.9),
        legend.title = element_blank(),
        legend.direction = "vertical",
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  xlab("") + ylab("Biens") +
  scale_y_continuous(breaks = 0.01*seq(-200, 200, 2),
                labels = percent_format(accuracy = 1))

Services

Annual

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(variable == "BPM6.A.N.FR.W1.S1.S1.T.C.S._Z._Z._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.A.N.FR.W1.S1.S1.T.D.S._Z._Z._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.A.N.FR.W1.S1.S1.T.B.S._Z._Z._Z.EUR._T._X.N.ALL") %>%
  left_join(ACCOUNTING_ENTRY, by = "ACCOUNTING_ENTRY") %>%
  ggplot + geom_line(aes(x = date, y = value / 1000, color = Accounting_entry)) +
  
  theme_minimal() +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2,0.9),
        legend.title = element_blank(),
        legend.direction = "vertical",
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  xlab("") + ylab("Services de Voyage") +
  scale_y_continuous(breaks = seq(-200, 2000, 20),
                labels = dollar_format(suffix = " Mds €",  accuracy = 1, prefix = ""))

Quarterly

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(variable == "BPM6.Q.N.FR.W1.S1.S1.T.C.SD._Z._Z._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.Q.N.FR.W1.S1.S1.T.D.SD._Z._Z._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.Q.N.FR.W1.S1.S1.T.B.SD._Z._Z._Z.EUR._T._X.N.ALL") %>%
  left_join(ACCOUNTING_ENTRY, by = "ACCOUNTING_ENTRY") %>%
  ggplot + geom_line(aes(x = date, y = value / 1000, color = Accounting_entry)) +
  
  theme_minimal() +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2,0.9),
        legend.title = element_blank(),
        legend.direction = "vertical",
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  xlab("") + ylab("") +
  scale_y_continuous(breaks = seq(-200, 200, 2),
                labels = dollar_format(suffix = " Tn €",  accuracy = 1, prefix = ""))

Monthly

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(variable == "BPM6.M.S.FR.W1.S1.S1.T.B.SD._Z._Z._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.M.S.FR.W1.S1.S1.T.C.SD._Z._Z._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.M.S.FR.W1.S1.S1.T.D.SD._Z._Z._Z.EUR._T._X.N.ALL") %>%
  left_join(ACCOUNTING_ENTRY, by = "ACCOUNTING_ENTRY") %>%
  ggplot + geom_line(aes(x = date, y = value / 1000, color = Accounting_entry)) +
  
  theme_minimal() +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2,0.9),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  xlab("") + ylab("") +
  scale_y_continuous(breaks = seq(-200, 200, 2),
                labels = dollar_format(suffix = " Tn €",  accuracy = 1, prefix = ""))

Services de Transport

Annual

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(variable == "BPM6.A.N.FR.W1.S1.S1.T.C.SC._Z._Z._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.A.N.FR.W1.S1.S1.T.D.SC._Z._Z._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.A.N.FR.W1.S1.S1.T.B.SC._Z._Z._Z.EUR._T._X.N.ALL") %>%
  left_join(ACCOUNTING_ENTRY, by = "ACCOUNTING_ENTRY") %>%
  ggplot + geom_line(aes(x = date, y = value / 1000, color = Accounting_entry)) +
  
  theme_minimal() +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2,0.9),
        legend.title = element_blank(),
        legend.direction = "vertical",
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  xlab("") + ylab("Services de Voyage") +
  scale_y_continuous(breaks = seq(-200, 200, 5),
                labels = dollar_format(suffix = " Mds €",  accuracy = 1, prefix = ""))

Quarterly

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(variable == "BPM6.Q.N.FR.W1.S1.S1.T.C.SD._Z._Z._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.Q.N.FR.W1.S1.S1.T.D.SD._Z._Z._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.Q.N.FR.W1.S1.S1.T.B.SD._Z._Z._Z.EUR._T._X.N.ALL") %>%
  left_join(ACCOUNTING_ENTRY, by = "ACCOUNTING_ENTRY") %>%
  ggplot + geom_line(aes(x = date, y = value / 1000, color = Accounting_entry)) +
  
  theme_minimal() +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2,0.9),
        legend.title = element_blank(),
        legend.direction = "vertical",
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  xlab("") + ylab("") +
  scale_y_continuous(breaks = seq(-200, 200, 2),
                labels = dollar_format(suffix = " Tn €",  accuracy = 1, prefix = ""))

Monthly

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(variable == "BPM6.M.S.FR.W1.S1.S1.T.B.SD._Z._Z._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.M.S.FR.W1.S1.S1.T.C.SD._Z._Z._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.M.S.FR.W1.S1.S1.T.D.SD._Z._Z._Z.EUR._T._X.N.ALL") %>%
  left_join(ACCOUNTING_ENTRY, by = "ACCOUNTING_ENTRY") %>%
  ggplot + geom_line(aes(x = date, y = value / 1000, color = Accounting_entry)) +
  
  theme_minimal() +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2,0.9),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  xlab("") + ylab("") +
  scale_y_continuous(breaks = seq(-200, 200, 2),
                labels = dollar_format(suffix = " Tn €",  accuracy = 1, prefix = ""))

Services de Voyage

Annual

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(variable == "BPM6.A.N.FR.W1.S1.S1.T.C.SD._Z._Z._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.A.N.FR.W1.S1.S1.T.D.SD._Z._Z._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.A.N.FR.W1.S1.S1.T.B.SD._Z._Z._Z.EUR._T._X.N.ALL") %>%
  left_join(ACCOUNTING_ENTRY, by = "ACCOUNTING_ENTRY") %>%
  ggplot + geom_line(aes(x = date, y = value / 1000, color = Accounting_entry)) +
  
  theme_minimal() +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2,0.9),
        legend.title = element_blank(),
        legend.direction = "vertical",
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  xlab("") + ylab("Services de Voyage") +
  scale_y_continuous(breaks = seq(-200, 200, 5),
                labels = dollar_format(suffix = " Mds €",  accuracy = 1, prefix = ""))

Quarterly

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(variable == "BPM6.Q.N.FR.W1.S1.S1.T.C.SD._Z._Z._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.Q.N.FR.W1.S1.S1.T.D.SD._Z._Z._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.Q.N.FR.W1.S1.S1.T.B.SD._Z._Z._Z.EUR._T._X.N.ALL") %>%
  left_join(ACCOUNTING_ENTRY, by = "ACCOUNTING_ENTRY") %>%
  ggplot + geom_line(aes(x = date, y = value / 1000, color = Accounting_entry)) +
  
  theme_minimal() +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2,0.9),
        legend.title = element_blank(),
        legend.direction = "vertical",
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  xlab("") + ylab("") +
  scale_y_continuous(breaks = seq(-200, 200, 2),
                labels = dollar_format(suffix = " Tn €",  accuracy = 1, prefix = ""))

Monthly

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(variable == "BPM6.M.S.FR.W1.S1.S1.T.B.SD._Z._Z._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.M.S.FR.W1.S1.S1.T.C.SD._Z._Z._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.M.S.FR.W1.S1.S1.T.D.SD._Z._Z._Z.EUR._T._X.N.ALL") %>%
  left_join(ACCOUNTING_ENTRY, by = "ACCOUNTING_ENTRY") %>%
  ggplot + geom_line(aes(x = date, y = value / 1000, color = Accounting_entry)) +
  
  theme_minimal() +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2,0.9),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  xlab("") + ylab("") +
  scale_y_continuous(breaks = seq(-200, 200, 1),
                labels = dollar_format(suffix = " Tn €",  accuracy = 1, prefix = ""))

Investissements de portefeuille

Quarterly

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(variable == "BPM6.Q.N.FR.W1.S1.S1.T.A.FA.P.F._Z.EUR._T.M.N.ALL" |
         variable == "BPM6.Q.N.FR.W1.S1.S1.T.N.FA.P.F._Z.EUR._T.M.N.ALL") %>%
  left_join(INT_ACC_ITEM, by = "INT_ACC_ITEM") %>%
  ggplot + geom_line(aes(x = date, y = value / 1000, color = Variable)) +
  
  theme_minimal() +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3,0.1),
        legend.title = element_blank(),
        legend.direction = "vertical",
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  xlab("") + ylab("") +
  scale_y_continuous(breaks = seq(-200, 200, 20),
                labels = dollar_format(suffix = " Tn €",  accuracy = 1, prefix = ""))

Revenus Primaires

Tous

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(variable == "BPM6.A.N.FR.W1.S1.S1.T.C.IN1._Z._Z._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.A.N.FR.W1.S1.S1.T.D.IN1._Z._Z._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.A.N.FR.W1.S1.S1.T.B.IN1._Z._Z._Z.EUR._T._X.N.ALL") %>%
  left_join(ACCOUNTING_ENTRY, by = "ACCOUNTING_ENTRY") %>%
  ggplot + geom_line(aes(x = date, y = value / 1000, color = Accounting_entry)) +
  
  theme_minimal() +
  scale_x_date(breaks = "2 years",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2,0.9),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  xlab("") + ylab("Revenus Primaires") +
  scale_y_continuous(breaks = seq(-200, 1000, 20),
                labels = dollar_format(suffix = " Mds €",  accuracy = 1, prefix = ""))

Portefeuille

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(variable == "BPM6.A.N.FR.W1.S1.S1.T.C.D4P.P.F._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.A.N.FR.W1.S1.S1.T.B.D4P.P.F._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.A.N.FR.W1.S1.S1.T.D.D4P.P.F._Z.EUR._T._X.N.ALL") %>%
  left_join(ACCOUNTING_ENTRY, by = "ACCOUNTING_ENTRY") %>%
  ggplot + geom_line(aes(x = date, y = value / 1000, color = Accounting_entry)) +
  
  theme_minimal() +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2,0.9),
        legend.title = element_blank(),
        legend.direction = "vertical",
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  xlab("") + ylab("Revenus de portefeuille") +
  scale_y_continuous(breaks = seq(-200, 1000, 20),
                labels = dollar_format(suffix = " Mds €",  accuracy = 1, prefix = ""))

Revenus des autres investissements

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(variable == "BPM6.A.N.FR.W1.S1.S1.T.C.D4P.O.F._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.A.N.FR.W1.S1.S1.T.D.D4P.O.F._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.A.N.FR.W1.S1.S1.T.B.D4P.O.F._Z.EUR._T._X.N.ALL") %>%
  left_join(ACCOUNTING_ENTRY, by = "ACCOUNTING_ENTRY") %>%
  ggplot + geom_line(aes(x = date, y = value / 1000, color = Accounting_entry)) +
  
  theme_minimal() +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2,0.9),
        legend.title = element_blank(),
        legend.direction = "vertical",
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  xlab("") + ylab("Revenus de portefeuille") +
  scale_y_continuous(breaks = seq(-200, 1000, 10),
                labels = dollar_format(suffix = " Mds €",  accuracy = 1, prefix = ""))

Revenus d’investissement

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(variable == "BPM6.A.N.FR.W1.S1.S1.T.B.D4P._T.F._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.A.N.FR.W1.S1.S1.T.C.D4P._T.F._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.A.N.FR.W1.S1.S1.T.D.D4P._T.F._Z.EUR._T._X.N.ALL") %>%
  left_join(ACCOUNTING_ENTRY, by = "ACCOUNTING_ENTRY") %>%
  ggplot + geom_line(aes(x = date, y = value / 1000, color = Accounting_entry)) +
  
  theme_minimal() +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2,0.9),
        legend.title = element_blank(),
        legend.direction = "vertical",
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  xlab("") + ylab("Revenus d'investissement") +
  scale_y_continuous(breaks = seq(-200, 1000, 20),
                labels = dollar_format(suffix = " Mds €",  accuracy = 1, prefix = ""))

Revenus des investissements directs

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(variable == "BPM6.A.N.FR.W1.S1.S1.T.B.D4P.D.F._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.A.N.FR.W1.S1.S1.T.C.D4P.D.F._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.A.N.FR.W1.S1.S1.T.D.D4P.D.F._Z.EUR._T._X.N.ALL") %>%
  left_join(ACCOUNTING_ENTRY, by = "ACCOUNTING_ENTRY") %>%
  ggplot + geom_line(aes(x = date, y = value / 1000, color = Accounting_entry)) +
  
  theme_minimal() +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2,0.9),
        legend.title = element_blank(),
        legend.direction = "vertical",
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  xlab("") + ylab("Revenus des investissements directs") +
  scale_y_continuous(breaks = seq(-200, 1000, 10),
                labels = dollar_format(suffix = " Mds €",  accuracy = 1, prefix = ""))

Balance

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(variable == "BPM6.A.N.FR.W1.S1.S1.T.B.D4P.D.F._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.A.N.FR.W1.S1.S1.T.B.D4P._T.F._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.A.N.FR.W1.S1.S1.T.B.D4P.O.F._Z.EUR._T._X.N.ALL" |
         variable == "BPM6.A.N.FR.W1.S1.S1.T.B.D4P.P.F._Z.EUR._T._X.N.ALL") %>%
  left_join(FUNCTIONAL_CAT, by = "FUNCTIONAL_CAT") %>%
  ggplot + geom_line(aes(x = date, y = value / 1000, color = Functional_cat)) +
  
  theme_minimal() + xlab("") + ylab("Revenus primaires") +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank(),
        legend.direction = "vertical",
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  scale_y_continuous(breaks = seq(-200, 1000, 10),
                labels = dollar_format(suffix = " Mds €",  accuracy = 1, prefix = ""))

Balance

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(grepl("BPM6.A.N.FR.W1.S1.S1.T.B.D4P.", variable)) %>%
  left_join(FUNCTIONAL_CAT, by = "FUNCTIONAL_CAT") %>%
  ggplot + geom_line(aes(x = date, y = value / 1000, color = Functional_cat)) +
  
  theme_minimal() + xlab("") + ylab("Revenus primaires") +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank(),
        legend.direction = "vertical",
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  scale_y_continuous(breaks = seq(-200, 1000, 10),
                labels = dollar_format(suffix = " Mds €",  accuracy = 1, prefix = ""))

Revenus Secondaires

Tous

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(grepl("BPM6.A.N.FR.W1.S1.S1.T.B.IN2.", variable) |
         grepl("BPM6.A.N.FR.W1.S1.S1.T.C.IN2.", variable) |
         grepl("BPM6.A.N.FR.W1.S1.S1.T.D.IN2.", variable)) %>%
  left_join(ACCOUNTING_ENTRY, by = "ACCOUNTING_ENTRY") %>%
  ggplot + geom_line(aes(x = date, y = value / 1000, color = Accounting_entry)) +
  
  theme_minimal() + xlab("") + ylab("Revenus secondaires") +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank(),
        legend.direction = "vertical",
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  scale_y_continuous(breaks = seq(-200, 1000, 10),
                labels = dollar_format(suffix = " Mds €",  accuracy = 1, prefix = ""))

Balance

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(grepl("BPM6.A.N.FR.W1.S1.S1.T.B.IN2.", variable)) %>%
  left_join(FUNCTIONAL_CAT, by = "FUNCTIONAL_CAT") %>%
  ggplot + geom_line(aes(x = date, y = value / 1000, color = Functional_cat)) +
  
  theme_minimal() + xlab("") + ylab("Revenus secondaires") +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank(),
        legend.direction = "vertical",
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  scale_y_continuous(breaks = seq(-200, 1000, 2),
                labels = dollar_format(suffix = " Mds €",  accuracy = 1, prefix = ""))

Transactions Courantes

All

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(FREQ == "M",
         INT_ACC_ITEM %in% c("G", "S", "G1X"),
         ADJUSTMENT == "S",
         REF_SECTOR == "S1",
         COUNTERPART_SECTOR == "S1",
         FLOW_STOCK_ENTRY == "T",
         ACCOUNTING_ENTRY == "B") %>%
  left_join(INT_ACC_ITEM, by = "INT_ACC_ITEM") %>%
  ggplot + geom_line(aes(x = date, y = value / 1000, color = Int_acc_item)) +
  
  theme_minimal() +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3,0.1),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  xlab("") + ylab("") +
  scale_y_continuous(breaks = seq(-100, 10, 1),
                labels = dollar_format(suffix = " Tn €",  accuracy = 1, prefix = ""))

2018-

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(date >= as.Date("2018-01-01"),
         FREQ == "M",
         ADJUSTMENT == "S",
         COUNTERPART_AREA == "W1",
         REF_SECTOR == "S1",
         COUNTERPART_SECTOR == "S1",
         FLOW_STOCK_ENTRY == "T",
         ACCOUNTING_ENTRY == "B",
         INT_ACC_ITEM %in% c("G", "S")) %>%
  left_join(INT_ACC_ITEM, by = "INT_ACC_ITEM") %>%
  ggplot + geom_line(aes(x = date, y = value / 1000, color = Int_acc_item)) +
 
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = "3 months",
               labels = date_format("%b-%y")) +
  theme(legend.position = c(0.3,0.1),
        legend.title = element_blank(),
        legend.direction = "vertical",
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  scale_y_continuous(breaks = seq(-100, 10, 1),
                labels = dollar_format(suffix = " Tn €",  accuracy = 1, prefix = ""))

Table - Monthly

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(date == as.Date("2018-01-01"),
         FREQ == "M",
         ADJUSTMENT == "S",
         REF_SECTOR == "S1",
         COUNTERPART_SECTOR == "S1",
         FLOW_STOCK_ENTRY == "T",
         ACCOUNTING_ENTRY == "B") %>%
  left_join(INT_ACC_ITEM, by = "INT_ACC_ITEM") %>%
  left_join(FUNCTIONAL_CAT, by = "FUNCTIONAL_CAT") %>%
  select(Int_acc_item, Functional_cat, value) %>%
  print_table_conditional
Int_acc_item Functional_cat value
NA NA NA
:------------: :--------------: :-----:

France vis à vis de l’Allemagne

All

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(FREQ == "A",
         COUNTERPART_AREA == "DE",
         ACCOUNTING_ENTRY == "B",
         INT_ACC_ITEM %in% c("G", "S")) %>%
  left_join(INT_ACC_ITEM, by = "INT_ACC_ITEM") %>%
  ggplot + geom_line(aes(x = date, y = value / 1000, color = Int_acc_item)) +
  
  theme_minimal() +  xlab("") + ylab("") +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3,0.1),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  scale_y_continuous(breaks = seq(-40, 10, 1),
                labels = dollar_format(suffix = " Bn €",  accuracy = 1, prefix = ""))

Biens

Code
load_data("bdf/COUNTERPART_AREA.RData")
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(FREQ == "A",
         COUNTERPART_AREA %in% c("DE", "CN"),
         ACCOUNTING_ENTRY == "B",
         INT_ACC_ITEM %in% c("G")) %>%
  left_join(COUNTERPART_AREA, by = "COUNTERPART_AREA") %>%
  left_join(colors, by = c("Counterpart_area" = "country")) %>%
  mutate(value = value / 1000) %>%
  rename(Ref_area = Counterpart_area) %>%
  ggplot + geom_line(aes(x = date, y = value, color = color)) +
  scale_color_identity() + add_2flags +
  theme_minimal() +  xlab("") + ylab("") +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3,0.1),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  scale_y_continuous(breaks = seq(-100, 10, 5),
                labels = dollar_format(suffix = "Mds€",  accuracy = 1, prefix = ""))

Services

Code
load_data("bdf/COUNTERPART_AREA.RData")
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(FREQ == "A",
         COUNTERPART_AREA %in% c("DE", "CN"),
         ACCOUNTING_ENTRY == "B",
         INT_ACC_ITEM %in% c("S")) %>%
  left_join(COUNTERPART_AREA, by = "COUNTERPART_AREA") %>%
  left_join(colors, by = c("Counterpart_area" = "country")) %>%
  mutate(value = value / 1000) %>%
  rename(Ref_area = Counterpart_area) %>%
  ggplot + geom_line(aes(x = date, y = value, color = color)) +
  scale_color_identity() + add_2flags +
  theme_minimal() +  xlab("") + ylab("") +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3,0.1),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  scale_y_continuous(breaks = seq(-40, 10, 1),
                labels = dollar_format(suffix = "Mds€",  accuracy = 1, prefix = ""))

Biens et Services

Code
load_data("bdf/COUNTERPART_AREA.RData")
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(FREQ == "A",
         COUNTERPART_AREA %in% c("DE", "CN"),
         ACCOUNTING_ENTRY == "B",
         INT_ACC_ITEM %in% c("S", "G")) %>%
  select_if(~ n_distinct(.) > 1) %>%
  group_by(date, COUNTERPART_AREA) %>%
  summarise(value = sum(value)) %>%
  left_join(COUNTERPART_AREA, by = "COUNTERPART_AREA") %>%
  left_join(colors, by = c("Counterpart_area" = "country")) %>%
  mutate(value = value / 1000) %>%
  rename(Ref_area = Counterpart_area) %>%
  ggplot + geom_line(aes(x = date, y = value, color = color)) +
  scale_color_identity() + add_2flags +
  theme_minimal() +  xlab("") + ylab("Déficit Bilatéral avec la France (Source: Banque de France)") +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3,0.1),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  scale_y_continuous(breaks = seq(-40, 10, 2),
                labels = dollar_format(suffix = "Mds€",  accuracy = 1, prefix = ""))

France vis à vis de la Chine

All

Quarterly

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(FREQ == "A",
         COUNTERPART_AREA == "CN",
         ACCOUNTING_ENTRY == "B",
         INT_ACC_ITEM %in% c("G", "S")) %>%
  left_join(INT_ACC_ITEM, by = "INT_ACC_ITEM") %>%
  ggplot + geom_line(aes(x = date, y = value / 1000, color = Int_acc_item)) +
  
  theme_minimal() +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3,0.1),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  xlab("") + ylab("") +
  scale_y_continuous(breaks = seq(-100, 10, 5),
                labels = dollar_format(suffix = " Mds€",  accuracy = 1, prefix = ""))

Quarterly

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(FREQ == "A",
         INT_ACC_ITEM %in% c("G", "S", "G1X"),
         COUNTERPART_AREA == "CN",
         REF_SECTOR == "S1",
         COUNTERPART_SECTOR == "S1",
         FLOW_STOCK_ENTRY == "T",
         ACCOUNTING_ENTRY == "B",
         INT_ACC_ITEM %in% c("G", "S")) %>%
  left_join(INT_ACC_ITEM, by = "INT_ACC_ITEM") %>%
  ggplot + geom_line(aes(x = date, y = value / 1000, color = Int_acc_item)) +
  
  theme_minimal() +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.1),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  xlab("") + ylab("") +
  scale_y_continuous(breaks = seq(-50, 10, 5),
                labels = dollar_format(suffix = " Mds€",  accuracy = 1, prefix = ""))

Table

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(date == as.Date("2020-03-31"),
         FREQ == "Q",
         INT_ACC_ITEM %in% c("G"),
         REF_SECTOR == "S1",
         COUNTERPART_SECTOR == "S1",
         FLOW_STOCK_ENTRY == "T",
         ACCOUNTING_ENTRY == "B") %>%
  select(COUNTERPART_AREA, Variable, value) %>%
  print_table_conditional
COUNTERPART_AREA Variable value
B6 Transactions courantes - Biens - Ensemble de l'économie - Solde - France vis-à-vis de l'Union européenne (27 membres) - Trimestriel - Brut -7510
CH Transactions courantes - Biens - Ensemble de l'économie - Solde - France vis-à-vis Suisse - Brut 798
CN Transactions courantes - Biens - Ensemble de l'économie - Solde - France vis-à-vis Chine - Brut -8069
I8 Transactions courantes - Biens - Ensemble de l'économie - Solde - France vis-à-vis Zone Euro - Brut -8908
I9 Transactions courantes - Biens - Ensemble de l'économie - Solde - France vis-à-vis Zone Euro - Brut -7142
J8 Transactions courantes - Biens - Ensemble de l'économie - Solde - France vis-à-vis hors Zone Euro - Brut -7378
J9 Transactions courantes - Biens - Ensemble de l'économie - Solde - France vis-à-vis hors Zone Euro - Brut -6778
JP Transactions courantes - Biens - Ensemble de l'économie - Solde - France vis-à-vis Japon - Brut -938
Q6 Transactions courantes - Biens - Ensemble de l'économie - Solde -France vis-à-vis de l'Union européenne à 28, hors zone euro à 18, à l?exclusion du Royaume-Uni, du Danemark et de la Suède - Brut -416
US Transactions courantes - Biens - Ensemble de l'économie - Solde - France vis-à-vis États Unis - Brut 651
W1 Transactions courantes - Biens - Ensemble de l'économie - Solde - France vis-à-vis Reste du monde - Brut -13919

Goods

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(date >= as.Date("2016-12-31"),
         FREQ == "Q",
         INT_ACC_ITEM %in% c("G"),
         REF_SECTOR == "S1",
         COUNTERPART_AREA %in% c("W1", "I8", "J8"),
         COUNTERPART_SECTOR == "S1",
         FLOW_STOCK_ENTRY == "T",
         ACCOUNTING_ENTRY == "B") %>%
  left_join(COUNTERPART_AREA, by = "COUNTERPART_AREA") %>%
  ggplot + geom_line(aes(x = date, y = value / 1000, color = Counterpart_area)) +
  
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.6, 0.1),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  scale_y_continuous(breaks = seq(-30, 30, 2),
                labels = dollar_format(suffix = " Tn €",  accuracy = 1, prefix = ""))

2010

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(date >= as.Date("2010-12-31"),
         FREQ == "Q",
         INT_ACC_ITEM %in% c("G"),
         REF_SECTOR == "S1",
         COUNTERPART_AREA %in% c("W1", "I8", "J8"),
         COUNTERPART_SECTOR == "S1",
         FLOW_STOCK_ENTRY == "T",
         ACCOUNTING_ENTRY == "B") %>%
  left_join(COUNTERPART_AREA, by = "COUNTERPART_AREA") %>%
  ggplot + geom_line(aes(x = date, y = value / 1000, color = Counterpart_area)) +
  
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = "1 year",
               labels = date_format("%Y")) +
  theme(legend.position = c(0.6, 0.1),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  scale_y_continuous(breaks = seq(-30, 30, 2),
                labels = dollar_format(suffix = " Tn €",  accuracy = 1, prefix = ""))

Dette Exterieure Nette

Code
BPM6 %>%
  left_join(BPM6_var, by = "variable") %>%
  filter(variable %in% c("BPM6.A.N.FR.W1.S1.S1.LE.N.FA._T.FNED._Z.PCPIB._T._X.N.ALL",
                         "BPM6.A.N.FR.W1.S1.S1.LE.N.FA._T.F._Z.PCPIB._T._X.N.ALL")) %>%
  ggplot + geom_line(aes(x = date, y = value/100, color = Variable)) + 
  xlab("") + ylab("") + theme_minimal() +
 
  scale_x_date(breaks = "2 years",
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-200, 140, 10),
                labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank(),
        legend.direction = "vertical")