# Panel 1: Monetary expansion under flexible (effective)
p_mon_flex <- ggplot() +
geom_segment(aes(x=20, y=12, xend=80, yend=2), color="#012169", linewidth=1.5) +
annotate("text", x=82, y=2.2, label="IS", size=4, color="#012169") +
geom_segment(aes(x=32, y=12, xend=92, yend=2), color="#012169", linewidth=1.2, linetype="dashed") +
annotate("text", x=94, y=2.2, label="IS'", size=4, color="#012169") +
geom_segment(aes(x=20, y=2, xend=80, yend=12), color="#B9975B", linewidth=1.5) +
annotate("text", x=82, y=12, label="LM", size=4, color="#B9975B") +
geom_segment(aes(x=32, y=2, xend=92, yend=12), color="#B9975B", linewidth=1.2, linetype="dashed") +
annotate("text", x=94, y=12, label="LM'", size=4, color="#B9975B") +
geom_hline(yintercept=7, linetype="dotdash", color="darkgreen", linewidth=1.2) +
annotate("text", x=85, y=7.5, label="BP (i=i*)", size=3.5, color="darkgreen") +
geom_point(aes(x=50, y=7), size=4, color="black") +
geom_point(aes(x=68, y=7), size=4, color="darkgreen") +
annotate("text", x=48, y=7.8, label="E1", size=3.5) +
annotate("text", x=70, y=7.8, label="E2\n(Y rises!)", size=3.2, color="darkgreen") +
annotate("segment", x=52, y=7, xend=66, yend=7,
arrow=arrow(length=unit(0.25,"cm")), color="darkgreen") +
annotate("text", x=56, y=5.3,
label="M↑ → i↓ → capital outflow\n→ currency depreciates\n→ NX↑ → IS shifts right\n→ Y rises at same i*",
size=2.7, color="darkgreen", hjust=0.5) +
labs(title="Monetary Expansion (M↑): EFFECTIVE",
subtitle="Depreciation channel boosts NX and output",
x="Output (Y)", y="Interest Rate (i)") +
coord_cartesian(xlim=c(15,100), ylim=c(0,15)) +
theme_minimal(base_size=10)
# Panel 2: Fiscal expansion under flexible (ineffective - crowded out)
p_fisc_flex <- ggplot() +
geom_segment(aes(x=20, y=12, xend=80, yend=2), color="#012169", linewidth=1.5) +
annotate("text", x=82, y=2.2, label="IS", size=4, color="#012169") +
geom_segment(aes(x=32, y=12, xend=92, yend=2), color="#012169", linewidth=1.2, linetype="dashed") +
annotate("text", x=94, y=2.2, label="IS'", size=4, color="#012169") +
geom_segment(aes(x=20, y=12, xend=80, yend=2), color="#012169", linewidth=0.8, linetype="dotted") +
geom_segment(aes(x=20, y=2, xend=80, yend=12), color="#B9975B", linewidth=1.5) +
annotate("text", x=82, y=12, label="LM", size=4, color="#B9975B") +
geom_hline(yintercept=7, linetype="dotdash", color="darkgreen", linewidth=1.2) +
annotate("text", x=85, y=7.5, label="BP (i=i*)", size=3.5, color="darkgreen") +
geom_point(aes(x=50, y=7), size=4, color="black") +
geom_point(aes(x=62, y=10), size=3, color="grey60") +
annotate("text", x=48, y=7.8, label="E1 = E2", size=3.5) +
annotate("text", x=64, y=10.5, label="E' (temp)", size=3, color="grey60") +
annotate("segment", x=62, y=9.5, xend=55, yend=8,
arrow=arrow(length=unit(0.25,"cm")), color="red") +
annotate("text", x=63, y=8.5,
label="G↑ → IS shifts right\n→ i rises → capital inflow\n→ INR appreciates\n→ NX falls → IS shifts back!\nY unchanged.",
size=2.7, color="red", hjust=0) +
labs(title="Fiscal Expansion (G↑): CROWDED OUT",
subtitle="Appreciation destroys NX gain — Y returns to E1",
x="Output (Y)", y="Interest Rate (i)") +
coord_cartesian(xlim=c(15,100), ylim=c(0,15)) +
theme_minimal(base_size=10)
p_mon_flex + p_fisc_flex +
plot_annotation(
title="Mundell-Fleming: Flexible Exchange Rate Regime",
subtitle="Key result: Monetary policy effective (exchange rate channel); Fiscal policy crowded out via exchange rate appreciation"
)