Balance des paiements - 6ème manuel

Data - BDF

Info

source dataset Title .html .rData
bdf BPM6 Balance des paiements - 6ème manuel 2026-02-23 2026-01-11
eurostat bop_iip6_q International investment position - quarterly and annual data (BPM6) 2026-02-24 2026-01-28

LAST_COMPILE

LAST_COMPILE
2026-02-26

Last

date Nobs
2025-11-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 63103
M Mensuel 33790
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 112879
S CVS 6355

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 119234

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 88118
S13 Administrations publiques 6150
S12T IFM autres que la Banque Centrale 5965
S121 Banque Centrale 5013
S12M Sociétés financières autres que les IFM 3417
S1P Autres secteurs que les IFM et les administrations publiques 3138
S1V Sociétés non-financières, ménages et NPISH 3102
S1W Secteurs hors administrations publiques 2672
S122 Etablissements de crédits 663
S1Z Agents non financiers 663
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 118096
S1N Non sectorisé 401
_Z Non applicable 221
S12T IFM autres que la Banque Centrale 204
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 90589
LE Stocks 28335
T3M moyenne mobile sur 3 mois 310

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 25148
C Crédit (recettes) 21117
B Balance (Crédit moins débit) 19258
D Débit (dépenses) 19246
L Engagements 17847
N Net (avoirs moins engagements) 16555
NE Engagements Nets (engagements moins avoirs) 63

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 46968
O Autres investissements 23474
P Investissements de portefeuille 22428
D Investissements directs 17222
_T Toutes catégories fonctionnelles confondues 4586
R Avoirs de réserves 2309
F Dérivés financiers (autres que les réserves) et options sur titres des salariés 1446
TXD Toutes catégories fonctionnelles hors investissements directs 648
D1 Investisseur direct par rapport aux entreprises investies 51
D2 Entreprises investies par rapport à l`investisseur direct 51
D3 Investissement direct entre les sociétés soeurs 51

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 47004
F Total 24762
F3 Instruments de dette 10405
F4 Crédits 5872
F2 Monnaie et dépôts 5214
F5 Actions et parts de fonds de placement 4913
FL Instruments de dette (IDE) 4000
F51 d`actions et titres d`OPC 3813
F52 d`actions et OPC 2445
F81 Crédits commerciaux et avances 2338
F7 Dérivés financiers (autres que les réserves) et options sur titres des salariés 1446
F12 Droits de Tirage spéciaux (DTS) 1077
FLA Instruments de dette autre que assurance, pension et plans d`épargnes standardisés 918
FGED Dette extérieure brute 915
F89 Autres comptes debiteur /créditeur à l`exception des crédits commerciaux et avances 840
F5A Actions et parts de fonds de placement autres que réinvestissements des bénéfices 702
F5B Actions et parts de fonds de placement, réinvestissement des bénéfices 690
F519 des autres participations 411
F6 Assurance, retraites et régimes de garanties standard (F6) 366
F11 Or monétaire 323
FK Position de réserve au FMI 281
FR2 Autres avoirs de réserves (devises, dépôts, titres, produits financiers dérivés et autres créances) 281
FNED Dette extérieure nette 74
F511 d`actions cotées 72
F512 d`actions non cotées 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 86079
T Toutes maturités d`origine 17932
S Maturité d`origine à court terme (inférieure à 1 an) 8129
L Maturité d`origine à long terme (supérieure à un an ou pas de maturité) 7094

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 119201
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 114387
EUR Euro 1379
XO Toutes devises sauf Euro 1142
X1 Toutes monnaies sauf monnaie nationale 613
XDR Droit de Tirage Special (D.T.S.) (=3.61 Xfo) 562
XAU Or Monetaire 323
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 80637
M Valeur de marché 20190
N Valeur nominale (N) 10743
V Valeur comptable 6218
T Net marked to market value 1446

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 116362
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")