<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: moneyfeel</title>
    <description>The latest articles on DEV Community by moneyfeel (@moneyfeel).</description>
    <link>https://dev.to/moneyfeel</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3892476%2Fde76fdbd-e281-4415-8250-454141055606.png</url>
      <title>DEV Community: moneyfeel</title>
      <link>https://dev.to/moneyfeel</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/moneyfeel"/>
    <language>en</language>
    <item>
      <title>Reading market crises before they happen: the Macro &amp; Geopolitical Risk Index</title>
      <dc:creator>moneyfeel</dc:creator>
      <pubDate>Wed, 22 Apr 2026 12:25:18 +0000</pubDate>
      <link>https://dev.to/moneyfeel/reading-market-crises-before-they-happen-the-macro-geopolitical-risk-index-pm1</link>
      <guid>https://dev.to/moneyfeel/reading-market-crises-before-they-happen-the-macro-geopolitical-risk-index-pm1</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fohytrw5zgc3kfnhdaugb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fohytrw5zgc3kfnhdaugb.png" alt=" " width="800" height="532"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Reading Market Crises Before They Happen: The Macro &amp;amp; Geopolitical Risk Index
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;How a quantitative macro regime classifier flagged the Hormuz escalation six weeks before it became front-page news.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Setup
&lt;/h2&gt;

&lt;p&gt;On April 18, 2026, leaders from France, the UK, Italy, and Germany gathered in Paris to formalize a joint naval mission in the Strait of Hormuz. Oil had crossed $100/barrel. European inflation was accelerating. Equity markets were down ~7% from the onset of the conflict.&lt;/p&gt;

&lt;p&gt;For most investors, this felt like a sudden shock.&lt;/p&gt;

&lt;p&gt;For the &lt;strong&gt;moneyfeel Macro Risk Index (MRI)&lt;/strong&gt;, the deterioration had been visible in the data since early March.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is the MRI?
&lt;/h2&gt;

&lt;p&gt;The MRI is an institutional-grade &lt;strong&gt;macro regime classifier&lt;/strong&gt; covering 5 regions — &lt;code&gt;GLOBAL&lt;/code&gt;, &lt;code&gt;US&lt;/code&gt;, &lt;code&gt;EU&lt;/code&gt;, &lt;code&gt;ASIA&lt;/code&gt;, &lt;code&gt;EM&lt;/code&gt; — across 3 timeframes (Daily, Weekly, Monthly), updated daily at market close.&lt;/p&gt;

&lt;p&gt;It classifies market conditions into 5 discrete regimes:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Regime&lt;/th&gt;
&lt;th&gt;Equity Exposure&lt;/th&gt;
&lt;th&gt;Signal&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;STRONG_BULL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;100%&lt;/td&gt;
&lt;td&gt;Strong momentum, compressed volatility&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;BULL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;100%&lt;/td&gt;
&lt;td&gt;Positive macro, manageable conditions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;NEUTRAL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;100%&lt;/td&gt;
&lt;td&gt;Mixed signals, no confirmed stress&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;BEAR&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;20%&lt;/td&gt;
&lt;td&gt;Elevated credit stress, rising volatility&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;STRONG_BEAR&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0%&lt;/td&gt;
&lt;td&gt;Crisis conditions, extreme systemic stress&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The model ingests &lt;strong&gt;11 macro variables&lt;/strong&gt; across 5 risk dimensions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Credit markets&lt;/strong&gt; — IG/HY spreads, credit stress indicators&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Volatility&lt;/strong&gt; — implied vol surface, VIX regime&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rate dynamics&lt;/strong&gt; — curve shape, rate of change&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sovereign spreads&lt;/strong&gt; — cross-country stress differentials&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Geopolitical risk&lt;/strong&gt; — GPR Index (&lt;a href="https://www.matteoiacoviello.com/gpr.htm" rel="noopener noreferrer"&gt;Iacoviello, 2022&lt;/a&gt;), smoothed to isolate medium-term trends&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  The Methodology: What Makes It Different
&lt;/h2&gt;

&lt;p&gt;Most regime models rely on price data — momentum signals, moving averages, or drawdown thresholds. The MRI is different: &lt;strong&gt;it reads what the market is already pricing in&lt;/strong&gt;, before it shows up in equity drawdowns.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rolling Percentiles, Not Absolute Levels
&lt;/h3&gt;

&lt;p&gt;Each variable is normalized through &lt;strong&gt;3-year rolling percentiles&lt;/strong&gt;. This ensures cross-regional comparability and removes structural drift — a credit spread level that was "elevated" in 2010 carries different information in 2026.&lt;/p&gt;

&lt;h3&gt;
  
  
  Geopolitical Risk Integration
&lt;/h3&gt;

&lt;p&gt;The GPR component uses Iacoviello's newspaper-based index, but applies a &lt;strong&gt;smoothing filter&lt;/strong&gt; to separate medium-term regime shifts from short-term noise (e.g., a single day's headlines vs. a sustained escalation trajectory).&lt;/p&gt;

&lt;h3&gt;
  
  
  Composite Score
&lt;/h3&gt;

&lt;p&gt;The 11 inputs are aggregated into a single &lt;strong&gt;MRI score&lt;/strong&gt; ranging from +1 (maximum bull) to -1 (maximum bear). The regime threshold matrix is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;score &amp;gt; 0.3   → STRONG_BULL
0.0 to 0.3    → BULL
-0.2 to 0.0   → NEUTRAL
-0.6 to -0.2  → BEAR
score &amp;lt; -0.6  → STRONG_BEAR
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Confidence is reported alongside each regime classification.&lt;/p&gt;




&lt;h2&gt;
  
  
  Case Study: The Hormuz Crisis (2026)
&lt;/h2&gt;

&lt;p&gt;On &lt;strong&gt;March 2, 2026&lt;/strong&gt; — two days after the conflict onset in Iran — the MRI flagged a regime shift to &lt;code&gt;BEAR&lt;/code&gt; with a score of &lt;strong&gt;-0.637&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;By late March, the score had deteriorated to &lt;strong&gt;-0.966&lt;/strong&gt;, with &lt;code&gt;STRONG_BEAR&lt;/code&gt; conditions and ~60% confidence. Six consecutive weeks in bear territory, with the signal preceding the mainstream narrative by weeks.&lt;/p&gt;

&lt;p&gt;Notably, the &lt;strong&gt;EU regime&lt;/strong&gt; returned to &lt;code&gt;NEUTRAL&lt;/code&gt; on April 10 — 8 days before the Paris summit — already capturing the diplomatic de-escalation before it became public.&lt;/p&gt;




&lt;h2&gt;
  
  
  Historical Track Record
&lt;/h2&gt;

&lt;p&gt;The MRI covers &lt;strong&gt;2007 to present&lt;/strong&gt; (daily granularity). A few reference points:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Crisis&lt;/th&gt;
&lt;th&gt;MRI Behavior&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2008 GFC&lt;/td&gt;
&lt;td&gt;Strong Bear regime, score → -1.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;COVID-19 (2020)&lt;/td&gt;
&lt;td&gt;Rapid Bear transition across all regions simultaneously&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2022 Fed tightening cycle&lt;/td&gt;
&lt;td&gt;Score hit 100th percentile stress; Bear active throughout&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2025 Tariff shock&lt;/td&gt;
&lt;td&gt;75% stress level; Bear on US + EM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2026 Hormuz&lt;/td&gt;
&lt;td&gt;Bear from March 2, score -0.966 at peak&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The pattern is consistent: &lt;strong&gt;deterioration in the underlying macro data precedes the full equity repricing.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  API Access — Free for Researchers
&lt;/h2&gt;

&lt;p&gt;The MRI is accessible via a REST API. A &lt;strong&gt;free API key&lt;/strong&gt; gives you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Full historical dataset (2007–present)&lt;/li&gt;
&lt;li&gt;All 5 regions × 3 timeframes&lt;/li&gt;
&lt;li&gt;Performance metrics, drawdown series, year-by-year returns&lt;/li&gt;
&lt;li&gt;CSV export for backtesting
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# No auth required — current regime for all regions&lt;/span&gt;
curl https://api.moneyfeel.ai/v1/current
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As of today (April 22, 2026), the GLOBAL Weekly regime is &lt;code&gt;BEAR&lt;/code&gt; at &lt;strong&gt;-0.553&lt;/strong&gt; — compression from the March lows, but still in stress territory.&lt;/p&gt;




&lt;h2&gt;
  
  
  Python Quickstart
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;moneyfeel-mri
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;moneyfeel&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;MRI&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;MRI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mf_live_YOUR_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Current regime snapshot
&lt;/span&gt;&lt;span class="n"&gt;current&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;current&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;current&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;region&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;regime_weekly&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;score_weekly&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;

&lt;span class="c1"&gt;# Full US Weekly history as DataFrame
&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;history_df&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;US&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;WEEKLY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;from_date&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;2020-01-01&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;tail&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;

&lt;span class="c1"&gt;# Performance metrics
&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;metrics&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;US&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;WEEKLY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Sharpe: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;sharpe&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; | CAGR: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;cagr_strategy&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;% | MaxDD: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;max_dd&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;%&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GLOBAL   BEAR   -0.553
US       BEAR   -0.612
EU       NEUTRAL 0.041
ASIA     BEAR   -0.441
EM       BEAR   -0.388
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  R Integration
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight r"&gt;&lt;code&gt;&lt;span class="n"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;httr2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mf_live_YOUR_KEY"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;base&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://api.moneyfeel.ai/v1"&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;base&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;req_url_path_append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"history"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;req_url_query&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;region&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"US"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;tf&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"WEEKLY"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2020-01-01"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;req_headers&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Authorization&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;paste&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Bearer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;req_perform&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;resp_body_json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;do.call&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rbind&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;lapply&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;as.data.frame&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;head&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  API Endpoints Reference
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Endpoint&lt;/th&gt;
&lt;th&gt;Auth&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GET&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/status&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Health check&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GET&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/current&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Current regime, all regions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GET&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/history&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Historical regime series&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GET&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/regime/latest&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Latest record for region+tf&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GET&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/metrics&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Strategy KPIs (Sharpe, CAGR, MaxDD)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GET&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/timeseries&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Daily strategy vs benchmark&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GET&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/eoy&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Year-by-year returns&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GET&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/drawdowns&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Top 10 drawdowns&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GET&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/download&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Full CSV export&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Rate limits: &lt;strong&gt;30 req/min&lt;/strong&gt;, &lt;strong&gt;2,000 req/day&lt;/strong&gt; (free tier).&lt;/p&gt;




&lt;h2&gt;
  
  
  Get Your Free API Key
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Register at &lt;a href="https://moneyfeel.it" rel="noopener noreferrer"&gt;moneyfeel.it&lt;/a&gt; — no credit card required&lt;/li&gt;
&lt;li&gt;Go to your account page&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MRI API Access&lt;/strong&gt; → Generate API Key&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;→ &lt;a href="https://github.com/moneyfeel-io/mri-api" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;br&gt;
→ &lt;a href="https://pypi.org/project/moneyfeel-mri/" rel="noopener noreferrer"&gt;PyPI Package&lt;/a&gt;&lt;br&gt;
→ &lt;a href="https://moneyfeel.it/dashboard/macro-risk-index/" rel="noopener noreferrer"&gt;Live Dashboard&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Citation
&lt;/h2&gt;

&lt;p&gt;If you use MRI data in research or publications:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;moneyfeel (2026). &lt;em&gt;Macro &amp;amp; Geopolitical Risk Index (MRI)&lt;/em&gt;. moneyfeel.it.&lt;br&gt;
Retrieved from &lt;a href="https://moneyfeel.it/dashboard/macro-risk-index/" rel="noopener noreferrer"&gt;https://moneyfeel.it/dashboard/macro-risk-index/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Iacoviello, M. (2022). &lt;em&gt;Measuring Geopolitical Risk&lt;/em&gt;.&lt;br&gt;
American Economic Review, 113(4), 1194–1225.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;em&gt;License: CC BY-NC 4.0 — free for research and non-commercial use.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://medium.com/@moneyfeel/reading-market-crises-before-they-happen-the-macro-geopolitical-risk-index-72241b3cc19a" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>finance</category>
      <category>quant</category>
      <category>api</category>
    </item>
  </channel>
</rss>
