<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Central Bank Tech]]></title><description><![CDATA[My name is Cal Mitchell. This site is explores the use of technology at central banks and other economic institutions.]]></description><link>https://www.centralbank.tech</link><image><url>https://substackcdn.com/image/fetch/$s_!YtbC!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7bc9747-e810-405c-a005-78697623ba79_1280x1280.png</url><title>Central Bank Tech</title><link>https://www.centralbank.tech</link></image><generator>Substack</generator><lastBuildDate>Tue, 28 Jul 2026 17:56:29 GMT</lastBuildDate><atom:link href="https://www.centralbank.tech/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Cal Mitchell]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[calmitchell@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[calmitchell@substack.com]]></itunes:email><itunes:name><![CDATA[Cal Mitchell]]></itunes:name></itunes:owner><itunes:author><![CDATA[Cal Mitchell]]></itunes:author><googleplay:owner><![CDATA[calmitchell@substack.com]]></googleplay:owner><googleplay:email><![CDATA[calmitchell@substack.com]]></googleplay:email><googleplay:author><![CDATA[Cal Mitchell]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Using agent based modeling to predict Digital euro adoption]]></title><description><![CDATA[A technical companion to an upcoming OMFIF commentary article]]></description><link>https://www.centralbank.tech/p/digital-euro-agent-based-modeling</link><guid isPermaLink="false">https://www.centralbank.tech/p/digital-euro-agent-based-modeling</guid><dc:creator><![CDATA[Cal Mitchell]]></dc:creator><pubDate>Tue, 28 Jul 2026 13:06:08 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/92e86d1d-ca72-4434-99c8-f12f64ec65fb_1731x909.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This post explains my <a href="https://github.com/calmitchell617/digital-euro-adoption">Digital Euro Adoption code repository</a>, which uses agent based modeling and machine learning to predict how three product decisions could affect adoption of the Digital Euro:</p><ul><li><p>How long can sign-up take before people lose interest?</p></li><li><p>Does paying in a shop need to be as quick as using a physical card?</p></li><li><p>How fast does a person-to-person (P2P) payment need to feel?</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BVbC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4ba4474-dc4e-4227-8aa6-9c3a6cf61277_1731x909.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BVbC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4ba4474-dc4e-4227-8aa6-9c3a6cf61277_1731x909.png 424w, https://substackcdn.com/image/fetch/$s_!BVbC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4ba4474-dc4e-4227-8aa6-9c3a6cf61277_1731x909.png 848w, https://substackcdn.com/image/fetch/$s_!BVbC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4ba4474-dc4e-4227-8aa6-9c3a6cf61277_1731x909.png 1272w, https://substackcdn.com/image/fetch/$s_!BVbC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4ba4474-dc4e-4227-8aa6-9c3a6cf61277_1731x909.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BVbC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4ba4474-dc4e-4227-8aa6-9c3a6cf61277_1731x909.png" width="1456" height="765" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f4ba4474-dc4e-4227-8aa6-9c3a6cf61277_1731x909.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:765,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1496294,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://calmitchell.substack.com/i/208694500?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4ba4474-dc4e-4227-8aa6-9c3a6cf61277_1731x909.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BVbC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4ba4474-dc4e-4227-8aa6-9c3a6cf61277_1731x909.png 424w, https://substackcdn.com/image/fetch/$s_!BVbC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4ba4474-dc4e-4227-8aa6-9c3a6cf61277_1731x909.png 848w, https://substackcdn.com/image/fetch/$s_!BVbC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4ba4474-dc4e-4227-8aa6-9c3a6cf61277_1731x909.png 1272w, https://substackcdn.com/image/fetch/$s_!BVbC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4ba4474-dc4e-4227-8aa6-9c3a6cf61277_1731x909.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This post explains how the model works and the key assumptions behind it, while an upcoming post from OMFIF will discuss business and policy implications. I&#8217;ll link to that article when it becomes available.</p><p>At a high level, I modeled 100,000 simulated buyers using a combination of supervised and reinforcement learning. Each buyer has their own weights and learns whether a new payment method is worth signing up for. Buyers who sign up also learn when to use it instead of cash, a card or a bank transfer.</p><p>I start with payment times based on Sweden&#8217;s Swish system, then change one Digital Euro assumption at a time and compare the results. As such, this is a scenario model, not a forecast of the Digital Euro&#8217;s actual future market share.</p><h2><strong>Why start with Swish?</strong></h2><p>Swish is a useful starting point because it is a digital payment method with a similar range of uses. It first became popular as an easy way to send money to another person and later expanded into online and shop payments.</p><p>Sweden also publishes data that is useful for creating a reinforcement machine learning model. In particular, the Riksbank measured how long it takes people to complete a transaction using cash, cards and Swish while in-store and online.</p><p>And of course, Sweden is in Europe and is part of the European Union. This makes me believe that studying the roll out of a new digital payments system there (even if it is a private solution) is probably more relevant than studying systems like Brazil&#8217;s Pix or India&#8217;s UPI. This is not to say that Sweden can be thought of as a miniature EU - far from it. However, I believe the political and payments systems landscape that Sweden shares with the rest of the EU makes Swish a useful, if imperfect, comparison.</p><p>With all that being said, I use Swish as a sense check and as a source of real payment times, and do not assume that the Digital Euro will follow the same adoption path.</p><p>The shop and online times come from Table 7 (below) of the Riksbank&#8217;s 2023 <a href="https://www.riksbank.se/globalassets/media/rapporter/riksbanksstudie/engelska/2023/riksbanksstudie-cost-of-payments-in-sweden.pdf">Cost of payments in Sweden</a> study. The P2P times and occasional delays are my own assumptions because the table does not include them. We will discuss those assumptions later.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DMbh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45c24ef0-4978-41cd-a9e3-f77556394825_936x678.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DMbh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45c24ef0-4978-41cd-a9e3-f77556394825_936x678.png 424w, https://substackcdn.com/image/fetch/$s_!DMbh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45c24ef0-4978-41cd-a9e3-f77556394825_936x678.png 848w, https://substackcdn.com/image/fetch/$s_!DMbh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45c24ef0-4978-41cd-a9e3-f77556394825_936x678.png 1272w, https://substackcdn.com/image/fetch/$s_!DMbh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45c24ef0-4978-41cd-a9e3-f77556394825_936x678.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DMbh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45c24ef0-4978-41cd-a9e3-f77556394825_936x678.png" width="936" height="678" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/45c24ef0-4978-41cd-a9e3-f77556394825_936x678.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:678,&quot;width&quot;:936,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:129314,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://calmitchell.substack.com/i/208694500?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45c24ef0-4978-41cd-a9e3-f77556394825_936x678.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DMbh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45c24ef0-4978-41cd-a9e3-f77556394825_936x678.png 424w, https://substackcdn.com/image/fetch/$s_!DMbh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45c24ef0-4978-41cd-a9e3-f77556394825_936x678.png 848w, https://substackcdn.com/image/fetch/$s_!DMbh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45c24ef0-4978-41cd-a9e3-f77556394825_936x678.png 1272w, https://substackcdn.com/image/fetch/$s_!DMbh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45c24ef0-4978-41cd-a9e3-f77556394825_936x678.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>How the model works</strong></h2><p>Each agent is one buyer with two small neural networks. They start with different random weights. One network estimates how likely the buyer is to sign up. The other scores the payment methods available for each transaction. The code is in <code>BuyerAdoptionRules</code>, <code>BuyerPaymentRules</code> and the shared <code>BuyerNetworks</code> class.</p><p>The full model has 100,000 buyers. Every buyer has their own network weights instead of using one network shared by the whole population. PyTorch keeps a separate set of weights for each buyer in the same tensor, then calculates them together with <code>torch.einsum</code>. Both networks have two hidden layers, 32 values in each layer and ReLU activation. The calculation is in <code>BuyerNetworks.apply_hidden_layers</code>.</p><p>Each training batch contains 50 payments per buyer (roughly the number of financial transactions an EU citizen completes in a month). The input tensor has one dimension for payments, one for buyers and one for seven input values. The first four inputs show which payment methods are available. The final three show whether the payment is P2P, retail or online. The networks do not see how long each method takes. Payment time is only used as feedback during training.</p><h3><strong>Main settings</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uux1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765840ed-e2b4-4eda-9e05-ec865df93432_642x822.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uux1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765840ed-e2b4-4eda-9e05-ec865df93432_642x822.png 424w, https://substackcdn.com/image/fetch/$s_!uux1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765840ed-e2b4-4eda-9e05-ec865df93432_642x822.png 848w, https://substackcdn.com/image/fetch/$s_!uux1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765840ed-e2b4-4eda-9e05-ec865df93432_642x822.png 1272w, https://substackcdn.com/image/fetch/$s_!uux1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765840ed-e2b4-4eda-9e05-ec865df93432_642x822.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uux1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765840ed-e2b4-4eda-9e05-ec865df93432_642x822.png" width="642" height="822" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/765840ed-e2b4-4eda-9e05-ec865df93432_642x822.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:822,&quot;width&quot;:642,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:65468,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://calmitchell.substack.com/i/208694500?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765840ed-e2b4-4eda-9e05-ec865df93432_642x822.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!uux1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765840ed-e2b4-4eda-9e05-ec865df93432_642x822.png 424w, https://substackcdn.com/image/fetch/$s_!uux1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765840ed-e2b4-4eda-9e05-ec865df93432_642x822.png 848w, https://substackcdn.com/image/fetch/$s_!uux1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765840ed-e2b4-4eda-9e05-ec865df93432_642x822.png 1272w, https://substackcdn.com/image/fetch/$s_!uux1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765840ed-e2b4-4eda-9e05-ec865df93432_642x822.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>These values are set in </span><code>consts.py</code><span>. The model looks for CUDA first and uses 32-bit floating-point numbers.</span></p><h3><strong>How payments are created</strong></h3><p>Each batch represents four weeks. The code chooses a channel for every payment using these fixed probabilities. It also removes methods that cannot be used in that channel.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DQXS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9f5df9a-f86f-4073-9e7e-4a85da7603a0_832x274.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DQXS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9f5df9a-f86f-4073-9e7e-4a85da7603a0_832x274.png 424w, https://substackcdn.com/image/fetch/$s_!DQXS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9f5df9a-f86f-4073-9e7e-4a85da7603a0_832x274.png 848w, https://substackcdn.com/image/fetch/$s_!DQXS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9f5df9a-f86f-4073-9e7e-4a85da7603a0_832x274.png 1272w, https://substackcdn.com/image/fetch/$s_!DQXS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9f5df9a-f86f-4073-9e7e-4a85da7603a0_832x274.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DQXS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9f5df9a-f86f-4073-9e7e-4a85da7603a0_832x274.png" width="832" height="274" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a9f5df9a-f86f-4073-9e7e-4a85da7603a0_832x274.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:274,&quot;width&quot;:832,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:32233,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://calmitchell.substack.com/i/208694500?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9f5df9a-f86f-4073-9e7e-4a85da7603a0_832x274.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DQXS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9f5df9a-f86f-4073-9e7e-4a85da7603a0_832x274.png 424w, https://substackcdn.com/image/fetch/$s_!DQXS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9f5df9a-f86f-4073-9e7e-4a85da7603a0_832x274.png 848w, https://substackcdn.com/image/fetch/$s_!DQXS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9f5df9a-f86f-4073-9e7e-4a85da7603a0_832x274.png 1272w, https://substackcdn.com/image/fetch/$s_!DQXS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9f5df9a-f86f-4073-9e7e-4a85da7603a0_832x274.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><code>PaymentAdoptionModel._make_sample_payments</code> creates the payments. It chooses the channel, merchant, acceptance and available methods. Five per cent of the 1,000 retail merchants are cash-only for the whole simulation. For the other merchants, the code makes a new acceptance draw for each payment using that month&#8217;s acceptance rate.</p><p>The formula below calculates the time for buyer <code>b</code> to make payment <code>t</code> with method <code>m</code>. The symbol <code>c</code> is the payment channel. <code>d</code> is the final payment time, while <code>d&#772;</code> is the normal time for that method and channel. <code>q</code> is the buyer&#8217;s fixed time multiplier for that method. <code>e</code> is the length of a possible extra delay, and <code>z</code> is either zero or one depending on whether that delay happens.</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;d_{btm}=\\bar d_{c_t m}q_{bm}+z_{btm}e_{c_t m}q_{bm}&quot;,&quot;id&quot;:&quot;OGMFYOKUXD&quot;}" data-component-name="LatexBlockToDOM"></div><p>The first term is the normal payment time adjusted for the buyer. The second adds the extra delay when <code>z</code> equals one. <code>_realized_payment_durations_for</code> contains the code.</p><p>The code draws a separate time multiplier for every buyer and payment method, limited to between two-thirds and 1.5. This lets a buyer be quicker than average with one method and slower than average with another. A separate multiplier changes that buyer&#8217;s sign-up time. The draw is in <code>_make_buyer_time_multipliers</code>.</p><h3><strong>How buyers learn to sign up</strong></h3><p>For each training batch, the code works out how much time a buyer could save by owning the new method. It finds the quickest available option for every payment, first without the new method and then with it. The calculation is:</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;S_b = \\frac{H}{W}\\sum_t\\left(\n\\min_{m\\in A_{bt}^{0}} d_{btm}\n-\n\\min_{m\\in A_{bt}^{1}} d_{btm}\n\\right)&quot;,&quot;id&quot;:&quot;SRKWTHPDXX&quot;}" data-component-name="LatexBlockToDOM"></div><p><span>In the equation, </span><code>b</code><span> identifies the buyer, </span><code>t</code><span> the payment and </span><code>m</code><span> the method. The two </span><code>A</code><span> terms are the methods available without and with the new method. Both </span><code>H</code><span> and </span><code>W</code><span> are four weeks in these runs. The code then compares the saved time with that buyer's sign-up time:</span></p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;y_b=\\mathbf{1}[S_b>o_b]&quot;,&quot;id&quot;:&quot;VQMHAVZGHB&quot;}" data-component-name="LatexBlockToDOM"></div><p><span>This produces the yes or no answer used to train the network. Buyers do not directly follow this formula when they decide whether to sign up. Their neural networks learn to approximate it from many batches using binary cross-entropy. A sigmoid turns the network's score into a probability, and the buyer makes a random draw using that probability. Once a buyer signs up, they keep the method. The training target is in </span><code>_adoption_training_loss</code><span>, and the sign-up draw is in </span><code>BuyerAdoptionRules.sample_adoption_decisions</code><span>.</span></p><h3><strong>How buyers learn to pay</strong></h3><p>The payment network gives each method a score. The code removes methods that cannot be used, turns the remaining scores into probabilities and samples one according to those probabilities. There is no hard-coded rule telling buyers to use a particular method in a particular channel. This choice happens in <code>BuyerPaymentRules.sample_payment_methods</code>.</p><p>The payment-training loss is:</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;L_b=\\sum_t\\log\\pi_b(a_{bt}\\mid x_{bt})d_{bt,a_{bt}}&quot;,&quot;id&quot;:&quot;PWGWOMAXRT&quot;}" data-component-name="LatexBlockToDOM"></div><p><span>In this equation, </span><code>a</code><span> is the chosen payment method, </span><code>x</code><span> is the payment input, </span><code>&#960;</code><span> is the buyer's payment policy and </span><code>d</code><span> is the time taken. This is a simple policy-gradient loss. Longer payments push down the chance of making the same choice again in a similar situation. Payment times are detached from the gradient, so training changes the network rather than the generated times. The code is in </span><code>_payment_training_loss</code><span>.</span></p><h3><strong>How training works</strong></h3><p><code>PaymentAdoptionModel._learn_decision_rules</code> runs 1,000 training steps. Each buyer gets random acceptance rates for P2P, retail and online payments. Ten per cent of the examples use zero acceptance and another 10% use full acceptance. This makes sure the sign-up network sees both extremes.</p><p>During the first 100 steps, the payment network learns from payment times. An extra loss keeps its starting chance of choosing the new method close to zero because nobody owns it yet. The sign-up network trains for all 1,000 steps. After step 100, the payment network pauses until the monthly simulation begins. The two networks remain separate: the sign-up network does not copy or inspect the payment network&#8217;s weights.</p><p><code>PaymentAdoptionModel._simulate_months</code> then resets ownership to zero and follows the same buyers for 160 months. The sign-up network stops learning, but the payment network updates once each month. P2P acceptance equals the share of buyers who owned the method at the start of that month. Retail and online acceptance rise at a steady rate from zero to 70% over 60 months. The reports use month 120.</p><h2><strong>Main assumptions</strong></h2><p>All settings are in <code>consts.py</code>. These are the main assumptions to keep in mind:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TloO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0568a951-8270-47d6-9bf4-3ca99d86e47f_1242x1384.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TloO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0568a951-8270-47d6-9bf4-3ca99d86e47f_1242x1384.png 424w, https://substackcdn.com/image/fetch/$s_!TloO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0568a951-8270-47d6-9bf4-3ca99d86e47f_1242x1384.png 848w, https://substackcdn.com/image/fetch/$s_!TloO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0568a951-8270-47d6-9bf4-3ca99d86e47f_1242x1384.png 1272w, https://substackcdn.com/image/fetch/$s_!TloO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0568a951-8270-47d6-9bf4-3ca99d86e47f_1242x1384.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TloO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0568a951-8270-47d6-9bf4-3ca99d86e47f_1242x1384.png" width="1242" height="1384" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0568a951-8270-47d6-9bf4-3ca99d86e47f_1242x1384.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1384,&quot;width&quot;:1242,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:225999,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://calmitchell.substack.com/i/208694500?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0568a951-8270-47d6-9bf4-3ca99d86e47f_1242x1384.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TloO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0568a951-8270-47d6-9bf4-3ca99d86e47f_1242x1384.png 424w, https://substackcdn.com/image/fetch/$s_!TloO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0568a951-8270-47d6-9bf4-3ca99d86e47f_1242x1384.png 848w, https://substackcdn.com/image/fetch/$s_!TloO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0568a951-8270-47d6-9bf4-3ca99d86e47f_1242x1384.png 1272w, https://substackcdn.com/image/fetch/$s_!TloO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0568a951-8270-47d6-9bf4-3ca99d86e47f_1242x1384.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The normal retail and online times for cash, cards and Swish come from the Riksbank table above. The P2P times, chances of extra delays, lengths of those delays and Digital Euro scenarios are my assumptions. The app P2P estimates come from timing myself completing transactions in certain situations. I am probably more technically competent / faster on my phone than the average person, and so added a few seconds / rounded to the nearest 30 seconds to hopefully make things more applicable to a general audience.</p><p>The fixed seed makes runs easier to repeat in the same software and hardware setup. Different PyTorch, CUDA or GPU versions may still give slightly different results.</p><p>The model also leaves out demographics, geography, payment value, merchant strategy, network capacity, settlement time, privacy, fraud, rewards, fees and legal rules. The Swish run is a basic sense check. I do not fit the model to real Swish adoption data. The Digital Euro runs compare scenarios; they do not forecast future market share.</p><h2><strong>Scenarios and charts</strong></h2><p><code>generate_reports.py</code> lists the settings for every comparison. If the same scenario appears in more than one comparison, the code only runs it once. <code>scenario_results.csv</code> stores the inputs and month-120 results. Quick and full runs write to the same files.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZP_4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83a0bb31-d564-4909-96ef-7d404879ee0c_1218x522.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZP_4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83a0bb31-d564-4909-96ef-7d404879ee0c_1218x522.png 424w, https://substackcdn.com/image/fetch/$s_!ZP_4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83a0bb31-d564-4909-96ef-7d404879ee0c_1218x522.png 848w, https://substackcdn.com/image/fetch/$s_!ZP_4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83a0bb31-d564-4909-96ef-7d404879ee0c_1218x522.png 1272w, https://substackcdn.com/image/fetch/$s_!ZP_4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83a0bb31-d564-4909-96ef-7d404879ee0c_1218x522.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZP_4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83a0bb31-d564-4909-96ef-7d404879ee0c_1218x522.png" width="1218" height="522" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/83a0bb31-d564-4909-96ef-7d404879ee0c_1218x522.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:522,&quot;width&quot;:1218,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:84113,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://calmitchell.substack.com/i/208694500?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83a0bb31-d564-4909-96ef-7d404879ee0c_1218x522.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZP_4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83a0bb31-d564-4909-96ef-7d404879ee0c_1218x522.png 424w, https://substackcdn.com/image/fetch/$s_!ZP_4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83a0bb31-d564-4909-96ef-7d404879ee0c_1218x522.png 848w, https://substackcdn.com/image/fetch/$s_!ZP_4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83a0bb31-d564-4909-96ef-7d404879ee0c_1218x522.png 1272w, https://substackcdn.com/image/fetch/$s_!ZP_4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83a0bb31-d564-4909-96ef-7d404879ee0c_1218x522.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qYdK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea51821-5e65-4ca4-aa57-0d41e848504d_942x270.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qYdK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea51821-5e65-4ca4-aa57-0d41e848504d_942x270.png 424w, https://substackcdn.com/image/fetch/$s_!qYdK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea51821-5e65-4ca4-aa57-0d41e848504d_942x270.png 848w, https://substackcdn.com/image/fetch/$s_!qYdK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea51821-5e65-4ca4-aa57-0d41e848504d_942x270.png 1272w, https://substackcdn.com/image/fetch/$s_!qYdK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea51821-5e65-4ca4-aa57-0d41e848504d_942x270.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qYdK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea51821-5e65-4ca4-aa57-0d41e848504d_942x270.png" width="942" height="270" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9ea51821-5e65-4ca4-aa57-0d41e848504d_942x270.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:270,&quot;width&quot;:942,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:38324,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://calmitchell.substack.com/i/208694500?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea51821-5e65-4ca4-aa57-0d41e848504d_942x270.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qYdK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea51821-5e65-4ca4-aa57-0d41e848504d_942x270.png 424w, https://substackcdn.com/image/fetch/$s_!qYdK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea51821-5e65-4ca4-aa57-0d41e848504d_942x270.png 848w, https://substackcdn.com/image/fetch/$s_!qYdK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea51821-5e65-4ca4-aa57-0d41e848504d_942x270.png 1272w, https://substackcdn.com/image/fetch/$s_!qYdK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea51821-5e65-4ca4-aa57-0d41e848504d_942x270.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The charts are below. What they mean for policy is discussed in the OMFIF article.</p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CIi4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3db4e8a-09d8-4c54-9887-15a6666a7ea3_1600x800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CIi4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3db4e8a-09d8-4c54-9887-15a6666a7ea3_1600x800.png 424w, https://substackcdn.com/image/fetch/$s_!CIi4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3db4e8a-09d8-4c54-9887-15a6666a7ea3_1600x800.png 848w, https://substackcdn.com/image/fetch/$s_!CIi4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3db4e8a-09d8-4c54-9887-15a6666a7ea3_1600x800.png 1272w, https://substackcdn.com/image/fetch/$s_!CIi4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3db4e8a-09d8-4c54-9887-15a6666a7ea3_1600x800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CIi4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3db4e8a-09d8-4c54-9887-15a6666a7ea3_1600x800.png" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b3db4e8a-09d8-4c54-9887-15a6666a7ea3_1600x800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:68224,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://calmitchell.substack.com/i/208694500?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3db4e8a-09d8-4c54-9887-15a6666a7ea3_1600x800.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CIi4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3db4e8a-09d8-4c54-9887-15a6666a7ea3_1600x800.png 424w, https://substackcdn.com/image/fetch/$s_!CIi4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3db4e8a-09d8-4c54-9887-15a6666a7ea3_1600x800.png 848w, https://substackcdn.com/image/fetch/$s_!CIi4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3db4e8a-09d8-4c54-9887-15a6666a7ea3_1600x800.png 1272w, https://substackcdn.com/image/fetch/$s_!CIi4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3db4e8a-09d8-4c54-9887-15a6666a7ea3_1600x800.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Nhdb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a44646d-de9c-4a8d-9611-e0c2a3ccfe66_1600x800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Nhdb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a44646d-de9c-4a8d-9611-e0c2a3ccfe66_1600x800.png 424w, https://substackcdn.com/image/fetch/$s_!Nhdb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a44646d-de9c-4a8d-9611-e0c2a3ccfe66_1600x800.png 848w, https://substackcdn.com/image/fetch/$s_!Nhdb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a44646d-de9c-4a8d-9611-e0c2a3ccfe66_1600x800.png 1272w, https://substackcdn.com/image/fetch/$s_!Nhdb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a44646d-de9c-4a8d-9611-e0c2a3ccfe66_1600x800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Nhdb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a44646d-de9c-4a8d-9611-e0c2a3ccfe66_1600x800.png" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6a44646d-de9c-4a8d-9611-e0c2a3ccfe66_1600x800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:47109,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://calmitchell.substack.com/i/208694500?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a44646d-de9c-4a8d-9611-e0c2a3ccfe66_1600x800.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Nhdb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a44646d-de9c-4a8d-9611-e0c2a3ccfe66_1600x800.png 424w, https://substackcdn.com/image/fetch/$s_!Nhdb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a44646d-de9c-4a8d-9611-e0c2a3ccfe66_1600x800.png 848w, https://substackcdn.com/image/fetch/$s_!Nhdb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a44646d-de9c-4a8d-9611-e0c2a3ccfe66_1600x800.png 1272w, https://substackcdn.com/image/fetch/$s_!Nhdb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a44646d-de9c-4a8d-9611-e0c2a3ccfe66_1600x800.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eSlS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf52f580-02fe-4b22-8666-9d103db6eb88_1600x800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eSlS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf52f580-02fe-4b22-8666-9d103db6eb88_1600x800.png 424w, https://substackcdn.com/image/fetch/$s_!eSlS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf52f580-02fe-4b22-8666-9d103db6eb88_1600x800.png 848w, https://substackcdn.com/image/fetch/$s_!eSlS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf52f580-02fe-4b22-8666-9d103db6eb88_1600x800.png 1272w, https://substackcdn.com/image/fetch/$s_!eSlS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf52f580-02fe-4b22-8666-9d103db6eb88_1600x800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eSlS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf52f580-02fe-4b22-8666-9d103db6eb88_1600x800.png" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cf52f580-02fe-4b22-8666-9d103db6eb88_1600x800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:49718,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://calmitchell.substack.com/i/208694500?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf52f580-02fe-4b22-8666-9d103db6eb88_1600x800.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!eSlS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf52f580-02fe-4b22-8666-9d103db6eb88_1600x800.png 424w, https://substackcdn.com/image/fetch/$s_!eSlS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf52f580-02fe-4b22-8666-9d103db6eb88_1600x800.png 848w, https://substackcdn.com/image/fetch/$s_!eSlS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf52f580-02fe-4b22-8666-9d103db6eb88_1600x800.png 1272w, https://substackcdn.com/image/fetch/$s_!eSlS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf52f580-02fe-4b22-8666-9d103db6eb88_1600x800.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BJeu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb880525-2fe1-4f15-bbe7-614987b93b0f_2240x640.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BJeu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb880525-2fe1-4f15-bbe7-614987b93b0f_2240x640.png 424w, https://substackcdn.com/image/fetch/$s_!BJeu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb880525-2fe1-4f15-bbe7-614987b93b0f_2240x640.png 848w, https://substackcdn.com/image/fetch/$s_!BJeu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb880525-2fe1-4f15-bbe7-614987b93b0f_2240x640.png 1272w, https://substackcdn.com/image/fetch/$s_!BJeu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb880525-2fe1-4f15-bbe7-614987b93b0f_2240x640.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BJeu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb880525-2fe1-4f15-bbe7-614987b93b0f_2240x640.png" width="1456" height="416" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/db880525-2fe1-4f15-bbe7-614987b93b0f_2240x640.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:416,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:128865,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://calmitchell.substack.com/i/208694500?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb880525-2fe1-4f15-bbe7-614987b93b0f_2240x640.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BJeu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb880525-2fe1-4f15-bbe7-614987b93b0f_2240x640.png 424w, https://substackcdn.com/image/fetch/$s_!BJeu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb880525-2fe1-4f15-bbe7-614987b93b0f_2240x640.png 848w, https://substackcdn.com/image/fetch/$s_!BJeu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb880525-2fe1-4f15-bbe7-614987b93b0f_2240x640.png 1272w, https://substackcdn.com/image/fetch/$s_!BJeu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb880525-2fe1-4f15-bbe7-614987b93b0f_2240x640.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3rYB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce4d06d-a349-4aaa-8505-eac585372559_2240x640.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3rYB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce4d06d-a349-4aaa-8505-eac585372559_2240x640.png 424w, https://substackcdn.com/image/fetch/$s_!3rYB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce4d06d-a349-4aaa-8505-eac585372559_2240x640.png 848w, https://substackcdn.com/image/fetch/$s_!3rYB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce4d06d-a349-4aaa-8505-eac585372559_2240x640.png 1272w, https://substackcdn.com/image/fetch/$s_!3rYB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce4d06d-a349-4aaa-8505-eac585372559_2240x640.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3rYB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce4d06d-a349-4aaa-8505-eac585372559_2240x640.png" width="1456" height="416" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1ce4d06d-a349-4aaa-8505-eac585372559_2240x640.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:416,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:137129,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://calmitchell.substack.com/i/208694500?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce4d06d-a349-4aaa-8505-eac585372559_2240x640.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3rYB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce4d06d-a349-4aaa-8505-eac585372559_2240x640.png 424w, https://substackcdn.com/image/fetch/$s_!3rYB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce4d06d-a349-4aaa-8505-eac585372559_2240x640.png 848w, https://substackcdn.com/image/fetch/$s_!3rYB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce4d06d-a349-4aaa-8505-eac585372559_2240x640.png 1272w, https://substackcdn.com/image/fetch/$s_!3rYB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ce4d06d-a349-4aaa-8505-eac585372559_2240x640.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>The two charts above use the 30-second P2P setting. The other retail charts are the </span>56-second P2P case with Swish-speed retail<span>, the </span>56-second P2P case with card-speed retail<span>, the </span>120-second P2P case with Swish-speed retail<span> and the </span>120-second P2P case with card-speed retail<span>.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ybvF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6de40428-6665-4a01-92f9-08d2316989b4_1600x800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ybvF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6de40428-6665-4a01-92f9-08d2316989b4_1600x800.png 424w, https://substackcdn.com/image/fetch/$s_!ybvF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6de40428-6665-4a01-92f9-08d2316989b4_1600x800.png 848w, https://substackcdn.com/image/fetch/$s_!ybvF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6de40428-6665-4a01-92f9-08d2316989b4_1600x800.png 1272w, https://substackcdn.com/image/fetch/$s_!ybvF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6de40428-6665-4a01-92f9-08d2316989b4_1600x800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ybvF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6de40428-6665-4a01-92f9-08d2316989b4_1600x800.png" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6de40428-6665-4a01-92f9-08d2316989b4_1600x800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:69746,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://calmitchell.substack.com/i/208694500?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6de40428-6665-4a01-92f9-08d2316989b4_1600x800.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ybvF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6de40428-6665-4a01-92f9-08d2316989b4_1600x800.png 424w, https://substackcdn.com/image/fetch/$s_!ybvF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6de40428-6665-4a01-92f9-08d2316989b4_1600x800.png 848w, https://substackcdn.com/image/fetch/$s_!ybvF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6de40428-6665-4a01-92f9-08d2316989b4_1600x800.png 1272w, https://substackcdn.com/image/fetch/$s_!ybvF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6de40428-6665-4a01-92f9-08d2316989b4_1600x800.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>More technical information and information on running the code is in the <a href="https://github.com/calmitchell617/digital-euro-adoption">Github repository</a>.</p>]]></content:encoded></item><item><title><![CDATA[Agent Based Modeling in Economics and Finance]]></title><description><![CDATA[A different way to look at things]]></description><link>https://www.centralbank.tech/p/agent-based-modeling-in-economics</link><guid isPermaLink="false">https://www.centralbank.tech/p/agent-based-modeling-in-economics</guid><dc:creator><![CDATA[Cal Mitchell]]></dc:creator><pubDate>Mon, 29 Jun 2026 13:05:39 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/b127d030-3538-4b8a-8687-8c77ba36ee40_1731x909.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>While studying economics in undergrad, I was always struck by something: Economists don&#8217;t seem very good at predicting what will happen to the economy.</p><p>As <a href="https://www.youtube.com/@EconomicsExplained">Economics Explained</a>, one of my favorite economics Youtubers says: &#8220;Nobody can predict the future, least of all economists&#8221;.</p><p>Why is that? And is there a better way?</p><h2>The problem: people</h2><p>I personally believe the original sin of economics is that we assume people (and organizations run by people) make optimal financial decisions. Of course, no equation will ever capture the complexity of the real economy, let alone human psychology. So, we need to assume <em>something</em>, or else we&#8217;d never get any research done.</p><p>Enter agent based modeling.</p><h2>Agent based modeling definition</h2><p>Instead of writing top-down formulas, such as Keynes&#8217; GDP formula:</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;GDP = C + I + G + (X - M)&quot;,&quot;id&quot;:&quot;EVEPMXMFOH&quot;}" data-component-name="LatexBlockToDOM"></div><p>Agent based modeling (ABM) simulates the real world by creating an ecosystem of &#8220;agents&#8221; that act in their own self interest. The art of agent based modeling involves constructing agents that resemble the entities you&#8217;re trying to simulate, and environments that provide a realistic structure for those agents operate in.</p><p>Typically, each agent will have local &#8220;state&#8221;, which is data that only that specific agent can see. State can include how much money it has, what it&#8217;s behavioral rules are, offers it has made and received from other agents, and much more.</p><p>Environments contain rules that resemble real world laws, marketplaces, public state that all agents can see, and other things constructs that agents interact with each other through. Two ambitious environments that are meant to simulate an entire economy are:</p><ul><li><p><a href="https://www.sciencedirect.com/science/article/abs/pii/S0165188915301020">Agent based-stock flow consistent macroeconomics: Towards a benchmark model</a></p></li><li><p><a href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=5879222">JMAB 2.0: A Critical Update for the Macroeconomic Agent-based Model JMAB</a></p></li></ul><p>You can discover many many other agent based modeling projects in the excellent paper: <a href="https://www.aeaweb.org/articles?id=10.1257/jel.20221319">Agent-Based Modeling in Economics and Finance: Past, Present, and Future</a>, by Robert L. Axtell and J. Doyne Farmer. One particular standout mentioned in that paper is the <a href="https://github.com/crisis-economics/CRISIS">CRISIS project</a>, which used ABM to try to explain the global financial crisis.</p><h2>ABMs aren&#8217;t perfect, either</h2><p>ABM requires creating agents and environments. A key limitation to existing ABM is that their behavior is typically hard coded. For example, a given agent that is suppose to simulate a person looking for a job might simply take the highest salary. This way of doing things has two problems:</p><ul><li><p>It&#8217;s unrealistic. For example, lots of people take a job with a suboptimal salary to do something they find interesting, or somehow fits their lifestyle.</p></li><li><p>If you ever want to change the environment to make it more complex, realistic, or something in the real world changes (such as laws, tax codes, etc), you have to go back and audit your agent code to see if it needs to be changed to fit to the new environment.</p></li></ul><p>So basically, its slow, error prone, and unrealistic.</p><p>Simon Hess, the author of the JMAB 2.0 paper I referenced above, said to me in an email:</p><blockquote><p>On the one hand, ABMs are appealing because of their more realistic micro-foundations and higher level of detail. On the other hand, they can make the model more complex, more difficult for others to understand, and more time-consuming to develop.</p></blockquote><p>I completely agree with his assessment. In my early experiments with ABM, you&#8217;re basically writing complex computer algorithms, which are notoriously difficult to get right. At least in traditional finance, your formulas can be (semi) easily reviewed by other professionals.</p><p>Getting a qualified professional review complex computer code is expensive, time consuming, and in my experience, kind of useless. I can barely read my own code, let alone someone else&#8217;s. AI coding tools are helping with this, but they have a long way to go.</p><h2>AI and reinforcement learning (RL) to the rescue</h2><p>Here&#8217;s an idea: How about instead of giving agents brittle, rigid algorithms to follow, we give them a high level objective and set them loose in an environment?</p><p>This is exactly the idea behind reinforcement learning, and it&#8217;s led to terrific results in LLM training, robotics, and many other domains.</p><p>Put another way, we populate the environment with agents who desire something (or many things). These desires might be:</p><p>For a person:</p><ul><li><p>Increase consumption</p></li><li><p>Increase wealth</p></li><li><p>Work less</p></li><li><p>Don&#8217;t go bankrupt</p></li></ul><p>For a company:</p><ul><li><p>Increase dividend payments</p></li><li><p>Increase stock price</p></li><li><p>Lower costs</p></li></ul><p>For a government:</p><ul><li><p>Increase GDP</p></li><li><p>Keep inflation below 3%</p></li><li><p>Make a rival&#8217;s GDP decrease</p></li></ul><p>Each of these objectives can be defined with a simple reward function that look a lot like points in a video game. For example, a person might get 1 point for every consumer good they consume (maybe to a max of 70,000 points), .8 points for every dollar they accumulate as wealth, -.5 points for every hour they work, and -10,000 points for going bankrupt.</p><p>That&#8217;s all the &#8220;programming&#8221; we have to do for the agents. Now all we have to do is define an environment and set the agents loose. We don&#8217;t have to tell them &#8220;you must take the highest job offer, but weight that against working less using this formula&#8221;, they just figure it out themselves and try to maximize their points.</p><h2>The catch</h2><p>While investigating reinforcement learning (RL) frameworks, I found <a href="https://github.com/flairox/jaxmarl">JaxMARL</a> to be the highest performance, best-supported, and overall most impressive foundation to build on top of. Alex Rutherford, one of the main authors of the project, met with me and explained that while RL is incredibly powerful, designing reward functions is still a bit of a dark art.</p><p>I completely agree with his assessment.</p><p>My first project was using JaxMARL to train agents to play a currency trading game. The point of the game is to maximize your wealth at the end of the game. Initially, I found the agents incredibly easy to beat, until I changed one very simple thing about their reward function: Instead of telling the agents to maximize their wealth, I told them to maximize their the difference between their wealth and mean wealth held by other players in the game.</p><p>Essentially, don&#8217;t just worry about yourself - try to beat the other players in the game.</p><p>All of a sudden, I couldn&#8217;t beat the bots anymore.</p><h2>Next steps</h2><p>If a simple twist to a reward function can transform a subpar trading bot into an unbeatable opponent, what happens when we scale that logic up to an entire macroeconomic system? </p><p>My current project is re-implementing an environment inspired by JMAB and JMAB 2.0, but using RL instead of hard coded heuristics.</p><p>The idea is to move away from brittle hard coded logic and instead set these learning agents loose with nothing but basic, competing motivations. It&#8217;s going to involve a lot of trial, error, and wrestling with the "dark art" of reward functions, but I&#8217;m fascinated to see what kind of emergent behavior drops out of the simulation.</p><p>My hope is that creating realistic, low maintenance agents that can adapt to any environment you throw at them will significantly increase the velocity of economic agent based modeling research. Maybe it will cut the amount of code you have to write in half?</p><p>Stay tuned to see if a bunch of RL bots can figure out the economy any better than the economists.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.centralbank.tech/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>