schema: EconSchema
aspectRatio: 1.3
params:
- name: g
value: 10
min: 10
max: 25
round: 0.1
- name: r
value: 5
min: 0
max: 9.9
round: 0.1
- name: a
value: 0.1
min: 0
max: 0.3
round: 0.01
- name: b
value: 100
min: 80
max: 120
round: 1
- name: pi
value: 4
- name: a1
value: 2.525
min: 1.525
max: 4.525
round: 0.01
calcs:
Yeq: ((15+10+params.g)/(1-0.75*(1-0.25))-(params.a1*(params.r))/(1-0.75*(1-0.25)))
Yeqf: ((15+10+10)/(1-0.75*(1-0.25))-(params.a1*(5))/(1-0.75*(1-0.25)))
Yeq2: ((15+10+params.g)/(1-0.75*(1-0.25))-(params.a1*(1))/(1-0.75*(1-0.25)))
MR: ((-(params.a*params.b)*((0)-params.pi)+calcs.Yeqf))
PC: ((params.pi+(params.a)((100)-calcs.Yeqf)))
PC1: ((params.pi+(params.a)((calcs.Yeq)-calcs.Yeqf)))
PC21: ((params.pi+2(params.a)((calcs.Yeq)-calcs.Yeqf)))
PC2: ((params.pi-(((calcs.MRPCeq1)-calcs.Yeqf)/((params.a)*(params.b)))))
IS: ((((15+10+params.g)/(params.a1)-((calcs.MRPCeq1)*(1-0.75*(1-0.25))/(params.a1)))))
ISnova: ((((15+10+params.g)/(params.a1)-((calcs.Yeqf)*(1-0.75*(1-0.25))/(params.a1)))))
IS2: ((((15+10+params.g)/(params.a1)-((calcs.MRPCeq2)*(1-0.75*(1-0.25))/(params.a1)))))
PC3: ((params.pi-(((calcs.MRPCeq2)-calcs.Yeqf)/((params.a)*(params.b)))))
MRPCeq1: (-2((params.a*params.a*params.b*(calcs.Yeq-calcs.Yeqf))/((params.a*params.a*params.b)+1))+calcs.Yeqf)
MRPCeq2: ((-((2)(params.a)(calcs.Yeq))-((params.a)(calcs.MRPCeq1))+((4)(params.a)(calcs.Yeqf))+((calcs.Yeqf)/((params.a)(params.b))))/((params.a)+((1)/((params.a)(params.b)))))
layout:
TwoVerticalGraphsPlusSidebar:
topGraph:
xAxis:
min: 0
max: 110
ticks: 4
yAxis:
min: 0
max: 20
ticks: 4
objects:
#Curva IS
- Curve:
fn: "((((15+10+params.g)/(params.a1))-((x)*(1-0.75*(1-0.25))/(params.a1))))"
ind: x
color: blue
min: 0
max: 120
strokeWidth: 4
samplePoints: 120
#Curva IS fixa
- Curve:
fn: "(((15+10+10)/(params.a1)-((x)*(1-0.75*(1-0.25))/(params.a1))))"
ind: x
color: blue
min: 0
max: 120
strokeWidth: 2
samplePoints: 120
#Canva
- Point:
coordinates: [calcs.Yeq, params.r]
color: red
show: (params.g > 12)
r: 5
- Point:
coordinates: [calcs.Yeqf, calcs.ISnova]
color: black
r: 5
- Point:
coordinates: [calcs.MRPCeq1, calcs.IS]
color: green
show: (params.g > 12)
r: 5
- Point:
coordinates: [calcs.MRPCeq2, calcs.IS2]
color: green
show: (params.g > 12)
r: 4.5
- Segment:
a: [calcs.Yeq+1, 6]
b: [calcs.MRPCeq1+6,calcs.IS+0.2]
color: red
bgcolor: none
show: (12 < params.g)
strokeWidth: 3
endArrow: true
- Segment:
a: [calcs.MRPCeq1-2, calcs.IS-0.4]
b: [calcs.MRPCeq2-3, calcs.IS2-0.2]
color: green
bgcolor: none
show: (12 < params.g)
strokeWidth: 3
endArrow: true
- Segment:
a: [calcs.MRPCeq2-3, calcs.IS2-0.2]
b: [(calcs.Yeqf-4), calcs.ISnova]
color: green
bgcolor: none
show: (12 < params.g)
strokeWidth: 3
endArrow: true
- Segment:
a: [4, params.r]
b: [4, calcs.ISnova]
color: red
bgcolor: none
show: (18 < params.g)
strokeWidth: 3
endArrow: true
- Segment:
a: [116, params.r]
b: [116, calcs.ISnova]
color: red
bgcolor: none
show: (18 < params.g)
strokeWidth: 3
endArrow: true
#Taxa Nominal de Juros Neutra
- Line:
yIntercept: params.r
color: red
lineStyle: solid
strokeWidth: 2
- Line:
yIntercept: calcs.ISnova
color: red
lineStyle: solid
strokeWidth: 4
- Segment:
a: [0, calcs.IS]
b: [calcs.MRPCeq1, calcs.IS]
color: "'#36a854'"
strokeWidth: 2
show: (15 < params.g)
lineStyle: dotted
- Segment:
a: [0, calcs.IS2]
b: [calcs.MRPCeq2, calcs.IS2]
color: "'#36a854'"
strokeWidth: 2
show: (15 < params.g)
lineStyle: dotted
- Segment:
a: [calcs.Yeqf, calcs.ISnova]
b: [calcs.Yeqf, 0]
color: green
lineStyle: dotted
show: (15 < params.g)
strokeWidth: 2
- Segment:
a: [calcs.Yeq, 0]
b: [calcs.Yeq, params.r]
color: green
show: (15 < params.g)
lineStyle: dotted
strokeWidth: 2
- Segment:
a: [calcs.MRPCeq1, 0]
b: [calcs.MRPCeq1, calcs.IS]
color: green
show: (15 < params.g)
lineStyle: dotted
strokeWidth: 2
- Segment:
a: [calcs.MRPCeq2, 0]
b: [calcs.MRPCeq2, calcs.IS2]
color: green
lineStyle: dotted
strokeWidth: 2
- Segment:
a: [calcs.Yeqf+2, 0]
b: [calcs.Yeqf+2, 0]
color: white
bgcolor: "'#36a854'"
label:
text: "`(\\\\$)\\\\ ${calcs.Yeqf.toFixed(1)}`"
position: t
fontSize: 10
- Segment:
a: [calcs.MRPCeq1-2, 0]
b: [calcs.MRPCeq1-2, 0]
color: white
show: (params.g > 12)
bgcolor: "'#d62728'"
label:
text: "`(\\\\$)\\\\ ${calcs.MRPCeq1.toFixed(1)}`"
position: t
fontSize: 10
- Segment:
a: [calcs.MRPCeq2, 0]
b: [calcs.MRPCeq2, 0]
color: white
show: (params.g > 12)
bgcolor: "'#d62728'"
label:
text: "`(\\\\$)\\\\ ${calcs.MRPCeq2.toFixed(1)}`"
position: t
fontSize: 10
- Segment:
a: [calcs.Yeq+2, 0]
b: [calcs.Yeq+2 ,0]
color: white
show: (params.g > 12)
bgcolor: "'#2177b5'"
label:
text: "`(\\\\$)\\\\ ${calcs.Yeq.toFixed(1)}`"
position: t
fontSize: 10
- Segment:
a: [1, params.r]
b: [-1 ,params.r]
color: white
bgcolor: "'#d62728'"
label:
text: "`${params.r.toFixed(1)}\\\\%`"
position: r
- Segment:
a: [1, calcs.ISnova]
b: [-1 ,calcs.ISnova]
color: white
bgcolor: "'#d62728'"
label:
text: "`${calcs.ISnova.toFixed(1)}\\\\%`"
position: r
- Segment:
a: [1, calcs.IS]
b: [-1 ,calcs.IS]
color: white
bgcolor: "'#36a854'"
show: (params.g > 12)
label:
text: "`${calcs.IS.toFixed(1)}\\\\%`"
position: r
- Segment:
a: [0, calcs.IS2]
b: [0, calcs.IS2]
color: white
bgcolor: "'#36a854'"
show: (params.g > 12)
label:
text: "`${calcs.IS2.toFixed(1)}\\\\%`"
position: r
- Segment:
a: [110, 5]
b: [110 ,5]
color: white
bgcolor: "'#d62728'"
label:
text: "'r_{neutra}'"
position: l
- Segment:
a: [110, calcs.ISnova]
b: [110 ,calcs.ISnova]
color: white
show: (params.g > 12)
bgcolor: "'#d62728'"
label:
text: r'_{neutra}
position: l
- Segment:
a: [calcs.Yeq2, 0.7]
b: [calcs.Yeq2, 0.7]
color: white
bgcolor: "'#2177b5'"
show: (calcs.Yeq != calcs.Yeqf)
label:
text: IS'
position: bl
- Segment:
a: [calcs.Yeqf+25, 0.7]
b: [calcs.Yeqf+25, 0.7]
color: white
bgcolor: "'#2177b5'"
label:
text: IS
position: bl
- Segment:
a: [0, 20]
b: [0.5, 20]
label:
text: r
fontSize: 13
position: r
- Segment:
a: [120, 0]
b: [120, 0]
label:
text: Y
position: t
bottomGraph:
xAxis:
min: 0
max: 110
ticks: 4
yAxis:
min: 0
max: 15
ticks: 4
objects:
#Curva de Phillips
- Curve:
fn: "(params.pi+(params.a)(x-calcs.Yeqf))"
ind: x
color: "'#008b38'"
min: 0
max: 110
strokeWidth: 4
samplePoints: 100
#Curva de Phillips2
- Curve:
fn: "(params.pi+((params.a)(x-calcs.Yeqf))+((params.a)(calcs.Yeq-calcs.Yeqf)))"
ind: x
color: "'#008b38'"
min: 0
max: 110
strokeWidth: 4
samplePoints: 100
#Curva de Phillips3
- Curve:
fn: "(params.pi+((params.a)(x-calcs.Yeqf))+2((params.a)(calcs.Yeq-calcs.Yeqf)))"
ind: x
color: "'#008b38'"
min: 0
max: 110
strokeWidth: 4
samplePoints: 100
#Curva de Phillips4
- Curve:
fn: "(params.pi+((params.a)(x-calcs.Yeqf))+2((params.a)(calcs.Yeq-calcs.Yeqf))+(params.a)(calcs.MRPCeq1-calcs.Yeqf))"
ind: x
color: "'#008b38'"
min: 0
max: 110
strokeWidth: 4
lineStyle: solid
samplePoints: 100
# Função de Reação (MR)
- Curve:
fn: "(params.pi-(((x)-calcs.Yeqf)/((params.a)*(params.b))))"
ind: x
color: supply
min: 0
max: 200
strokeWidth: 4
samplePoints: 100
#Canva
- Point:
coordinates: [calcs.Yeqf, params.pi]
color: black
r: 5
- Point:
coordinates: [calcs.Yeq, calcs.PC1]
color: red
r: 5
show: (params.g > 12)
- Point:
coordinates: [calcs.Yeq, calcs.PC21]
color: red
r: 5
show: (params.g > 12)
- Point:
coordinates: [calcs.MRPCeq1, calcs.PC2]
color: green
r: 5
show: (params.g > 12)
- Point:
coordinates: [calcs.MRPCeq2, calcs.PC3]
color: green
r: 4
show: (params.g > 12)
- Line:
yIntercept: params.pi
color: red
lineStyle: solid
strokeWidth: 3
- Segment:
a: [calcs.Yeq, calcs.PC21]
b: [calcs.MRPCeq1,calcs.PC2]
color: red
bgcolor: none
show: (12 < params.g)
strokeWidth: 3
endArrow: true
- Segment:
a: [calcs.Yeqf+1, params.pi-0.6]
b: [calcs.Yeq+1, calcs.PC1-0.6]
color: red
bgcolor: none
show: (12 < params.g)
strokeWidth: 3
endArrow: true
- Segment:
a: [calcs.Yeq+2.5, calcs.PC1+0.6]
b: [calcs.Yeq+2.5, calcs.PC21-0.2]
color: red
bgcolor: none
show: (12 < params.g)
strokeWidth: 3
endArrow: true
- Segment:
a: [calcs.MRPCeq1-3,calcs.PC2-0.5]
b: [calcs.MRPCeq2-5,calcs.PC3-0.3]
color: green
bgcolor: none
show: (12 < params.g)
strokeWidth: 3
endArrow: true
- Segment:
a: [calcs.MRPCeq2-5,calcs.PC3-0.3]
b: [calcs.Yeqf-7, 4-0.3]
color: green
bgcolor: none
show: (12 < params.g)
strokeWidth: 3
endArrow: true
- Segment:
a: [calcs.Yeq, 0]
b: [calcs.Yeq, calcs.Yeq]
color: green
lineStyle: dotted
strokeWidth: 2
- Segment:
a: [calcs.Yeqf, 0]
b: [calcs.Yeqf, calcs.Yeqf]
color: green
lineStyle: dotted
strokeWidth: 2
show: (calcs.Yeqf != calcs.Yeq)
- Segment:
a: [calcs.MRPCeq1, 0]
b: [calcs.MRPCeq1, calcs.MRPCeq1]
color: green
lineStyle: dotted
strokeWidth: 2
show: (calcs.Yeqf != calcs.Yeq)
- Segment:
a: [calcs.MRPCeq2, 0]
b: [calcs.MRPCeq2, calcs.MRPCeq2]
color: green
lineStyle: dotted
strokeWidth: 2
show: (calcs.Yeqf != calcs.Yeq)
- Segment:
a: [calcs.Yeqf, 0]
b: [calcs.Yeqf, calcs.Yeqf]
color: green
lineStyle: dotted
strokeWidth: 1
- Segment:
a: [calcs.Yeqf+2, 0]
b: [calcs.Yeqf+2, 0]
color: white
bgcolor: "'#36a854'"
label:
text: "`(\\\\$)\\\\ ${calcs.Yeqf.toFixed(1)}`"
position: t
fontSize: 10
- Segment:
a: [calcs.Yeq+2, 0]
b: [calcs.Yeq+2,0]
color: white
show: (params.g > 12)
bgcolor: "'#2177b5'"
label:
text: "`(\\\\$)\\\\ ${calcs.Yeq.toFixed(1)}`"
position: t
fontSize: 10
- Segment:
a: [calcs.MRPCeq1-2, 0]
b: [calcs.MRPCeq1-2,0]
color: white
show: (params.g > 12)
bgcolor: "'#d62728'"
label:
text: "`(\\\\$)\\\\ ${calcs.MRPCeq1.toFixed(1)}`"
position: t
fontSize: 10
- Segment:
a: [calcs.MRPCeq2, 0]
b: [calcs.MRPCeq2,0]
color: white
show: (params.g > 12)
bgcolor: "'#d62728'"
label:
text: "`(\\\\$)\\\\ ${calcs.MRPCeq2.toFixed(1)}`"
position: t
fontSize: 10
- Segment:
a: [1, params.pi]
b: [-1 ,params.pi]
color: white
bgcolor: "'#d62728'"
label:
text: "`${params.pi.toFixed(1)}\\\\%`"
position: r
- Segment:
a: [110, params.pi]
b: [110 ,params.pi]
color: white
bgcolor: "'#d62728'"
label:
text: "`\\\\pi_{meta}`"
position: l
- Segment:
a: [calcs.MR, 0.7]
b: [calcs.MR, 0.7]
color: white
bgcolor: "'#fc7e0f'"
label:
text: MR
position: bl
- Segment:
a: [110, calcs.PC-1]
b: [110, calcs.PC-1]
color: white
bgcolor: "'#008b38'"
label:
text: PC
position: bl
- Segment:
a: [110, (calcs.PC+(params.a)(calcs.Yeq-calcs.Yeqf))+1]
b: [110, (calcs.PC+(params.a)(calcs.Yeq-calcs.Yeqf))+1]
color: white
show: (params.g > 12)
bgcolor: "'#008b38'"
label:
text: PC_{2}
position: bl
- Segment:
a: [0, 15]
b: [0.5, 15]
label:
text: "`\\\\pi`"
position: r
- Segment:
a: [110, 0]
b: [110, 0]
label:
text: Y
position: t
- Segment:
a: [0, calcs.PC2]
b: [calcs.MRPCeq1, calcs.PC2]
color: "'#36a854'"
lineStyle: dotted
strokeWidth: 2
show: (params.g > 12)
- Segment:
a: [0, calcs.PC3]
b: [calcs.MRPCeq2, calcs.PC3]
color: "'#36a854'"
lineStyle: dotted
strokeWidth: 2
show: (params.g > 12)
- Segment:
a: [0, calcs.PC2]
b: [0, calcs.PC2]
color: white
bgcolor: "'#36a854'"
show: (params.g > 12)
label:
text: "`${calcs.PC2.toFixed(1)}\\\\%`"
position: r
- Segment:
a: [0, calcs.PC3]
b: [0, calcs.PC3]
color: white
bgcolor: "'#36a854'"
show: (params.g > 12)
label:
text: "`${calcs.PC3.toFixed(1)}\\\\%`"
position: r
sidebar:
controls:
- title: Modelo IS-PC-MR - CHOQUE DE DEMANDA PERMANENTE COM DOIS PERÍODOS DE DEFASAGEM
sliders:
- param: g
label: G
digits: 3
- param: b
label: \beta
digits: 3
- param: a
label: \alpha
digits: 3
divs:
- html: '`As condições iniciais da Economia são: $$ \\pi_{meta} = ${params.pi.toFixed(2)} \\ \\% $$ $$ Y_{pot}=(\\\$) \\ ${calcs.Yeqf.toFixed(1)} $$ $$ r_{neutra}= ${calcs.ISnova.toFixed(1)} \\ \\% $$ A evolução do produto é dada por $$ Y_{pot} = (\\\$) \\ ${calcs.Yeqf.toFixed(1)} $$ $$ Y_{1} = (\\\$) \\ ${calcs.Yeq.toFixed(1)} $$ $$ Y_{2} = (\\\$) \\ ${calcs.MRPCeq1.toFixed(1)} $$ $$ Y_{3} = (\\\$) \\ ${calcs.MRPCeq2.toFixed(1)} $$`'
- html:
- html: '`A curva $IS$ é: $$\\color{${colors.black}}{r(Y) = \\frac{c_{0}+a_{0}+G}{a_{1}}-\\frac{Y[1-c_{1}(1-t)]}{a_{1}}}$$ $$\\color{${colors.black}}{\\Longleftrightarrow}$$ $$\\color{${colors.black}}{r(Y) = \\frac{15+10+${params.g.toFixed(0)}}{${params.a1.toFixed(3)}}-\\frac{Y[1-0.75(1-0.25)]}{${params.a1.toFixed(3)}}}$$`'
- html: '`A curva $PC_{t}$ é: $$\\color{${colors.black}}{\\pi_{t} = \\pi_{meta}+\\alpha(Y_{t}-Y_{pot})}$$ $$\\Leftrightarrow$$ $$\\color{${colors.black}}{\\pi_{t} = 4+${params.a.toFixed(2)}(Y_{t}-${calcs.Yeqf.toFixed(2)})}$$ `'
- html: '`A curva $MR_{t}$ é: $$\\color{${colors.black}}{\\pi_{t}(Y_{t}) = \\pi_{meta}-\\frac{(Y_{t}-Y_{pot})}{\\alpha \\beta}} $$`'
- html:
- html: ' Para dois períodos de defasagem, as curvas ${PC_{t}}$ e ${MR_{t}}$ precisam ser ajustadas para ${t+2}$ períodos. '
- html: '` A curva $PC_{t+2}$ é: $$\\color{${colors.black}}{\\pi_{t+2} = \\pi_{meta}+\\alpha(Y_{t}-Y_{pot})+\\alpha(Y_{t+1}-Y_{pot})+\\alpha(Y_{t+2}-Y_{pot})}$$ $$\\Leftrightarrow$$ $$\\color{${colors.black}}{\\pi_{t+2} = \\pi_{meta}+2\\alpha(Y_{t}-Y_{pot})+\\alpha(Y_{t+2}-Y_{pot})}$$ `'
- html: '`A curva $MR_{t+2}$ é: $$\\color{${colors.black}}{\\pi_{t+2}(Y_{t+2}) = \\pi_{meta}-\\frac{(Y_{t+2}-Y_{pot})}{\\alpha \\beta}} $$`'
- html: '`O produto $Y_{t+2}$ ótimo de equilíbrio ocorre quando $MR_{t+2}=PC_{t+2}$, e resolvando para $Y_{t+2}$: $$MR_{t+2}=PC_{t+2}$$ $$\\Longleftrightarrow$$ $$\\color{${colors.black}}{ \\pi_{meta}-\\frac{(Y_{t+2}-Y_{pot})}{\\alpha \\beta}=\\pi_{meta}+2\\alpha(Y_{t}-Y_{pot})+a(Y_{t+2}-Y_{pot})}$$ O produto ótimo em $Y_{t+2}$ é dado por: $$Y_{t+2}= Y_{pot} - \\frac{2\\alpha^{2}\\beta(Y_{t}-Y_{pot})}{\\alpha^{2}\\beta+1}$$`'
- html: '`Para $\\beta=100$ e $\\alpha=0,1$, temos: $$Y_{t+2}(Y_{t})= Y_{pot} - \\frac{2(Y_{t}-Y_{pot})}{2}$$ $$\\Leftrightarrow$$ $$Y_{t+2}=${calcs.MRPCeq1.toFixed(2)} $$`'
- html: 'Para encontrar a taxa de juros (r) necessária para atingir esse produto ótimo — considerando que o choque de demanda é permanente — basta substituir o produto encontrado na Curva IS nova e resolver para (r).'
- html: '`$$\\color{${colors.black}}{IS\'': r(Y_{t+2}) = \\frac{c_{0}+a_{0}+G}{a_{1}}-\\frac{Y_{t+2}[1-c_{1}(1-t)]}{a_{1}}}$$ $$\\color{${colors.black}}{\\Longleftrightarrow}$$ $$\\color{${colors.black}}{r(${calcs.MRPCeq1.toFixed(2)}) = \\frac{15+10+${params.g.toFixed(0)}}{${params.a1.toFixed(3)}}-\\frac{${calcs.MRPCeq1.toFixed(2)}[1-0.75(1-0.25)]}{${params.a1.toFixed(3)}}}$$ $$\\Longleftrightarrow$$ $$ r(${calcs.MRPCeq1.toFixed(2)})=${calcs.IS.toFixed(2)} \\% $$`'
- html: '`Para encontrar os demais níveis de produto ótimo ($Y_{t+n}$) e taxa de juros ($r_{t+n}$), basta repetir o processo para cada nova Curva de Phillips $PC_{n}$, até atingir o produto potencial $Y_{pot}$`'
- html: ''
- html: 'A grande diferença entre um choque de demanda temporário e um choque de demanda permanente é que a taxa de juros neutra ($r_{neutra}$) aumenta após o choque permanente.'