Sitemap

A list of all the posts and pages found on the site. For you robots out there, there is an XML version available for digesting as well.

Pages

Page Not Found

Sorry, but the page you were trying to view does not exist.

I am a PhD candidate in Economics at the London School of Economics, with research interests in Macroeconomics and its intersection with (household) finance and development.

Posts by Category

Code & Data

Impulse, Response, and Anticipation in Trajectory-Space Jacobians 2025

Posts by Collection

<h2 id="codes" class="archive__subtitle">codes</h2> Two Endogenous State Variables in Continuous-Time: Wealth and Human Capital 2020

CV

Your Sidebar Name none@example.org https://academicpages.github.io Earth, , US Google Scholar ORCID GitHub Summary Currently employed at Red Brick University. Short biography for the left-hand sidebar

CV

CV

Education Ph.D in Version Control Theory, GitHub University, 2018 (expected) M.S. in Jekyll, GitHub University, 2014 B.S. in GitHub, GitHub University, 2012 Work experience Spring 2024: Academic Pages Collaborator GitHub University Duties includes: Updates and improvements to template Supervisor: The Users Fall 2015: Research Assistant GitHub University Duties included: Merging pull requests Supervisor: Professor Hub Summer 2015: Research Assistant GitHub University Duties included: Tagging issues Supervisor: Professor Git Skills Skill 1 Skill 2 Sub-skill 2.1 Sub-skill 2.2 Sub-skill 2.3 Skill 3 Publications The Unproductive Wealth of Nations: The Case of Gold in India Business Cycles Along the Development Path The Nested-Drift Algorithm Impulse, Response, and Anticipation in Trajectory-Space Jacobians (Or How to Stop Worrying and Love Dirac’s Delta!) Évaluation du plan France Relance à l’aide d’un modèle de HANK [Evaluation of the France Relance programme using a HANK model]

CV

:root{–global-base-color: #7a8288;–global-bg-color: #fff;–global-footer-bg-color: #f2f3f3;–global-border-color: #f2f3f3;–global-dark-border-color: #bdc1c4;–global-code-background-color: #fafafa;–global-code-text-color: #313436;–global-fig-caption-color: mix(#fff, #494e52, 25%);–global-link-color: #52adc8;–global-link-color-hover: mix(#000, #2f7f93, 25%);–global-link-color-visited: mix(#fff, #2f7f93, 25%);–global-masthead-link-color: #494e52;–global-masthead-link-color-hover: mix(#000, #7a8288, 25%);–global-text-color: #494e52;–global-text-color-light: #9ba1a6;–global-thead-color: #f2f3f3}html[data-theme=”dark”]{–global-base-color: #474747;–global-bg-color: #474747;–global-footer-bg-color: #474747;–global-border-color: #bdc1c4;–global-dark-border-color: #dadada;–global-code-background-color: #fafafa;–global-code-text-color: #313436;–global-fig-caption-color: #bdc1c4;–global-link-color: #0ea1c5;–global-link-color-hover: #0b7994;–global-link-color-visited: #4ab9d4;–global-masthead-link-color: #fff;–global-masthead-link-color-hover: #dadada;–global-text-color: #fff;–global-text-color-light: #bdc1c4;–global-thead-color: #ededed}a:focus{outline:thin dotted #f89406;outline:5px auto #f89406;outline-offset:-2px},:before,:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}html{box-sizing:border-box;background-color:var(–global-bg-color);font-size:16px;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}@media (min-width: 48em){html{font-size:18px}}body{margin:0}::-moz-selection{color:#fff;background:#000}::selection{color:#fff;background:#000}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}audio,canvas,video{display:inline-block;display:inline;zoom:1}audio:not([controls]){display:none}a{color:var(–global-link-color)}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{max-width:100%;width:auto\9;height:auto;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img,.google-maps img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,html input[type=”button”],input[type=”reset”],input[type=”submit”]{-webkit-appearance:button;cursor:pointer}label,select,button,input[type=”button”],input[type=”reset”],input[type=”submit”],input[type=”radio”],input[type=”checkbox”]{cursor:pointer}input[type=”search”]{box-sizing:content-box;-webkit-appearance:textfield}input[type=”search”]::-webkit-search-decoration,input[type=”search”]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}html{position:relative;min-height:100%}body{color:var(–global-text-color);background-color:var(–global-bg-color);margin:0;padding:70px 0 0;padding-bottom:9em;font-family:-apple-system,”.SFNSText-Regular”,”San Francisco”,”Roboto”,”Segoe UI”,”Helvetica Neue”,”Lucida Grande”,Arial,sans-serif;line-height:1.5}body.overflow–hidden{overflow:hidden}h1,h2,h3,h4,h5,h6{margin:2em 0 0.5em;line-height:1.2;font-family:-apple-system,”.SFNSText-Regular”,”San Francisco”,”Roboto”,”Segoe UI”,”Helvetica Neue”,”Lucida Grande”,Arial,sans-serif;font-weight:bold}h1{margin-top:0;font-size:1.563em}h2{font-size:1.25em}h3{font-size:1em}h4{font-size:.75em}h5{font-size:.75em}h6{font-size:.75em}small,.small{font-size:.75em}p{margin-bottom:1.3em}u,ins{text-decoration:none;border-bottom:1px solid var(–global-text-color)}u a,ins a{color:inherit}del a{color:inherit}p,pre,blockquote,ul,ol,dl,figure,table,fieldset{orphans:3;widows:3}abbr[title],abbr[data-original-title]{text-decoration:none;cursor:help;border-bottom:1px dotted var(–global-text-color)}blockquote{margin:2em 1em 2em 0;padding-left:1em;padding-right:1em;font-style:italic;border-left:0.25em solid var(–global-border-color)}blockquote cite{font-style:italic}blockquote cite:before{content:”\2014”;padding-right:5px}a:hover,a:active{outline:0}tt,code,kbd,samp,pre{font-family:Monaco,Consolas,”Lucida Console”,monospace}pre{overflow-x:auto}a>code,figcaption>code,li>code,p>code,td>code{color:var(–global-code-text-color);padding-top:0.1rem;padding-bottom:0.1rem;font-size:.75em;background:var(–global-code-background-color);border:1px solid var(–global-thead-color);border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,0.125)}a>code:before,a>code:after,figcaption>code:before,figcaption>code:after,li>code:before,li>code:after,p>code:before,p>code:after,td>code:before,td>code:after{letter-spacing:-0.2em;content:”\00a0”}a>code{color:inherit}pre>code{color:var(–global-code-text-color)}hr{display:block;margin:1em 0;border:0;border-top:1px solid var(–global-border-color)}ul li,ol li{margin-bottom:0.5em}li ul,li ol{margin-top:0.5em}figure{display:-webkit-box;display:flex;-webkit-box-pack:justify;justify-content:space-between;-webkit-box-align:start;align-items:flex-start;flex-wrap:wrap;margin:2em 0}figure img,figure iframe,figure .fluid-width-video-wrapper{margin-bottom:1em}figure img{width:100%;border-radius:4px;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}figure>a{display:block}@media (min-width: 37.5em){figure.half>a,figure.half>img{width:calc(50% - 0.5em)}}figure.half figcaption{width:100%}@media (min-width: 37.5em){figure.third>a,figure.third>img{width:calc(33.3333% - 0.5em)}}figure.third figcaption{width:100%}figcaption{margin-bottom:0.5em;color:var(–global-fig-caption-color);font-family:Georgia,Times,serif;font-size:.75em}figcaption a{color:inherit;text-decoration:none;border-bottom:1px solid var(–global-border-color);-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}figcaption a:hover{color:#000;border-bottom-color:#000}svg:not(:root){overflow:hidden}nav ul{margin:0;padding:0}nav li{list-style:none}nav a{text-decoration:none}nav ul li,nav ol li{margin-bottom:0}nav li ul,nav li ol{margin-top:0}@-webkit-keyframes intro{0%{opacity:0}100%{opacity:1}}@keyframes intro{0%{opacity:0}100%{opacity:1}}b,i,strong,em,blockquote,p,q,span,figure,img,h1,h2,header,input,a,tr,td,form button,input[type=”submit”],.btn,#goog-wm-sb,.highlight,.archive__item-teaser{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}@media print{.masthead,.toc,.page__share,.page__related,.ads,.page__footer{display:none}}.hidden{display:none;visibility:hidden}.load{display:none}.transparent{opacity:0}.visually-hidden,.screen-reader-text,.screen-reader-text span,.screen-reader-shortcut{position:absolute !important;clip:rect(1px, 1px, 1px, 1px);height:1px !important;width:1px !important;border:0 !important;overflow:hidden}body:hover .visually-hidden a,body:hover .visually-hidden input,body:hover .visually-hidden button{display:none !important}.screen-reader-text:focus,.screen-reader-shortcut:focus{clip:auto !important;height:auto !important;width:auto !important;display:block;font-size:1em;font-weight:bold;padding:15px 23px 14px;background:#fff;z-index:100000;text-decoration:none;box-shadow:0 0 2px 2px rgba(0,0,0,0.6)}.skip-link{position:fixed;z-index:20;margin:0;font-family:-apple-system,”.SFNSText-Regular”,”San Francisco”,”Roboto”,”Segoe UI”,”Helvetica Neue”,”Lucida Grande”,Arial,sans-serif;white-space:nowrap}.skip-link li{height:0;width:0;list-style:none}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.cf{clear:both}.wrapper{max-width:925px;margin-left:auto;margin-right:auto}.wrapper:after{content:” “;display:block;clear:both}.wordwrap{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}.align-left{display:block;margin-left:auto;margin-right:auto}@media (min-width: 37.5em){.align-left{float:left;margin-right:1em}}.align-right{display:block;margin-left:auto;margin-right:auto}@media (min-width: 37.5em){.align-right{float:right;margin-left:1em}}.align-center{display:block;margin-left:auto;margin-right:auto}@media (min-width: 57.8125em){.full{margin-right:-19.4915254237% !important}}.icon{display:inline-block;fill:currentColor;width:1em;height:1.1em;line-height:1;position:relative;top:-0.1em;vertical-align:middle}.icon-pad-right{padding-right:0.5em;margin-right:0.5em}.social-icons .fa{color:#000}.social-icons .fa-bluesky,.social-icons .fa-bluesky-square{color:#1184fe}.social-icons .fa-behance,.social-icons .fa-behance-square{color:#1769FF}.social-icons .fa-dribbble{color:#ea4c89}.social-icons .fa-facebook,.social-icons .fa-facebook-square{color:#3b5998}.social-icons .fa-flickr{color:#ff0084}.social-icons .fa-foursquare{color:#0072b1}.social-icons .fa-github,.social-icons .fa-github-alt,.social-icons .fa-github-square{color:#171516}.social-icons .fa-google-plus,.social-icons .fa-google-plus-square{color:#dd4b39}.social-icons .fa-instagram{color:#517fa4}.social-icons .fa-kaggle,.social-icons .fa-kaggle-square{color:#20c0ff}.social-icons .fa-lastfm,.social-icons .fa-lastfm-square{color:#d51007}.social-icons .fa-linkedin,.social-icons .fa-linkedin-square{color:#007bb6}.social-icons .fa-mastodon,.social-icons .fa-mastodon-square{color:#6364ff}.social-icons .ai-orcid,.social-icons .ai-orcid-square{color:#a6ce39}.social-icons .fa-pinterest,.social-icons .fa-pinterest-p,.social-icons .fa-pinterest-square{color:#cb2027}.social-icons .fa-rss,.social-icons .fa-rss-square{color:#fa9b39}.social-icons .fa-soundcloud{color:#f30}.social-icons .fa-stack-exchange,.social-icons .fa-stack-overflow{color:#fe7a15}.social-icons .fa-tumblr,.social-icons .fa-tumblr-square{color:#32506d}.social-icons .fa-twitter,.social-icons .fa-twitter-square{color:#55acee}.social-icons .fa-vimeo,.social-icons .fa-vimeo-square{color:#1ab7ea}.social-icons .fa-vine{color:#00bf8f}.social-icons .fa-youtube,.social-icons .fa-youtube-square,.social-icons .fa-youtube-play{color:#b00}.social-icons .fa-xing,.social-icons .fa-xing-square{color:#006567}.navicon{position:relative;width:28px;height:4px;background:#fff;margin:auto;-webkit-transition:0.3s;transition:0.3s}.navicon:before,.navicon:after{content:”“;position:absolute;left:0;width:28px;height:4px;background:#fff;-webkit-transition:0.3s;transition:0.3s}.navicon:before{top:-8px}.navicon:after{bottom:-8px}.close .navicon{background:transparent}.close .navicon:before,.close .navicon:after{-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%;top:0;width:28px}.close .navicon:before{-webkit-transform:rotate3d(0, 0, 1, 45deg);transform:rotate3d(0, 0, 1, 45deg)}.close .navicon:after{-webkit-transform:rotate3d(0, 0, 1, -45deg);transform:rotate3d(0, 0, 1, -45deg)}@media (min-width: 57.8125em){.sticky{clear:both;position:-webkit-sticky;position:sticky;top:2em}.sticky::after{clear:both;content:”“;display:table}.sticky>{display:block}}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.show-modal{overflow:hidden;position:relative}.show-modal:before{position:absolute;content:”“;top:0;left:0;width:100%;height:100%;z-index:999;background-color:rgba(255,255,255,0.85)}.show-modal .modal{display:block}.modal{display:none;position:fixed;width:300px;top:50%;left:50%;margin-left:-150px;margin-top:-150px;min-height:0;z-index:9999;background:#fff;border:1px solid var(–global-border-color);border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,0.125)}.modal__title{margin:0;padding:0.5em 1em}.modal__supporting-text{padding:0 1em 0.5em 1em}.modal__actions{padding:0.5em 1em;border-top:1px solid var(–global-border-color)}.footnote{color:var(–global-text-color-light);text-decoration:none}.footnotes{color:var(–global-text-color-light)}.footnotes ol,.footnotes li,.footnotes p{margin-bottom:0;font-size:.75em}a.reversefootnote{color:var(–global-text-color-light);text-decoration:none}a.reversefootnote:hover{text-decoration:underline}.required{color:#ee5f5b;font-weight:bold}table{margin-bottom:1em;width:100%;font-family:-apple-system,”.SFNSText-Regular”,”San Francisco”,”Roboto”,”Segoe UI”,”Helvetica Neue”,”Lucida Grande”,Arial,sans-serif;font-size:.75em;border-collapse:collapse;border:1px solid var(–global-border-color)}table+table{margin-top:1em}thead{background-color:var(–global-border-color);border-bottom:1px solid var(–global-border-color)}th{padding:0.5em;font-weight:bold;text-align:left;border-right:1px solid var(–global-border-color)}td{padding:0.5em;border-bottom:1px solid var(–global-border-color);border-right:1px solid var(–global-border-color)}tr,td,th{vertical-align:middle}.btn,#goog-wm-sb{display:inline-block;margin-bottom:0.25em;padding:0.5em 1em;color:#fff !important;font-family:-apple-system,”.SFNSText-Regular”,”San Francisco”,”Roboto”,”Segoe UI”,”Helvetica Neue”,”Lucida Grande”,Arial,sans-serif;font-size:.75em;font-weight:bold;text-align:center;text-decoration:none;background-color:var(–global-base-color);border:0 !important;border-radius:4px;cursor:pointer}.btn:hover,#goog-wm-sb:hover{background-color:#333}.btn .icon,#goog-wm-sb .icon{margin-right:0.5em}.btn .icon+.hidden,#goog-wm-sb .icon+.hidden{margin-left:-0.5em}.btn–block{display:block;width:100%}.btn–block+.btn–block{margin-top:0.25em}.btn–inverse{color:var(–global-text-color-light) !important;border:1px solid var(–global-border-color) !important;background-color:var(–global-bg-color)}.btn–inverse:hover{color:#fff !important;border-color:var(–global-text-color-light)}.btn–light-outline{border:1px solid #fff !important;background-color:transparent}.btn–info{background-color:#2f7f93}.btn–info:hover{background-color:#266676}.btn–warning{background-color:#f89406}.btn–warning:hover{background-color:#c67605}.btn–success{background-color:#62c462}.btn–success:hover{background-color:#4e9d4e}.btn–danger{background-color:#ee5f5b}.btn–danger:hover{background-color:#be4c49}.btn–disabled{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);box-shadow:none;opacity:0.65}.btn–bluesky{background-color:#1184fe}.btn–bluesky:hover{background-color:#0e6acb}.btn–facebook{background-color:#3b5998}.btn–facebook:hover{background-color:#2f477a}.btn–twitter{background-color:#55acee}.btn–twitter:hover{background-color:#448abe}.btn–google-plus{background-color:#dd4b39}.btn–google-plus:hover{background-color:#b13c2e}.btn–linkedin{background-color:#007bb6}.btn–linkedin:hover{background-color:#006292}.btn–x-large{font-size:1.25em}.btn–large{font-size:1em}.btn–small{font-size:.6875em}.notice{margin:2em 0 !important;padding:1em;font-family:-apple-system,”.SFNSText-Regular”,”San Francisco”,”Roboto”,”Segoe UI”,”Helvetica Neue”,”Lucida Grande”,Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#f2f3f3;border-radius:4px;box-shadow:0 1px 1px rgba(122,130,136,0.25);color:var(–global-code-text-color)}.notice h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice h4{margin-bottom:0;font-size:1em}.notice p:last-child{margin-bottom:0 !important}.notice h4+p{margin-top:0;padding-top:0}.notice a{color:#7a8288}.notice a:hover{color:#494e52}.notice code{background-color:#f8f9f9}.notice ul:last-child{margin-bottom:0}.notice–primary{margin:2em 0 !important;padding:1em;font-family:-apple-system,”.SFNSText-Regular”,”San Francisco”,”Roboto”,”Segoe UI”,”Helvetica Neue”,”Lucida Grande”,Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#f2f3f3;border-radius:4px;box-shadow:0 1px 1px rgba(122,130,136,0.25);color:var(–global-code-text-color)}.notice–primary h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice–primary h4{margin-bottom:0;font-size:1em}.notice–primary p:last-child{margin-bottom:0 !important}.notice–primary h4+p{margin-top:0;padding-top:0}.notice–primary a{color:#7a8288}.notice–primary a:hover{color:#494e52}.notice–primary code{background-color:#f8f9f9}.notice–primary ul:last-child{margin-bottom:0}.notice–info{margin:2em 0 !important;padding:1em;font-family:-apple-system,”.SFNSText-Regular”,”San Francisco”,”Roboto”,”Segoe UI”,”Helvetica Neue”,”Lucida Grande”,Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#eaf2f4;border-radius:4px;box-shadow:0 1px 1px rgba(47,127,147,0.25);color:var(–global-code-text-color)}.notice–info h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice–info h4{margin-bottom:0;font-size:1em}.notice–info p:last-child{margin-bottom:0 !important}.notice–info h4+p{margin-top:0;padding-top:0}.notice–info a{color:#2f7f93}.notice–info a:hover{color:#1c4c58}.notice–info code{background-color:#f5f9fa}.notice–info ul:last-child{margin-bottom:0}.notice–warning{margin:2em 0 !important;padding:1em;font-family:-apple-system,”.SFNSText-Regular”,”San Francisco”,”Roboto”,”Segoe UI”,”Helvetica Neue”,”Lucida Grande”,Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#fef4e6;border-radius:4px;box-shadow:0 1px 1px rgba(248,148,6,0.25);color:var(–global-code-text-color)}.notice–warning h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice–warning h4{margin-bottom:0;font-size:1em}.notice–warning p:last-child{margin-bottom:0 !important}.notice–warning h4+p{margin-top:0;padding-top:0}.notice–warning a{color:#f89406}.notice–warning a:hover{color:#955904}.notice–warning code{background-color:#fffaf3}.notice–warning ul:last-child{margin-bottom:0}.notice–success{margin:2em 0 !important;padding:1em;font-family:-apple-system,”.SFNSText-Regular”,”San Francisco”,”Roboto”,”Segoe UI”,”Helvetica Neue”,”Lucida Grande”,Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#eff9ef;border-radius:4px;box-shadow:0 1px 1px rgba(98,196,98,0.25);color:var(–global-code-text-color)}.notice–success h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice–success h4{margin-bottom:0;font-size:1em}.notice–success p:last-child{margin-bottom:0 !important}.notice–success h4+p{margin-top:0;padding-top:0}.notice–success a{color:#62c462}.notice–success a:hover{color:#3b763b}.notice–success code{background-color:#f7fcf7}.notice–success ul:last-child{margin-bottom:0}.notice–danger{margin:2em 0 !important;padding:1em;font-family:-apple-system,”.SFNSText-Regular”,”San Francisco”,”Roboto”,”Segoe UI”,”Helvetica Neue”,”Lucida Grande”,Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#fdefef;border-radius:4px;box-shadow:0 1px 1px rgba(238,95,91,0.25);color:var(–global-code-text-color)}.notice–danger h4{margin-top:0 !important;margin-bottom:0.75em}.page__content .notice–danger h4{margin-bottom:0;font-size:1em}.notice–danger p:last-child{margin-bottom:0 !important}.notice–danger h4+p{margin-top:0;padding-top:0}.notice–danger a{color:#ee5f5b}.notice–danger a:hover{color:#8f3937}.notice–danger code{background-color:#fef7f7}.notice–danger ul:last-child{margin-bottom:0}.masthead{position:fixed;background:var(–global-bg-color);height:fit-content;top:0;width:100%;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;-webkit-animation-delay:0.15s;animation-delay:0.15s;z-index:20}.masthead::after{content:”“;position:absolute;bottom:0;height:1px;background:var(–global-border-color);width:100%}.masthead__inner-wrap{max-width:925px;margin-left:auto;margin-right:auto;clear:both;padding:0.5em 1em;font-family:-apple-system,”.SFNSText-Regular”,”San Francisco”,”Roboto”,”Segoe UI”,”Helvetica Neue”,”Lucida Grande”,Arial,sans-serif}.masthead__inner-wrap:after{content:” “;display:block;clear:both}.masthead__inner-wrap::after{clear:both;content:”“;display:table}@media (min-width: 80em){.masthead__inner-wrap{max-width:1280px}}.masthead__inner-wrap nav{z-index:10}.masthead__inner-wrap a{text-decoration:none}.masthead__menu ul{margin:0;padding:0;clear:both;list-style-type:none}.masthead__menu-item{background-color:var(–global-bg-color);display:block;list-style-type:none;white-space:nowrap}.masthead__menu-item–lg{padding-right:2em;font-weight:700}.breadcrumbs{max-width:925px;margin-left:auto;margin-right:auto;clear:both;margin-top:0;margin-bottom:0;padding-left:2em;padding-right:2em;font-family:-apple-system,”.SFNSText-Regular”,”San Francisco”,”Roboto”,”Segoe UI”,”Helvetica Neue”,”Lucida Grande”,Arial,sans-serif;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;-webkit-animation-delay:0.30s;animation-delay:0.30s}.breadcrumbs:after{content:” “;display:block;clear:both}.breadcrumbs::after{clear:both;content:”“;display:table}@media (min-width: 57.8125em){.breadcrumbs{padding-left:1em;padding-right:1em}}@media (min-width: 80em){.breadcrumbs{max-width:1280px}}.breadcrumbs ol{padding:0;list-style:none;font-size:.75em}@media (min-width: 57.8125em){.breadcrumbs ol{width:83.0508474576%;float:right;margin-right:0}}@media (min-width: 80em){.breadcrumbs ol{padding-left:4.2372881356%}}.breadcrumbs li{display:inline}.breadcrumbs .current{font-weight:bold}.pagination{clear:both;width:100%;float:left;margin-left:0;margin-right:0;clear:both;margin-top:1em;padding-top:1em}.pagination::after{clear:both;content:”“;display:table}.pagination ul{margin:0;padding:0;list-style-type:none;font-family:-apple-system,”.SFNSText-Regular”,”San Francisco”,”Roboto”,”Segoe UI”,”Helvetica Neue”,”Lucida Grande”,Arial,sans-serif}.pagination li{display:block;float:left;margin-left:-1px}.pagination li a{margin-bottom:0.25em;padding:0.5em 1em;font-family:-apple-system,”.SFNSText-Regular”,”San Francisco”,”Roboto”,”Segoe UI”,”Helvetica Neue”,”Lucida Grande”,Arial,sans-serif;font-size:14px;font-weight:bold;line-height:1.5;text-align:center;text-decoration:none;color:var(–global-text-color-light);border:1px solid var(–global-border-color);border-radius:0}.pagination li a:hover{color:var(–global-link-color-hover)}.pagination li a.current{color:#fff;background:var(–global-base-color)}.pagination li a.disabled{color:var(–global-text-color-light);pointer-events:none;cursor:not-allowed}.pagination li:first-child{margin-left:0}.pagination li:first-child a{border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination li:last-child a{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination–pager{display:block;padding:1em 2em;float:left;width:50%;font-family:-apple-system,”.SFNSText-Regular”,”San Francisco”,”Roboto”,”Segoe UI”,”Helvetica Neue”,”Lucida Grande”,Arial,sans-serif;font-size:1em;font-weight:bold;text-align:center;text-decoration:none;color:var(–global-text-color-light);border:1px solid var(–global-border-color);border-radius:4px}.pagination–pager:hover{color:var(–global-link-color-hover)}.pagination–pager:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.pagination–pager:last-child{margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.pagination–pager.disabled{color:var(–global-text-color-light);pointer-events:none;cursor:not-allowed}.page__content+.pagination,.page__meta+.pagination,.comment__date+.pagination,.page__share+.pagination,.page__comments+.pagination{margin-top:2em;padding-top:2em;border-top:1px solid var(–global-border-color)}.greedy-nav{position:relative;min-width:250px;background:var(–global-bg-color)}.greedy-nav a{display:block;margin:0 1rem;padding:0.5rem 0;color:var(–global-masthead-link-color);text-decoration:none}.greedy-nav a:hover{color:var(–global-masthead-link-color-hover)}.greedy-nav button{position:absolute;height:2.5rem;right:0;padding:0 0.5rem;border:0;outline:none;background-color:var(–global-base-color);color:#fff;cursor:pointer;z-index:100}.greedy-nav .visible-links{display:table}.greedy-nav .visible-links li{display:table-cell;vertical-align:middle}.greedy-nav .visible-links li:first-child{font-weight:bold;text-wrap:wrap}.greedy-nav .visible-links li:first-child a{margin-left:0}.greedy-nav .visible-links li:last-child a{margin-right:0}.greedy-nav .visible-links #theme-toggle a{width:25px;display:flex;justify-content:center;cursor:pointer}.greedy-nav .visible-links a{position:relative}.greedy-nav .visible-links a:before{content:”“;position:absolute;left:0;bottom:0;height:4px;background:var(–global-border-color);width:100%;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;-webkit-transform:scaleX(0);-ms-transform:scaleX(0);transform:scaleX(0)}.greedy-nav .visible-links a:hover:before{-webkit-transform:scaleX(1);-ms-transform:scaleX(1);transform:scaleX(1)}.greedy-nav .hidden-links{position:absolute;top:100%;right:0;margin-top:15px;padding:5px;border:1px solid var(–global-border-color);border-radius:4px;background:#fff;box-shadow:0 0 10px rgba(0,0,0,0.25)}.greedy-nav .hidden-links a{margin:0;padding:10px 20px;font-size:1em}.greedy-nav .hidden-links a:hover{color:var(–global-masthead-link-color-hover);background:var(–global-border-color)}.greedy-nav .hidden-links:before{content:”“;position:absolute;top:-11px;right:10px;width:0;border-style:solid;border-width:0 10px 10px;border-color:var(–global-border-color) transparent;display:block;z-index:0}.greedy-nav .hidden-links:after{content:”“;position:absolute;top:-10px;right:10px;width:0;border-style:solid;border-width:0 10px 10px;border-color:#fff transparent;display:block;z-index:1}.greedy-nav .hidden-links li{display:block;border-bottom:1px solid var(–global-border-color)}.greedy-nav .hidden-links li:last-child{border-bottom:none}.nav__list{font-size:1.25rem}.nav__list ul{margin-bottom:1em}.nav__list a{display:block;padding:0.125em 0;color:inherit}.nav__list a:hover{text-decoration:underline}.nav__list .active{margin-left:-0.5em;padding-left:0.5em;padding-right:0.5em;color:#fff;font-weight:bold;background:var(–global-base-color);border-radius:4px}.nav__list .active:hover{color:#fff}.nav__title{margin:0;padding:0.5rem 1rem;font-family:-apple-system,”.SFNSText-Regular”,”San Francisco”,”Roboto”,”Segoe UI”,”Helvetica Neue”,”Lucida Grande”,Arial,sans-serif;font-size:1em;font-weight:bold}.nav__sub-title{display:block;margin:0.5rem 0;padding:0.5rem 0;font-family:-apple-system,”.SFNSText-Regular”,”San Francisco”,”Roboto”,”Segoe UI”,”Helvetica Neue”,”Lucida Grande”,Arial,sans-serif;font-size:.75em;font-weight:bold;text-transform:uppercase;border-bottom:1px solid var(–global-border-color)}.toc{font-family:-apple-system,”.SFNSText-Regular”,”San Francisco”,”Roboto”,”Segoe UI”,”Helvetica Neue”,”Lucida Grande”,Arial,sans-serif;color:var(–global-text-color-light);text-transform:uppercase;letter-spacing:1px;background-color:#fff;border:1px solid var(–global-border-color);border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,0.125)}.toc .nav__title{color:#fff;font-size:.75em;background:var(–global-base-color);border-top-left-radius:4px;border-top-right-radius:4px}.toc__menu{margin:0;padding:0;width:100%;list-style:none;font-size:0.8rem}.toc__menu a{display:block;padding:0.5rem 1rem;color:var(–global-code-text-color);font-size:.6875em;font-weight:bold;line-height:1.5;border-bottom:1px solid var(–global-border-color);text-decoration-line:none !important}.toc__menu a:hover{color:#000;background:var(–global-link-color-hover)}.toc__menu>li:last-child a{border-bottom:none}.toc__menu li ul>li a{padding-left:2rem;font-weight:normal}.toc__menu li>ul li{display:none}@media (min-width: 48em){.toc__menu li>ul li{display:block}}.page__footer{clear:both;background-color:var(–global-footer-bg-color);color:var(–global-text-color-light);float:left;margin-left:0;margin-right:0;width:100%;clear:both;position:absolute;bottom:0em;height:auto;margin-top:3em;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;-webkit-animation-delay:0.45s;animation-delay:0.45s;border-top:1px solid var(–global-dark-border-color)}.page__footer::after{clear:both;content:”“;display:table}.page__footer footer{clear:both;margin-left:auto;margin-right:auto;margin-top:1em;max-width:100%;padding:0 1em 1em}.page__footer footer::after{clear:both;content:”“;display:table}@media (min-width: 80em){.page__footer footer{max-width:1280px}}.page__footer a{color:inherit;text-decoration:none}.page__footer a:hover{text-decoration:underline}.page__footer .fas,.page__footer .fab,.page__footer .far,.page__footer .fal{color:var(–global-text-color-light)}.page__footer-copyright{font-family:-apple-system,”.SFNSText-Regular”,”San Francisco”,”Roboto”,”Segoe UI”,”Helvetica Neue”,”Lucida Grande”,Arial,sans-serif;font-size:.6875em}.page__footer-follow ul{margin:0;padding:0;list-style-type:none}.page__footer-follow li{display:inline-block;padding-top:5px;padding-bottom:5px;font-family:-apple-system,”.SFNSText-Regular”,”San Francisco”,”Roboto”,”Segoe UI”,”Helvetica Neue”,”Lucida Grande”,Arial,sans-serif;font-size:.75em;text-transform:uppercase}.page__footer-follow li+li:before{content:”“;padding-right:5px}.page__footer-follow a{padding-right:10px;font-weight:bold}.page__footer-follow .social-icons a{white-space:nowrap}div.highlighter-rouge,figure.highlight{position:relative;margin-bottom:1em;padding:1em;border:1px solid var(–global-border-color);border-radius:4px;background-color:var(–global-code-background-color);box-shadow:0 1px 1px rgba(0,0,0,0.125);font-size:1.25em}div.highlighter-rouge:before,figure.highlight:before{position:absolute;top:0;right:0;padding:0.5em;background-color:#f2f3f3;content:”\f121”;font-family:”Font Awesome 6 Free” !important;font-size:.75em;line-height:1;text-transform:none;speak:none}div.highlighter-rouge .highlight,figure.highlight .highlight{margin:0;font-family:Monaco,Consolas,”Lucida Console”,monospace;font-size:.75em;line-height:1.8}.highlight table td{padding:5px}.highlight table pre{margin:0}.highlight .c{color:#93a1a1}.highlight .err{color:#586e75}.highlight .g{color:#586e75}.highlight .k{color:#859900}.highlight .l{color:#586e75}.highlight .n{color:#586e75}.highlight .o{color:#859900}.highlight .x{color:#cb4b16}.highlight .p{color:#586e75}.highlight .cm{color:#93a1a1}.highlight .cp{color:#859900}.highlight .c1{color:#93a1a1}.highlight .cs{color:#859900}.highlight .gd{color:#2aa198}.highlight .ge{color:#586e75;font-style:italic}.highlight .gr{color:#dc322f}.highlight .gh{color:#cb4b16}.highlight .gi{color:#859900}.highlight .go{color:#586e75}.highlight .gp{color:#586e75}.highlight .gs{color:#586e75;font-weight:bold}.highlight .gu{color:#cb4b16}.highlight .gt{color:#586e75}.highlight .kc{color:#cb4b16}.highlight .kd{color:#22b3eb}.highlight .kn{color:#859900}.highlight .kp{color:#859900}.highlight .kr{color:#22b3eb}.highlight .kt{color:#dc322f}.highlight .ld{color:#586e75}.highlight .m{color:#2aa198}.highlight .s{color:#2aa198}.highlight .na{color:#586e75}.highlight .nb{color:#B58900}.highlight .nc{color:#22b3eb}.highlight .no{color:#cb4b16}.highlight .nd{color:#22b3eb}.highlight .ni{color:#cb4b16}.highlight .ne{color:#cb4b16}.highlight .nf{color:#22b3eb}.highlight .nl{color:#586e75}.highlight .nn{color:#586e75}.highlight .nx{color:#586e75}.highlight .py{color:#586e75}.highlight .nt{color:#22b3eb}.highlight .nv{color:#22b3eb}.highlight .ow{color:#859900}.highlight .w{color:#586e75}.highlight .mf{color:#2aa198}.highlight .mh{color:#2aa198}.highlight .mi{color:#2aa198}.highlight .mo{color:#2aa198}.highlight .sb{color:#93a1a1}.highlight .sc{color:#2aa198}.highlight .sd{color:#586e75}.highlight .s2{color:#2aa198}.highlight .se{color:#cb4b16}.highlight .sh{color:#586e75}.highlight .si{color:#2aa198}.highlight .sx{color:#2aa198}.highlight .sr{color:#dc322f}.highlight .s1{color:#2aa198}.highlight .ss{color:#2aa198}.highlight .bp{color:#22b3eb}.highlight .vc{color:#22b3eb}.highlight .vg{color:#22b3eb}.highlight .vi{color:#22b3eb}.highlight .il{color:#2aa198}form{margin:0 0 5px 0}form fieldset{margin-bottom:5px;padding:0;border-width:0}form legend{display:block;width:100%;margin-bottom:10px;margin-left:-7px;padding:0;color:var(–global-text-color);border:0;border-bottom:1px solid #ccc;white-space:normal}form p{margin-bottom:5px / 2}form ul{list-style-type:none;margin:0 0 5px 0;padding:0}form br{display:none}label,input,button,select,textarea{vertical-align:baseline;vertical-align:middle}input,button,select,textarea{box-sizing:border-box;font-family:-apple-system,”.SFNSText-Regular”,”San Francisco”,”Roboto”,”Segoe UI”,”Helvetica Neue”,”Lucida Grande”,Arial,sans-serif}label{display:block;margin-bottom:0.25em;color:var(–global-text-color);cursor:pointer}label small{font-size:.75em}label input,label textarea,label select{display:block}input,textarea,select{display:inline-block;width:100%;padding:0.25em;margin-bottom:0.5em;color:var(–global-text-color);background-color:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,0.125)}input:hover,textarea:hover,select:hover{border-color:var(–global-base-color)}.input-mini{width:60px}.input-small{width:90px}input[type=”image”],input[type=”checkbox”],input[type=”radio”]{width:auto;height:auto;padding:0;margin:3px 0;margin-top:0;line-height:normal;cursor:pointer;border-radius:0;border:0 \9}input[type=”checkbox”],input[type=”radio”]{box-sizing:border-box;padding:0;width:13px;height:13px}input[type=”image”]{border:0;box-shadow:none}input[type=”file”]{width:auto;padding:initial;line-height:initial;border:initial;background-color:transparent;background-color:initial;box-shadow:none}input[type=”button”],input[type=”reset”],input[type=”submit”]{width:auto;height:auto;cursor:pointer;overflow:visible}select,input[type=”file”]{margin-top:4px}select{width:auto;background-color:#fff}select[multiple],select[size]{height:auto}textarea{resize:vertical;height:auto;overflow:auto;vertical-align:top}input[type=”hidden”]{display:none}.form{position:relative}.radio,.checkbox{padding-left:18px;font-weight:normal}.radio input[type=”radio”],.checkbox input[type=”checkbox”]{float:left;margin-left:-18px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{opacity:0.5;cursor:not-allowed}input:focus,textarea:focus{border-color:var(–global-border-color);outline:0;outline:thin dotted \9}input[type=”file”]:focus,input[type=”radio”]:focus,input[type=”checkbox”]:focus,select:focus{box-shadow:none}.help-block,.help-inline{color:#2f7f93}.help-block{display:block;margin-bottom:1em;line-height:1em}.help-inline{display:inline-block;vertical-align:middle;padding-left:5px}.form-inline input,.form-inline textarea,.form-inline select{display:inline-block;margin-bottom:0}.form-inline label{display:inline-block}.form-inline .radio,.form-inline .checkbox,.form-inline .radio{padding-left:0;margin-bottom:0;vertical-align:middle}.form-inline .radio input[type=”radio”],.form-inline .checkbox input[type=”checkbox”]{float:left;margin-left:0;margin-right:3px}.form-search input,.form-search textarea,.form-search select{display:inline-block;margin-bottom:0}.form-search .search-query{padding-left:14px;padding-right:14px;margin-bottom:0;border-radius:14px}.form-search label{display:inline-block}.form-search .radio,.form-search .checkbox,.form-inline .radio{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type=”radio”],.form-search .checkbox input[type=”checkbox”]{float:left;margin-left:0;margin-right:3px}.form–loading:before{content:’’}.form–loading .form__spinner{display:block}.form:before{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(255,255,255,0.7);z-index:10}.form__spinner{display:none;position:absolute;top:50%;left:50%;z-index:11}#goog-fixurl ul{list-style:none;margin-left:0;padding-left:0}#goog-fixurl ul li{list-style-type:none}#goog-wm-qt{width:auto;margin-right:10px;margin-bottom:20px;padding:8px 20px;display:inline-block;font-size:.75em;background-color:#fff;color:#000;border-width:2px !important;border-style:solid !important;border-color:gray;border-radius:4px}#main{max-width:925px;margin-left:auto;margin-right:auto;clear:both;margin-top:2em;padding-left:1em;padding-right:1em;animation:intro 0.3s both;animation-delay:0.35s}#main:after{content:” “;display:block;clear:both}#main::after{clear:both;content:”“;display:table}@media (min-width: 80em){#main{max-width:1280px}}@media (min-width: 57.8125em){.page{width:83.0508474576%;float:right;margin-right:0;padding-left:4.2372881356%;padding-right:16.9491525424%}}.page .page__inner-wrap{clear:both;width:100%;float:left;margin-left:0;margin-right:0}.page .page__inner-wrap .page__content,.page .page__inner-wrap .page__meta,.page .page__inner-wrap .comment__date,.page .page__inner-wrap .page__share{clear:both;width:100%;float:left;margin-left:0;margin-right:0}.page__title{margin-top:0;line-height:1}.page__title+.page__meta,.page__title+.comment__date{margin-top:-0.5em}.page__lead{font-family:-apple-system,”.SFNSText-Regular”,”San Francisco”,”Roboto”,”Segoe UI”,”Helvetica Neue”,”Lucida Grande”,Arial,sans-serif;font-size:1.25em}.page__content h2{padding-bottom:0.5em;border-bottom:1px solid var(–global-border-color)}.page__content p,.page__content li,.page__content dl{font-size:0.875em}.page__content p{margin:0 0 1.3em}.page__content a{text-decoration:underline}.page__content a:hover{text-decoration:underline}.page__content a:hover img{box-shadow:0 0 10px rgba(0,0,0,0.25)}.page__content dt{margin-top:1em;font-family:-apple-system,”.SFNSText-Regular”,”San Francisco”,”Roboto”,”Segoe UI”,”Helvetica Neue”,”Lucida Grande”,Arial,sans-serif;font-weight:bold}.page__content dd{margin-left:1em;font-family:-apple-system,”.SFNSText-Regular”,”San Francisco”,”Roboto”,”Segoe UI”,”Helvetica Neue”,”Lucida Grande”,Arial,sans-serif;font-size:.75em}.page__content .small{font-size:.75em}.page__content blockquote+.small{margin-top:-1.5em;padding-left:1.25rem}.page__hero{position:relative;margin-bottom:2em;clear:both;animation:intro 0.3s both;animation-delay:0.25s}.page__hero::after{clear:both;content:”“;display:table}.page__hero–overlay{position:relative;margin-bottom:2em;padding:3em 0;clear:both;background-size:cover;background-repeat:no-repeat;background-position:center;animation:intro 0.3s both;animation-delay:0.25s}.page__hero–overlay::after{clear:both;content:”“;display:table}.page__hero–overlay a{color:#fff}.page__hero–overlay .wrapper{padding-left:1em;padding-right:1em}@media (min-width: 80em){.page__hero–overlay .wrapper{max-width:1280px}}.page__hero–overlay .page__title,.page__hero–overlay .page__meta,.page__hero–overlay .comment__date,.page__hero–overlay .page__lead,.page__hero–overlay .btn,.page__hero–overlay #goog-wm-sb{color:#fff;text-shadow:1px 1px 4px rgba(0,0,0,0.5)}.page__hero–overlay .page__lead{max-width:768px}.page__hero–overlay .page__title{font-size:1.953em}@media (min-width: 37.5em){.page__hero–overlay .page__title{font-size:2.441em}}.page__hero-image{width:100%;height:auto;-ms-interpolation-mode:bicubic}.page__hero-caption{position:absolute;bottom:0;right:0;margin:0 auto;padding:2px 5px;color:#fff;font-family:Georgia,Times,serif;font-size:.6875em;background:#000;text-align:right;z-index:5;opacity:0.5;border-radius:4px 0 4px 0}@media (min-width: 57.8125em){.page__hero-caption{padding:5px 10px}}.page__hero-caption a{color:#fff;text-decoration:none}.page__share{margin-top:2em;padding-top:1em;border-top:1px solid var(–global-border-color)}@media (max-width: 37.5em){.page__share .btn span,.page__share #goog-wm-sb span{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}}.page__share-title{margin-bottom:10px;font-size:.75em;text-transform:uppercase}.page__meta,.comment__date{margin-top:2em;color:var(–global-text-color-light);font-family:-apple-system,”.SFNSText-Regular”,”San Francisco”,”Roboto”,”Segoe UI”,”Helvetica Neue”,”Lucida Grande”,Arial,sans-serif;font-size:.75em}.page__meta p,.comment__date p{margin:0}.page__meta a,.comment__date a{color:inherit}.page__meta-title{margin-bottom:10px;font-size:.75em;text-transform:uppercase}.page__taxonomy .sep{display:none}.page__taxonomy strong{margin-right:10px}.page__taxonomy-item{display:inline-block;margin-right:5px;margin-bottom:8px;padding:5px 10px;text-decoration:none;border:1px solid var(–global-border-color);border-radius:4px}.page__taxonomy-item:hover{text-decoration:none;color:var(–global-link-color-hover)}.page__comments{clear:both;width:100%;float:left;margin-left:0;margin-right:0}.page__comments-title{margin-top:2rem;margin-bottom:10px;padding-top:2rem;font-size:.75em;border-top:1px solid var(–global-border-color);text-transform:uppercase}.page__comments-form{padding:1em;background:var(–global-border-color);transition:all 0.2s ease-in-out}.page__comments-form.disabled input,.page__comments-form.disabled button,.page__comments-form.disabled textarea,.page__comments-form.disabled label{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);box-shadow:none;opacity:0.65}.comment{clear:both;margin:1em 0}.comment::after{clear:both;content:”“;display:table}.comment:not(:last-child){border-bottom:1px solid var(–global-border-color)}.comment__avatar-wrapper{float:left;width:60px;height:60px}@media (min-width: 57.8125em){.comment__avatar-wrapper{width:100px;height:100px}}.comment__avatar{width:40px;height:40px;border-radius:50%}@media (min-width: 57.8125em){.comment__avatar{width:80px;height:80px;padding:5px;border:1px solid var(–global-border-color)}}.comment__content-wrapper{float:right;width:calc(100% - 60px)}@media (min-width: 57.8125em){.comment__content-wrapper{width:calc(100% - 100px)}}.comment__author{margin:0}.comment__author a{text-decoration:none}.comment__date{margin:0}.comment__date a{text-decoration:none}.page__related{margin-top:2em;padding-top:1em;border-top:1px solid var(–global-border-color);clear:both;float:left}.page__related::after{clear:both;content:”“;display:table}@media (min-width: 57.8125em){.page__related{margin-left:21.186440678%}}.page__related a{color:inherit;text-decoration:none}.page__related-title{margin-bottom:10px;font-size:.75em;text-transform:uppercase}.archive{margin-bottom:2em}@media (min-width: 48em){.archive{width:100%;float:left;margin-left:0;margin-right:0}}@media (min-width: 57.8125em){.archive{width:83.0508474576%;float:right;margin-right:0;padding-left:4.2372881356%}}.archive a{text-decoration:underline}.archive a:hover{text-decoration:underline}.archive a:hover img{box-shadow:0 0 10px rgba(0,0,0,0.25)}.archive__subtitle{margin:1.414em 0 0;padding-bottom:0.5em;font-size:1em;color:var(–global-text-color-light);border-bottom:1px solid var(–global-border-color)}.archive__subtitle+.list__item .archive__item-title{margin-top:0.5em}.archive__item-title{margin-bottom:0.25em;font-family:-apple-system,”.SFNSText-Regular”,”San Francisco”,”Roboto”,”Segoe UI”,”Helvetica Neue”,”Lucida Grande”,Arial,sans-serif}.archive__item-title a+a{opacity:0.5}.page__content .archive__item-title{margin-top:1em;border-bottom:none}.archive__item-excerpt{margin-top:0;font-size:.75em}.archive__item-excerpt+p{text-indent:0}.archive__item-teaser{border-radius:4px;overflow:hidden}.archive__item-teaser img{width:100%}.archive__item:hover .archive__item-teaser{box-shadow:0 0 10px rgba(0,0,0,0.25)}.archive__item:hover .archive__item-title{text-decoration:underline}@media (min-width: 48em){.list__item{padding-right:auto}}@media (min-width: 57.8125em){.list__item{padding-right:auto}}@media (min-width: 80em){.list__item{padding-right:auto}}.list__item .page__meta,.list__item .comment__date{margin:0 0 4px}.grid__item{margin-bottom:2em}.grid__item .page__meta,.grid__item .comment__date{margin:0 0 4px}.grid__item .archive__item-title{margin-top:0.5em;font-size:1em}.grid__item .archive__item-excerpt{display:none}@media (min-width: 37.5em){.grid__item{width:48.9795918367%;float:left}.grid__item:nth-child(2n+1){margin-left:0;margin-right:-100%;clear:both;margin-left:0}.grid__item:nth-child(2n+2){margin-left:51.0204081633%;margin-right:-100%;clear:none}.grid__item .archive__item-teaser{max-height:200px}}@media (min-width: 48em){.grid__item{margin-left:0;margin-right:0;width:23.4693877551%;float:left}.grid__item:nth-child(4n+1){margin-left:0;margin-right:-100%;clear:both;margin-left:0}.grid__item:nth-child(4n+2){margin-left:25.5102040816%;margin-right:-100%;clear:none}.grid__item:nth-child(4n+3){margin-left:51.0204081633%;margin-right:-100%;clear:none}.grid__item:nth-child(4n+4){margin-left:76.5306122449%;margin-right:-100%;clear:none}.grid__item .archive__item-teaser{max-height:120px}.grid__item .archive__item-excerpt{display:block;font-size:.75em}}.feature__wrapper{clear:both;margin-bottom:2em;border-bottom:1px solid var(–global-border-color)}.feature__wrapper::after{clear:both;content:”“;display:table}.feature__item{margin-bottom:2em;font-size:1.25rem}@media (min-width: 37.5em){.feature__item{margin-bottom:0;width:32.2033898305%;float:left}.feature__item:nth-child(3n+1){margin-left:0;margin-right:-100%;clear:both;margin-left:0}.feature__item:nth-child(3n+2){margin-left:33.8983050847%;margin-right:-100%;clear:none}.feature__item:nth-child(3n+3){margin-left:67.7966101695%;margin-right:-100%;clear:none}.feature__item .feature__item-teaser{max-height:200px;overflow:hidden}}.feature__item–left{clear:both;width:100%;float:left;margin-left:0;margin-right:0;font-size:1.25rem}.feature__item–left .archive__item-teaser{margin-bottom:2em}@media (min-width: 37.5em){.feature__item–left .archive__item-teaser{width:40.6779661017%;float:left;margin-right:1.6949152542%}.feature__item–left .archive__item-body{width:57.6271186441%;float:right;margin-right:0;padding-left:4.2372881356%;padding-right:8.4745762712%}}.feature__item–right{clear:both;width:100%;float:left;margin-left:0;margin-right:0;font-size:1.25rem}.feature__item–right .archive__item-teaser{margin-bottom:2em}@media (min-width: 37.5em){.feature__item–right{text-align:right}.feature__item–right .archive__item-teaser{width:40.6779661017%;float:right;margin-left:1.6949152542%}.feature__item–right .archive__item-body{width:57.6271186441%;float:left;margin-left:0;padding-left:4.2372881356%;padding-right:8.4745762712%}}.feature__item–center{clear:both;width:100%;float:left;margin-left:0;margin-right:0;font-size:1.25rem}.feature__item–center .archive__item-teaser{margin-bottom:2em}@media (min-width: 37.5em){.feature__item–center{text-align:center}.feature__item–center .archive__item-teaser{margin:0 auto;width:40.6779661017%}.feature__item–center .archive__item-body{margin:0 auto;width:57.6271186441%}}.sidebar{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);clear:both;margin-bottom:1em}.sidebar::after{clear:both;content:”“;display:table}@media (orientation: portrait){.sidebar{margin-top:1em}}@media screen and (min-width: 1024px){.sidebar{height:100vh;overflow-y:auto;position:fixed;padding-top:70px}}@media (min-width: 57.8125em){.sidebar{width:15.2542372881%;float:left;margin-right:1.6949152542%;opacity:1;-webkit-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out}.sidebar:hover{opacity:1}}@media (min-width: 80em){.sidebar{max-width:250px;padding-right:0}}.sidebar h2,.sidebar h3,.sidebar h4,.sidebar h5,.sidebar h6{margin-bottom:0;font-family:-apple-system,”.SFNSText-Regular”,”San Francisco”,”Roboto”,”Segoe UI”,”Helvetica Neue”,”Lucida Grande”,Arial,sans-serif}.sidebar h3,.sidebar h4{font-size:1em}.sidebar p,.sidebar li{font-family:-apple-system,”.SFNSText-Regular”,”San Francisco”,”Roboto”,”Segoe UI”,”Helvetica Neue”,”Lucida Grande”,Arial,sans-serif;font-size:.75em;line-height:1.5}.sidebar img{width:100%}.sidebar__right{margin-bottom:1em}@media (min-width: 57.8125em){.sidebar__right{position:relative;float:right;width:auto;margin-left:2.5423728814%;z-index:10}}@media (min-width: 80em){.sidebar__right{width:auto}}.author__avatar{display:table-cell;vertical-align:top;width:36px}@media (min-width: 57.8125em){.author__avatar{display:block;width:auto;height:auto}}.author__avatar img{max-width:175px;border-radius:50%}@media (min-width: 57.8125em){.author__avatar img{padding:5px;border:1px solid var(–global-border-color)}}.author__content{display:table-cell;vertical-align:top;padding-left:15px;padding-right:25px;line-height:1}@media (min-width: 57.8125em){.author__content{display:block;width:100%;padding-left:0;padding-right:0}}.author__name{margin:0}@media (min-width: 57.8125em){.author__name{margin-top:10px;margin-bottom:10px}}.sidebar .author__name{font-family:-apple-system,”.SFNSText-Regular”,”San Francisco”,”Roboto”,”Segoe UI”,”Helvetica Neue”,”Lucida Grande”,Arial,sans-serif;font-size:1em}.sidebar .author__desktop{display:none}@media screen and (min-width: 1024px){.sidebar .author__desktop{display:block}}.author__pronouns{margin:0}@media (min-width: 57.8125em){.author__pronouns{margin-top:10px;margin-bottom:10px}}.author__bio{margin:0}@media (min-width: 57.8125em){.author__bio{margin-top:10px;margin-bottom:20px}}.author__urls-wrapper{position:relative;display:table-cell;vertical-align:middle;font-family:-apple-system,”.SFNSText-Regular”,”San Francisco”,”Roboto”,”Segoe UI”,”Helvetica Neue”,”Lucida Grande”,Arial,sans-serif;z-index:10;position:relative;cursor:pointer}.author__urls-wrapper li:last-child a{margin-bottom:0}@media (min-width: 57.8125em){.author__urls-wrapper{display:block}}.author__urls-wrapper button{margin-bottom:0}@media (min-width: 57.8125em){.author__urls-wrapper button{display:none}}.author__urls{display:none;position:absolute;right:0;margin-top:15px;padding:10px;list-style-type:none;border:1px solid var(–global-border-color);border-radius:4px;background:var(–global-bg-color);z-index:-1;box-shadow:0 0 10px rgba(0,0,0,0.25);cursor:default}@media (min-width: 57.8125em){.author__urls{display:block;position:relative;margin:0;padding:0;border:0;background:transparent;box-shadow:none}}.author__urls:before{display:block;content:”“;position:absolute;top:-11px;left:calc(50% - 10px);width:0;border-style:solid;border-width:0 10px 10px;border-color:var(–global-border-color) transparent;z-index:0}@media (min-width: 57.8125em){.author__urls:before{display:none}}.author__urls:after{display:block;content:”“;position:absolute;top:-10px;left:calc(50% - 10px);width:0;border-style:solid;border-width:0 10px 10px;border-color:#fff transparent;z-index:1}@media (min-width: 57.8125em){.author__urls:after{display:none}}.author__urls li{white-space:nowrap}.author__urls a{display:block;margin-bottom:5px;padding-right:5px;padding-top:2px;padding-bottom:2px;color:inherit;font-size:1em;text-decoration:none}.author__urls a:hover{text-decoration:underline}/*!

/*

Markdown

On This Page Locations of key files/directories Tips and hints MathJax Mermaid diagrams Plotly Markdown guide Header three Header four Header five Header six Blockquotes Tables Table 1 Table 2 Definition Lists Unordered Lists (Nested) Ordered List (Nested) Buttons Notices Footnotes HTML Tags Address Tag Anchor Tag (aka. Link) Abbreviation Tag Cite Tag Code Tag Details Tag (collapsible sections) Emphasize Tag Insert Tag Keyboard Tag Preformatted Tag Quote Tag Strike Tag Strong Tag Subscript Tag Superscript Tag Variable Tag Locations of key files/directories Basic config options: _config.yml Top navigation bar config: _data/navigation.yml Single pages: _pages/ Collections of pages are .md or .html files in: _publications/ _portfolio/ _posts/ _teaching/ _talks/ Footer: _includes/footer.html Static files (like PDFs): /files/ Profile image (can set in _config.yml): images/profile.png Tips and hints Name a file “.md” to have it render in markdown, name it “.html” to render in HTML. Go to the commit list (on your repo) to find the last version GitHub built with Jekyll. Green check: successful build Orange circle: building Red X: error No icon: not built Academic Pages uses Jekyll Kramdown, GitHub Flavored Markdown (GFM) parser, which is similar to the version of Markdown used on GitHub, but may have some minor differences. Some of emoji supported on GitHub should be supposed via the Jemoji plugin :computer:. The best list of the supported emoji can be found in the Emojis for Jekyll via Jemoji blog post. While GitHub Pages prevents server side code from running, client-side scripts are supported. This means that Google Analytics is supported, and the wiki should contain the most up-to-date information on getting it working. Your CV can be written using either Markdown (preview) or generated via JSON (preview) and the layouts are slightly different. You can update the path to the one being used in _data/navigation.yml with the JSON formatted CV being hidden by default.

Markdown

Page not in menu

This is a page not in the menu. You can use markdown in this page.

The Macro Notebooks

This page contains links to interactive notebooks that I created for (beginning) graduate Macroeconomics course at the LSE (EC413), 2023-2024, with Matthias Doepke and Silvana Tenreyro as lecturers. My students found them extremely useful. Built using the Pluto and PlutoUI packages of Julia ecosystem, these are mainly meant to help students visualise the models and build intuition by enabling them to do comparative statics (and dynamics) simply by dragging a slider! No knowledge of Julia is required, but interested students can reveal the underlying code and use it as a basic intro to Julia and numerical methods in Macroeconomics.

The Macro Notebooks

Page Archive

Page Not Found Sorry, but the page you were trying to view does not exist.

Portfolio

Portfolio item number 1 Short description of portfolio item number 1

Publications

<h2>Job Market Paper</h2><hr /> The Unproductive Wealth of Nations: The Case of Gold in India [Draft coming soon]

Posts by Tags

{% include base_path %} {% include group-by-array collection=site.posts field=”tags” %}

Talk map

This map is generated from a Jupyter Notebook file in talkmap.ipynb, which mines the location fields in the .md files in _talks/.

Teaching

At LSE, I have taught Macroeconomics at both the undergraduate (EC1B5, EC301) and graduate levels (EC413), Math Boot Camp for the incoming graduate students (EC400), and Foundations of Economics for the first year undergraduate students in Economics (EC102).

Blog posts

{% include base_path %} {% capture written_year %}’None’{% endcapture %} {% for post in site.posts %} {% capture year %}{{ post.date | date: ‘%Y’ }}{% endcapture %} {% if year != written_year %} <h2 id="{{ year | slugify }}" class="archive__subtitle">{{ year }}</h2> {% capture written_year %}{{ year }}{% endcapture %} {% endif %} {% include archive-single.html %} {% endfor %}

Blog posts

@import “jekyll-theme-primer”;

{“/about/”:”https://ssabet.github.io/”,”/about.html”:”https://ssabet.github.io/”,”/resume-json”:”https://ssabet.github.io/cv-json/”,”/resume”:”https://ssabet.github.io/cv/”,”/md/”:”https://ssabet.github.io/markdown/”,”/markdown.html”:”https://ssabet.github.io/markdown/”,”/nmp/”:”https://ssabet.github.io/non-menu-page/”,”/nmp.html”:”https://ssabet.github.io/non-menu-page/”,”/wordpress/blog-posts/”:”https://ssabet.github.io/year-archive/”}

Jupyter notebook markdown generator

Jupyter notebook markdown generator These .ipynb files are Jupyter notebook files that convert a TSV containing structured data about talks (talks.tsv) or presentations (presentations.tsv) into individual markdown files that will be properly formatted for the academicpages template. The notebooks contain a lot of documentation about the process. The .py files are pure python that do the same things if they are executed in a terminal, they just don’t have pretty documentation.

Jupyter notebook markdown generator

<?xml version=”1.0” encoding=”utf-8”?>{% if page.xsl %}<?xml-stylesheet type=”text/xml” href=”{{ ‘/feed.xslt.xml’ absolute_url }}”?>{% endif %}<feed xmlns=”http://www.w3.org/2005/Atom” {% if site.lang %}xml:lang=”{{ site.lang }}”{% endif %}>Jekyll<link href=”{{ page.url absolute_url }}” rel=”self” type=”application/atom+xml” /><link href=”{{ ‘/’ absolute_url }}” rel=”alternate” type=”text/html” {% if site.lang %}hreflang=”{{ site.lang }}” {% endif %}/>{{ site.time date_to_xmlschema }}</updated>{{ page.url absolute_url xml_escape }}</id>{% assign title = site.title default: site.name %}{% if page.collection != “posts” %}{% assign collection = page.collection capitalize %}{% assign title = title append: “ ” append: collection %}{% endif %}{% if page.category %}{% assign category = page.category capitalize %}{% assign title = title append: “ ” append: category %}{% endif %}{% if title %}{{ title smartify xml_escape }}</title>{% endif %}{% if site.description %}{{ site.description xml_escape }}</subtitle>{% endif %}{% if site.author %}{{ site.author.name default: site.author xml_escape }}</name>{% if site.author.email %}{{ site.author.email xml_escape }}</email>{% endif %}{% if site.author.uri %}{{ site.author.uri xml_escape }}</uri>{% endif %}</author>{% endif %}{% if page.tags %}{% assign posts = site.tags[page.tags] %}{% else %}{% assign posts = site[page.collection] %}{% endif %}{% if page.category %}{% assign posts = posts where: “categories”, page.category %}{% endif %}{% unless site.show_drafts %}{% assign posts = posts where_exp: “post”, “post.draft != true” %}{% endunless %}{% assign posts = posts sort: “date” reverse %}{% assign posts_limit = site.feed.posts_limit default: 10 %}{% for post in posts limit: posts_limit %}<entry{% if post.lang %}{{“ “}}xml:lang=”{{ post.lang }}”{% endif %}>{% assign post_title = post.title smartify strip_html normalize_whitespace xml_escape %}{{ post_title }}<link href=”{{ post.url absolute_url }}” rel=”alternate” type=”text/html” title=”{{ post_title }}” />{{ post.date date_to_xmlschema }}</published>{{ post.last_modified_at default: post.date date_to_xmlschema }}</updated>{{ post.id absolute_url xml_escape }}</id>{% assign excerpt_only = post.feed.excerpt_only default: site.feed.excerpt_only %}{% unless excerpt_only %}<content type=”html” xml:base=”{{ post.url absolute_url xml_escape }}”><![CDATA[{{ post.content strip }}]]></content>{% endunless %}{% assign post_author = post.author default: post.authors[0] default: site.author %}{% assign post_author = site.data.authors[post_author] default: post_author %}{% assign post_author_email = post_author.email default: nil %}{% assign post_author_uri = post_author.uri default: nil %}{% assign post_author_name = post_author.name default: post_author %}{{ post_author_name default: “” xml_escape }}</name>{% if post_author_email %}{{ post_author_email xml_escape }}</email>{% endif %}{% if post_author_uri %}{{ post_author_uri xml_escape }}</uri>{% endif %}</author>{% if post.category %}<category term=”{{ post.category xml_escape }}” />{% elsif post.categories %}{% for category in post.categories %}<category term=”{{ category xml_escape }}” />{% endfor %}{% endif %}{% for tag in post.tags %}<category term=”{{ tag xml_escape }}” />{% endfor %}{% assign post_summary = post.description default: post.excerpt %}{% if post_summary and post_summary != empty %}<summary type="html"><![CDATA[{{ post_summary strip_html normalize_whitespace }}]]></summary>{% endif %}{% assign post_image = post.image.path default: post.image %}{% if post_image %}{% unless post_image contains “://” %}{% assign post_image = post_image absolute_url %}{% endunless %}<media:thumbnail xmlns:media=”http://search.yahoo.com/mrss/” url=”{{ post_image xml_escape }}” /><media:content medium=”image” url=”{{ post_image xml_escape }}” xmlns:media=”http://search.yahoo.com/mrss/” />{% endif %}</entry>{% endfor %}</feed>

<?xml version=”1.0” encoding=”UTF-8”?> {% if page.xsl %}<?xml-stylesheet type=”text/xsl” href=”{{ “/sitemap.xsl” | absolute_url }}”?> {% endif %} {% assign collections = site.collections | where_exp:'collection','collection.output != false' %}{% for collection in collections %}{% assign docs = collection.docs | where_exp:'doc','doc.sitemap != false' %}{% for doc in docs %}

Sitemap: {{ “sitemap.xml” absolute_url }}

Posts

Future Blog Post

less than 1 minute read

Published:

This post will show up by default. To disable scheduling of future posts, edit config.yml and set future: false.

Blog Post number 4

less than 1 minute read

Published:

This is a sample blog post. Lorem ipsum I can’t remember the rest of lorem ipsum and don’t have an internet connection right now. Testing testing testing this blog post. Blog posts are cool.

Blog Post number 3

less than 1 minute read

Published:

This is a sample blog post. Lorem ipsum I can’t remember the rest of lorem ipsum and don’t have an internet connection right now. Testing testing testing this blog post. Blog posts are cool.

Blog Post number 2

less than 1 minute read

Published:

This is a sample blog post. Lorem ipsum I can’t remember the rest of lorem ipsum and don’t have an internet connection right now. Testing testing testing this blog post. Blog posts are cool.

Blog Post number 1

less than 1 minute read

Published:

This is a sample blog post. Lorem ipsum I can’t remember the rest of lorem ipsum and don’t have an internet connection right now. Testing testing testing this blog post. Blog posts are cool.

codes

Two Endogenous State Variables in Continuous-Time: Wealth and Human Capital

2020

This note describes a deterministic human capital accumulation problem in continuous time with one financial asset, and offers a solution algorithm using the finite-difference method. Agents can accumulate financial assets and human capital by dividing their time between labor and education. Human capital is accumulated via a DRS production function and depreciates over time. Labor income receives a wage per unit of time worked and per unit of human capital.

Two Endogenous State Variables in Continuous-Time: Wealth and Human Capital

Aiyagari Model with Non-homothetic CES Preferences and Multiple Sectors: Steady State and Transition

2022

How to robustly solve for the steady state and transition paths of an Aiyagari model in continuous-time with non-homothetic CES preferences (as in Lashkari-et-al (2021)) and three sectors? The Matlab code below proposes an algorithm based on a predefined approximation of inverse of marginal utility of expenditure using the so-called ‘Chebyshev technology’. Transition path in response to one or several series of MIT shocks can be efficiently solved for, using a first-order perturbation of the approximant of the inverse of marginal utility and perturbed relative prices along the transition path. The code is written for three sectors, but the code remain as efficient for large number of sectors (as long as the production functions are static and relative prices can be solved for as it is with the current model). The implementation below uses the excellent ‘Chebfun’ package of Matlab, but a similar implementation is available in Julia (upon request).

Aiyagari Model with Non-homothetic CES Preferences and Multiple Sectors: Steady State and Transition

Model with Two Assets and Kinked Adjustment Costs (HANK)

2024

We introduce a new algorithm for solving continuous time problems with multiple endogenous state variables in a finite–difference scheme. The algorithm extends the logic of up–winding to its logical extreme in a way that meets the necessary conditions for local convergence (Barles and Souganidis, 1991). It is consistent because the directions of state–drift are never in conflict, and constraints are applied non–linearly. It is efficient because it nests the search for these state–drifts in a way that ensures costly root–finding is only performed after other alternatives are exhausted. The algorithm improves on the existing ‘split–drift’ approach from (Kaplan et al., 2018; Achdou et al., 2022), which can fail under some parameter settings because it is not guaranteed to be consistent.

Model with Two Assets and Kinked Adjustment Costs (HANK)

Impulse, Response, and Anticipation in Trajectory-Space Jacobians

2025

This paper presents a simple method of calculating the continuous-time transition path of a heterogeneous-agent economy in steady state in response to a perturbation path (aka MIT shock path) affecting a price or another variable. In other words, it is a continuous-time counterpart of (Auclert et al. 2021). The goal is to introduce a method that satisfies the following criteria to the extent possible: efficiency, simplicity (e.g., no analytical derivative is needed) and general applicability. The method has three main building block: Dirac’s Delta function for impulses, fast matrix exponentiation methods for forward response path, and a simple linearisation theorem to capture the anticipation effects backwards. [Code and Draft Coming Soon]

Impulse, Response, and Anticipation in Trajectory-Space Jacobians

notebooks

The Solow Model

Published:

Solow model in discrete time. BGP and the steady state. The Uzawa theorem. Transition paths. Convergence and Speed of convergence. Kaldor facts and the Solow model. Non-unitary elasticity of substitution between labour and capital (CES production function). CES production function and comparative statics. The Golden rule consumption.

The Solow Model

Neoclassical Growth

Published:

Neoclassical Growth model. (Representative) Firm and Household problems. Characterization of the equilibrium. The Consumption Euler equation. Equilibrium, and welfare. Recursive formulation. Bellman equations for the original, and detrended problem. Solving the Bellman equation with Guess and Verify. The Value function iteration (VFI): intro to numerical methods. Transitional dynamics, saving rates, and elasticity of inter-temporal substitution.

Neoclassical Growth

Stagnation -> Modern Growth

Published:

England (1260-2016): population, living standards and industrialisation. Facts of economic stagnation. The Malthusian model of stagnation. Land in production and the fertility-income relation. Transition after negative population shock (the Plague), and positive land shock (the American Frontier).

Stagnation -> Modern Growth

Industrialisation (and Food!)

Published:

Does the essentiality of food matter for take-off to the modern growth? A model with non-homothetic preferences. Subsistence level and possibility of Malthusian trap. The Malthusian disaster. Successful industrialisation in England.

The Romer’s Model

Published:

Growth, technology and production of ``Ideas’’. The Economics of ideas. How are ideas produced? How to model the R&D. The Romer’s model with expanding (input) variety. The equilibrium and the endogenous growth. Pareto optimality and welfare theorems. Optimal growth path.

The Creative Destruction

Published:

Growth and creative destruction. A quality ladder model of growth. The innovation technology. Innovation on the balanced growth path. Solving for the balanced growth rate in closed form.

portfolio

publications

The Nested-Drift Algorithm

with Patrick Schneider

Robust and efficient method of implementing finite difference algorithms for solving heterogeneous agent models in continuous time with multiple endogenous state variables, using the two-asset HANK model of Kaplan-Moll-Violante (2018) as the lead example.

Business Cycles Along the Development Path

[Draft coming soon]

The Unproductive Wealth of Nations: The Case of Gold in India

[Draft coming soon]

talks

teaching

Macroeconomics (EC102)

Undergraduate, LSE

Teaching Evaluation: 2020-2021 (4.2/5)

Micro- and Macro-economics for the 1st year undergraduate students.

Macroeconomics (EC1B5)

Undergraduate, LSE

Teaching Evaluation: 2023, Spring (5/5)

Course Manager. Macroeconomics for the 1st year undergraduate students.

Advanced Economic Analysis (EC301)

Undergraduate, LSE

Teaching Evaluation: 2022, Spring (no teacher evaluation report) ; 2023, Spring (4.6/5)

Economic Growth

Math Boot Camp (EC400)

Graduate, LSE

Teaching Evaluation: 2023 (4.8/5)

Static optimisation and fixed point theory. Dynamic optimisation (mathematics for macroeconomics)

Macroeconomics (EC413)

Graduate, LSE

Teaching Evaluation: 2023, Fall, Growth (4.9/5) ; 2024, Spring, Monetary (4.8/5) ; 2024, Fall, Growth (4.9/5)

Class Teacher Award: 2023 (highly commended)