Article abstract: Political power in the international context can be characterized as a fluid-like substance that circulates through a network of nation states. States can possess it as a stock quantity, reflected by their material capacity or national wealth; and they can transfer it as a flow quantity, through constructive or destructive action. Constructive activities like trade increase a state’s power, while destructive ones like violent conflict reduce it. In this paper, we quantify these assertions to a first approximation using economic and military data, parameterizing a mathematical model that can forecast the evolution of power in the international system.
Overview
Overview
This article is part of an ongoing investigation into the nature of political power structures. Previous work explored the idea in abstract form and drew analogies to political theory. This paper attempts to apply the abstract model to contemporary international relations. First, it argues that national power at rest can be approximated by national wealth, and that trade and military expenditure are proxy variables for power in motion. Then, actual wealth, trade, and military data are used to parameterize the model. Finally, simulations are initialized to backtest the model and to make predictions about the future evolution of power in the international system.
This notebook contains most of the code underlying this paper. These functions:
1
.Ingest wealth, trade, and military data from 1995-2020 for 193 countries.
2
.Transform that data into “power structure” objects.
3
.Fit and apply the model parameters.
4
.Implement the simulation engine (the “law of motion”).
5
.Generate the plots and figures used in the paper.
Helper Functions
Helper Functions
Data Queries
Data Queries
File Path
File Path
In[]:=
path="/Users/mpoulshock/Documents/Github/NationalPowerAsNetworkFlow/Data/";
Country Name and ID
Country Name and ID
Ingest the country names and identifiers.
In[]:=
countryData=Import[path<>"World Power Structure/Countries.csv","Data"];
In[]:=
countries=Map[#[[2]]&,Rest[countryData]];
In[]:=
CountryName[id_]:=countries[[id]]
In[]:=
CountryID[name_]:=First[FirstPosition[countries,name]]
Wealth (1995-2020)
Wealth (1995-2020)
Import national wealth data from the data file. Output: see below.
In[]:=
wealthData=Import[path<>"World Power Structure/CountryYearsWealth.csv","Data"]
Out[]=
National wealth of a given country in a given year. Output: scalar.
In[]:=
NationalWealth[countryID_,year_]:=Block[{r},r=SelectFirst[wealthData,#[[1]]year&&#[[2]]countryID&];If[r===Missing["NotFound"],0.,r[[3]]]]
National wealth of all countries in the data set, in a given year. Output: list.
In[]:=
WealthVector[year_]:=WealthVector[year]=Array[NationalWealth[#,year]&,193]
A list of all national wealth lists from 1995-2020. Output: matrix.
In[]:=
WealthSeries=Map[WealthVector,Range[1995,2020]];
Extracts a time interval from the WealthSeries. Output: matrix.
In[]:=
WealthSeriesInterval[start_,end_]:=Take[WealthSeries,{start-1994,end-1994}]
Get the wealth series for a given country, over the entire 25-year interval. Output: matrix.
In[]:=
CountryWealthSeries[cid_Integer]:=WealthSeries[[All,cid]];CountryWealthSeries[name_String]:=CountryWealthSeries[CountryID[name]];
A list of the largest countries in a given year. Output: list.
In[]:=
LargestNCountries[n_,year_]:=Take[Reverse[Ordering[WealthVector[year]]],n]
WealthSeries with a 3-period moving average applied to each country vector. Output: matrix.
In[]:=
SmoothedWealthSeries=Transpose[Map[CenteredMovingAverage[#,3]&,Transpose[WealthSeries]]];
DOTS Merchandise Trade (1995-2020)
DOTS Merchandise Trade (1995-2020)
Import the DOTS data set.
In[]:=
dotsData=Import[path<>"Edited/IMF DOTS Subset.csv","Data"];
For a given year, convert the dyadic data to a list of rules. Output: see below.
In[]:=
dotsYearRules[year_]:=Map[{#[[1]],#[[2]]}N[#[[year-1992]]]&,Rest[dotsData]]
In[]:=
dotsYearRules[2020]
Out[]=
Generate the goods trade matrix for a given year.
In[]:=
G[year_]:=G[year]=ReplacePart[ConstantArray[0.,{193,193}],dotsYearRules[year]]
BATIS Services Trade (1995-2012)
BATIS Services Trade (1995-2012)
Import the BATIS data set. Output: see below.
In[]:=
batisData=Import[path<>"Edited/OECD-WTO BATIS Data 1995-2012.csv","Data"]
Out[]=
Segment the data by year. Output: same as above.
In[]:=
batisDataByYear[year_]:=batisDataByYear[year]=Select[batisData,#[[1]]year&]
For a given year, convert the dyadic data to a list of rules. Output: list of rules.
In[]:=
batisYearRules[year_]:=Map[{#[[2]],#[[3]]}N[#[[4]]]&,batisDataByYear[year]]
Generate the BATIS matrix. Output: matrix.
In[]:=
batisYear[year_]:=batisYear[year]=ReplacePart[ConstantArray[0.,{193,193}],batisYearRules[year]]
WTO Services Trade (2013-2020)
WTO Services Trade (2013-2020)
Import the WTO services trade data. Output: see below.
In[]:=
wtoData=Import[path<>"Edited/WTO Services Exports 2013-2020 (processed).csv","Data"]
Out[]=
For a given year, convert the dyadic data to a list of rules. Output: list of rules.
In[]:=
wtoYearRules[year_]:=Map[{#[[1]],#[[2]]}N[#[[year-2010]]]&,Rest[wtoData]]
Generate the trade matrix for a given year. Output: matrix.
In[]:=
wtoYear[year_]:=wtoYear[year]=ReplacePart[ConstantArray[0.,{193,193}],wtoYearRules[year]]
Services Trade (1995-2020)
Services Trade (1995-2020)
Select the appropriate dataset and multiply by 1000000 to get the result in current USD. Output: matrix.
Major Interstate Conflicts (1995-2020)
Major Interstate Conflicts (1995-2020)
Import the conflict data set.
Import the data for the Syria counterfactual (in which there is no civil war).
Conflict data for a given year.
Conflict matrix for a given year. Output: matrix.
Matrix of dyadic conflict expenditures. Output: matrix.
Estimated expenditure (in USD 2020) by each country in a given year. Output: list.
Currency conversion
Currency conversion
Import currency conversion data. Output: see below.
Returns the currency conversion factor for a given year. Output: real.
Trade Matrix and Vector
Trade Matrix and Vector
Returns a matrix indicating bilateral trade volumes in USD 2020. Output: matrix.
Returns a vector representing each country’s total trade volume (imports and exports of goods and services) in USD 2020. Output: list.
A time series (1995-2020) of the trade volume of a given country. Output: list.
Data gaps
Data gaps
1
.Venezuela was omitted because the national wealth figures were implausibly high.
2
.Taiwan doesn’t have any trade data.
Tactic Matrix
Tactic Matrix
NormalizeT
NormalizeT
Normalize a component of the tactic matrix by scaling it to the size (wealth) vector. Output: list.
Generate the vector to be used for normalizing components of the tactic matrix. This vector is the elementwise maximum of the wealth vector (from the prior year) and the expenditure vector. Output: list.
Total power expended (vector). Output: list.
Undo the normalization of a tactic matrix. Output: list.
Tpos
Tpos
For each year, a Tpos matrix is assembled from the goods (G) and services (S) trade data: Tpos = G + Transpose[G] + S + Transpose[S]. The resulting matrix reflects the percentage of national wealth allocated towards dyadic trade. It is not symmetric due to the normalization step. Output: matrix.
Tneg
Tneg
Construct the conflict matrix for a given year by importing the conflict data. Output: matrix.
Tzed
Tzed
A matrix representing the amount of wealth not allocated to other countries in a given year. Output: matrix.
World Power Structure
World Power Structure
Extended Power Structures
Extended Power Structures
Instead of a tactic matrix T, an extended power structure includes the component parts Tpos, Tneg, and Tzed.
An extended power structure is instantiated using Tpos and Tneg; Tzed is inferred. Output: extended power structure.
Tests for whether a power structure is an extended one. Output: Boolean.
WorldPowerStructureSeries
WorldPowerStructureSeries
The world power structure, indexed by year (1996-2020). Note that this uses the wealth vector of the prior year because, in the WID data set, national wealth is measured on the last day of the calendar year (and thus it is the prior year’s wealth vector that is altered by the current year’s trade and military activity). Output: size vector.Output: list of extended power structures. Output: list of extended power structures.
WorldPowerStructure
WorldPowerStructure
World power structure for a given year. Output: extended power structure.
World power structure for a sequence of years. Output: list of extended power structures.
Parameters
Parameters
General
General
The parameters β and λ are assumed to be scalars in this implementation.
Relationship between trade and growth
Relationship between trade and growth
What is the relationship between one year’s trade volume and the next year’s growth (in wealth)? Want to plot growth % as a function of trade % and see what the distribution of points looks like.
The linear equation above suggests that on average national wealth increases annually by 2.5% due to factors unrelated to trade and at a rate of 4.0% due to trade.
The average annual growth in wealth is 6.5% (≈2.5+4.0%).
Estimating β (scalar)
Estimating β (scalar)
Finding parameters that minimize the average error (Euclidean distance) between the actual and predicted wealth vectors, for each year from 1996-2020. Assuming β is a scalar and λ = 1.0253. This is a sliding simulation. With this method, β = 1.392.
Law of Motion
Law of Motion
UpdateS
UpdateS
Apply the law of motion to a size vector and components of a tactic matrix. These functions can accept β and λ as either scalars or vectors. Output: size vector.
Apply the law of motion to a size vector and the tactic matrix components from an extended power structure. Output: size vector.
Apply the law of motion to an extended power structure. Output: size vector.
Apply the law of motion to a size vector and the tactic matrix components from an extended power structure, repeatedly to a given depth. Output: size vector.
SimulateLawOfMotion
SimulateLawOfMotion
Simulate the law of motion over several steps. Output: list of size vectors.
Given a list of (extended) power structures, simulate the law of motion over a given time period. The initial size vector comes from the first power structure in the list, and the tactic matrix varies every year based on the other power structures. Output: list of size vectors.
Extract simulation data for selected countries (by country ID). Output: list of size vectors.
Plot Generation, etc.
Plot Generation, etc.
SizeSeriesSubsetPlot
SizeSeriesSubsetPlot
Given a time series of wealth vectors from all countries, extract specified countries and plot them.
Comparison Plots
Comparison Plots
Base function that generates the comparison plot.
Compares the actual wealth series to the model, assuming that the initial size vector is iteratively updated based on a tactic matrix that varies every year.
ReallocateTrade
ReallocateTrade
Reallocate a percentage of a state’s power (trade volume) away from its opponents and towards its allies. The input matrix is assumed to be a trade matrix. Output: trade matrix.
A version that references global variables, used in a Fold, e.g. Fold[ReallocateTrade,T,allies].
Normalize the vector of trade allocated to an country’s allies, such that the vector total equals 1.
Figures
Figures
Largest Countries by National Wealth (1995-2020)
Largest Countries by National Wealth (1995-2020)
A combined list of the biggest N countries in each year from 1995-2020.
Basic Comparison Plots
Basic Comparison Plots
The following are four examples of the model compared to actual national wealth.
Conflict Comparison Plots
Conflict Comparison Plots
Examples of countries that experienced major conflict.
Syria Counterfactual
Syria Counterfactual
Actual wealth series (Syria)
Counterfactual prediction, assuming no civil war. Note, this requires modifying the Interstate Wars 1995-2020 - DyadYears.csv file.
Combining into a plot
WW2
WW2
In the following figure, we illustrate the evolution of five major powers (Germany, Japan, Russia, the United Kingdom, and the United States) over the course of World War 2 as we show the reduction in strength of Germany and Japan as the war unfolded. The figure was created with code from another notebook.
Russo-Ukranian War
Russo-Ukranian War
Wealth as of 2020
Trade volume (2020)
Russian military expenditure on Ukraine: assume roughly $300M/day. https://www.themoscowtimes.com/2022/05/18/russian-defense-spending-surges-to-300m-per-day-amid-ukraine-war-a77712
Ukraine’s military expenditure on Russia: $8.3 billion from Feb-May. https://www.reuters.com/world/europe/exclusive-war-forces-ukraine-divert-83-bln-military-spending-tax-revenue-drops-2022-05-12/
Western support for Ukraine (Feb-Aug 2022): Ukraine has received more than $12 billion worth of weapons and financial aid from Western countries since the start of Russia’s invasion, as of May 5. https://www.reuters.com/world/europe/ukraine-gets-over-12-billion-weapons-financial-aid-since-start-russian-invasion-2022-05-05/
Western trade reductions with Russia (2022): Assume trade volume is reduced by 20%.
Russia’s wealth after a year of war. Assume that half of military expenditure is applied violence.
Ukraine’s wealth after a year of war. Assuming Ukraine’s trade volume drops by 50%. Assume that half of military expenditure is applied violence.
Plot of the results
World Power Structure Matrix
World Power Structure Matrix
Produces a matrix of the WPS for a given year.
Each column in this 193x193 matrix represents a state’s “foreign policy” towards every other state, with brighter colors denoting more activity. Negative values, indicating destruction, are in blue, but there are only a few dozen of them and they are so faint as to be invisible, illustrating that the vast majority of state interaction in the contemporary international system is constructive. The orange diagonal is the power that each state does not set in motion but retains as a stock.
Number of negative values in the matrix above:
International Trade Network (ITN)
International Trade Network (ITN)
Display a graph of the international trade network for a given year. This shows each country’s primary trading partner.
International Trade Network, 2020 (with Chinese, American, and German clusters).
International Trade Network, 1996 (with American, European, and Chinese clusters).
Current trajectory: US and China
Current trajectory: US and China
Current growth trajectories of the U.S. and China. When we run a naive simulation of the law of motion based on the 2020 world power structure, the model predicts an increasingly unipolar system dominated by China.
Hypothetical ITN: Representative scenario from Swing States
Hypothetical ITN: Representative scenario from Swing States
Predicted growth of the U.S.- and China-led coalitions, given a likely scenario. Reference is to: Poulshock, Michael. Swing States in Great Power Competition (2022). Available at: https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4124778.
Growth of China and U.S. in simulation
Total wealth of each coalition
Hypothetical ITN: Balancing Coalition from Swing States
Hypothetical ITN: Balancing Coalition from Swing States
Predicted growth of the U.S.- and China-led coalitions, given a balancing scenario. Reference is to: Poulshock, Michael. Swing States in Great Power Competition (2022). Available at: https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4124778.
Growth of China and U.S. in simulation
Total wealth of each coalition