In three previous posts on the use of Geopolitical Turning Points as instruments for bilateral geopolitical relation, I presented the working paper, the underlying logic of the instrument, and the announcement of the publication in the Journal of Comparative Economics.
You can quote the paper as follows:
Saadaoui, J. (2026). Geopolitical Turning Points and Macroeconomic Volatility: A Bilateral Identification Strategy. Journal of Comparative Economics, forthcoming.
The replication package is available here:
https://github.com/JamelSaadaoui/ResearchPapers/tree/main/Saadaoui_2026
If you want to replicate Figure 4, run the following code snippet:
**# Figure 4. Oil price reaction to an improvement of PRI between the US and China.
locproj lwti lpri llwip d.llgop l2lwip d.l2lgop ///
, ///
h(0/48) yl(3) sl(2) ///
m(ivregress gmm) ///
instr(d2.pri) ivtest(firststage) noisily stats z ///
grname(Figure_4) conf(90 95) r lcolor(green) ///
save irfn(Mean) tti(Months)
graph export Figure_4.png, as(png) width(4000) replace

See Saadaoui (2026) for more details.
You may have noticed that I included the options instr and ivtest in the code snippet above.
The instrument is the geopolitical turning points. It capture the sudden changes in the geopolitical dynamics that are not anticipated by the markets and economic agents. The test for the instrumental variable is the first stage diagnostic that you have runing the following in IV regressions with Stata. First, we take a look at what is produce by the locproj command:

Then, we can compare it with the estimates for IV local projection by hand at horizon 34 (because it is the peak of the impulse response function) using the ivregress command and the post-estimation estat command:
ivregress 2sls F34.lwti ///
L(1/2).lpri L(1/3).lwti ///
llwip D.llgop l2lwip D.l2lgop ///
(lpri = d2.pri), vce(robust)
estat firststage

Using the ivreg210 user-written command give similar results:
ivreg210 F34.lwti ///
L(1/2).lpri L(1/3).lwti ///
llwip D.llgop l2lwip D.l2lgop ///
(lpri = d2.pri), r first



You can also use the ivreg2 user-written command:
ivreg2 F34.lwti ///
L(1/2).lpri L(1/3).lwti ///
llwip D.llgop l2lwip D.l2lgop ///
(lpri = d2.pri), r first


