Balance des paiements - 6ème manuel

Data - BDF

Info

source dataset .html .RData
bdf BPM6 2025-03-09 2025-04-08
eurostat bop_iip6_q 2025-02-01 2024-10-08

LAST_COMPILE

LAST_COMPILE
2025-04-08

Last

date Nobs
2025-02-28 221

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 60850
M Mensuel 32266
A Annuel 20799

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 107929
S CVS 5986

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 113915

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 84695
S13 Administrations publiques 5768
S12T IFM autres que la Banque Centrale 5603
S121 Banque Centrale 4714
S12M Sociétés financières autres que les IFM 3216
S1P Autres secteurs que les IFM et les administrations publiques 2934
S1V Sociétés non-financières, ménages et NPISH 2916
S1W Secteurs hors administrations publiques 2512
S122 Etablissements de crédits 624
S1Z Agents non financiers 624
S12K Institutions financières monétaires 198
S1311 de l`Etat 111

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 112838
S1N Non sectorisé 384
_Z Non applicable 210
S12T IFM autres que la Banque Centrale 192
S12K Institutions financières monétaires 99
S1Q Autres secteurs que les IFM 99
S1311 de l`Etat 93

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 86927
LE Stocks 26696
T3M moyenne mobile sur 3 mois 292

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 23956
C Crédit (recettes) 20399
B Balance (Crédit moins débit) 18485
D Débit (dépenses) 18464
L Engagements 16853
N Net (avoirs moins engagements) 15699
NE Engagements Nets (engagements moins avoirs) 59

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 45353
O Autres investissements 22243
P Investissements de portefeuille 21320
D Investissements directs 16410
_T Toutes catégories fonctionnelles confondues 4323
R Avoirs de réserves 2172
F Dérivés financiers (autres que les réserves) et options sur titres des salariés 1356
TXD Toutes catégories fonctionnelles hors investissements directs 594
D1 Investisseur direct par rapport aux entreprises investies 48
D2 Entreprises investies par rapport à l`investisseur direct 48
D3 Investissement direct entre les sociétés soeurs 48

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 45386
F Total 23558
F3 Instruments de dette 9902
F4 Crédits 5551
F2 Monnaie et dépôts 4938
F5 Actions et parts de fonds de placement 4684
FL Instruments de dette (IDE) 3806
F51 d`actions et titres d`OPC 3625
F52 d`actions et OPC 2305
F81 Crédits commerciaux et avances 2224
F7 Dérivés financiers (autres que les réserves) et options sur titres des salariés 1356
F12 Droits de Tirage spéciaux (DTS) 1017
FLA Instruments de dette autre que assurance, pension et plans d`épargnes standardisés 864
FGED Dette extérieure brute 840
F89 Autres comptes debiteur /créditeur à l`exception des crédits commerciaux et avances 790
F5A Actions et parts de fonds de placement autres que réinvestissements des bénéfices 659
F5B Actions et parts de fonds de placement, réinvestissement des bénéfices 648
F519 des autres participations 383
F6 Assurance, retraites et régimes de garanties standard (F6) 343
F11 Or monétaire 306
FK Position de réserve au FMI 264
FR2 Autres avoirs de réserves (devises, dépôts, titres, produits financiers dérivés et autres créances) 264
FNED Dette extérieure nette 70
F511 d`actions cotées 66
F512 d`actions non cotées 66

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 82510
T Toutes maturités d`origine 16980
S Maturité d`origine à court terme (inférieure à 1 an) 7702
L Maturité d`origine à long terme (supérieure à un an ou pas de maturité) 6723

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 113882
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 109368
EUR Euro 1297
XO Toutes devises sauf Euro 1081
X1 Toutes monnaies sauf monnaie nationale 576
XDR Droit de Tirage Special (D.T.S.) (=3.61 Xfo) 528
XAU Or Monetaire 306
GBP Livre Sterling 198
JPY Yen 198
USD Dollar des Etats-Unis 198
CNY Yuan Ren Min Bi 165

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 77248
M Valeur de marché 19184
N Valeur nominale (N) 10176
V Valeur comptable 5951
T Net marked to market value 1356

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 111261
P Méthodologie de compilation appliquée au principe directionnel étendu 2654

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

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
B5 Transactions courantes - Biens - Ensemble de l'économie - Solde - France vis-à-vis Union Européenne - Brut -7126
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")