schema: EconSchema
aspectRatio: 1.8
params:
- name: B
value: 2
min: 1
max: 3
round: 0.1
- name: e
value: 0
min: -5
max: 7
round: 0.1
- name: t
value: 0
min: 0
max: 50
round: 0.1
- name: a
value: 0.5
min: 0.1
max: 1
round: 0.01
calcs:
CMg: (params.B*(calcs.Qeq)-5)
DEM1: ((80-2(calcs.Qeq1)+params.e))
DEM: ((80-2(calcs.Qeq)+params.e))
Qeq1: (((85+(params.e)-(0))/(2+params.B)))
Qeq: (((85+(params.e)-(params.t))/(2+params.B)))
CMg2: ((params.B*(50))-5)
CMg3inv: ((95+5-(params.t))/(params.B))
CMg4: ((params.B*(calcs.CMg3inv))-5)
CMg3: ((params.B*(50))-5+params.t)
D: ((80-2(35)+params.e))
pi: (calcs.RT-calcs.CT)
RTrib: ((params.t)*((85+(params.e)-(params.t))/(2+params.B)))
layout:
TwoHorizontalGraphsPlusSidebar:
leftGraph:
xAxis:
min: 0
max: 50
ticks: 4
yAxis:
min: 0
max: 100
ticks: 4
objects:
#Curva de Demanda
- Curve:
fn: "(80-2x+params.e)"
ind: x
color: blue
min: 0
max: 180
lineStyle: solid
strokeWidth: 4
samplePoints: 250
#Curva de Oferta
- Curve:
fn: "((params.B*x)-5)"
ind: x
color: red
strokeWidth: 4
samplePoints: 300
#Curva de Oferta + Impostos
- Curve:
fn: "(((params.B)*x)-5+params.t)"
ind: x
color: red
strokeWidth: 4
samplePoints: 300
- Segment:
a: [36, calcs.D]
b: [36, calcs.D]
color: white
bgcolor: "'#1f77b4'"
label:
text: "`DEM: P(Q)`"
position: l
- Segment:
a: [1,calcs.CMg]
b: [1,calcs.DEM]
color: supply
bgcolor: none
strokeWidth: 3
endArrow: true
label:
text: "`t:(\\\\$)\\\\ ${params.t.toFixed(1)}`"
position: r
fontSize: 10
- Segment:
a: [35, calcs.CMg2]
b: [35, calcs.CMg2]
color: white
bgcolor: "'#d62728'"
label:
text: CMg
position: l
- Segment:
a: [calcs.CMg3inv, 95]
b: [calcs.CMg3inv, 95]
color: white
bgcolor: "'#d62728'"
show: (params.t>0)
label:
text: CMg'
position: r
- Segment:
a: [0, 100]
b: [0, 100]
color: black
label:
text: P
position: r
- Segment:
a: [47, 0]
b: [47, 0]
color: black
label:
text: Q
position: tl
- Segment:
a: [0, calcs.DEM]
b: [0, calcs.DEM]
color: black
bgcolor: green
label:
text: "`(\\\\$)\\\\ ${calcs.DEM.toFixed(1)}`"
position: r
- Segment:
a: [0, calcs.CMg]
b: [0, calcs.CMg]
color: black
bgcolor: green
label:
text: "`(\\\\$)\\\\ ${calcs.CMg.toFixed(1)}`"
position: r
- Segment:
a: [calcs.Qeq, 0]
b: [calcs.Qeq, 0]
color: black
bgcolor: green
label:
text: "`${calcs.Qeq.toFixed(2)}`"
position: t
- Point:
coordinates: [calcs.Qeq, calcs.DEM]
color: black
r: 5
- Point:
coordinates: [calcs.Qeq, calcs.CMg]
color: black
r: 5
- Point:
coordinates: [calcs.Qeq1, calcs.DEM1]
color: black
r: 5
- Segment:
a: [0, calcs.DEM]
b: [calcs.Qeq, calcs.DEM]
color: green
lineStyle: dashed
strokeWidth: 3
show: (params.t>0)
- Segment:
a: [0, calcs.DEM1]
b: [calcs.Qeq1, calcs.DEM1]
color: green
lineStyle: dashed
strokeWidth: 3
show: (params.t==0)
- Segment:
a: [calcs.Qeq, 0]
b: [calcs.Qeq, calcs.DEM]
color: green
lineStyle: dashed
strokeWidth: 3
- Segment:
a: [0, calcs.CMg]
b: [calcs.Qeq, calcs.CMg]
color: green
lineStyle: dashed
strokeWidth: 3
show: (params.t>0)
- Area:
fn1: "((80-2x+params.e))"
fn2: "((params.B*x)-5)"
fill: grey
opacity: 0.8
min: calcs.Qeq
max: calcs.Qeq1
- Area:
fn1: "(calcs.DEM)"
fn2: "(calcs.CMg)"
fill: supply
opacity: 0.4
min: 0
max: calcs.Qeq
- Label:
coordinates: [((17+calcs.Qeq)/2),(calcs.DEM+calcs.CMg)/2]
text: DWL
bgcolor: grey
color: white
fontSize: 9
position: b4
show: ((calcs.Qeq-calcs.Qeq1) < 0)
- Label:
coordinates: [((calcs.Qeq-2)/2),((calcs.DEM1))]
text: RTrib
bgcolor: "'#fc7e0f'"
color: white
fontSize: 9
position: b4
show: ((calcs.Qeq-calcs.Qeq1) < 0)
rightGraph:
xAxis:
min: 0
max: 100
ticks: 4
yAxis:
min: 0
max: 650
ticks: 4
objects:
#Curva de Receita Tributária
- Curve:
fn: "((x)*((85+params.e-(x))/(2+params.B)))"
ind: x
color: supply
min: 0
max: 180
lineStyle: solid
strokeWidth: 4
samplePoints: 250
- Point:
coordinates: [params.t, calcs.RTrib]
color: black
r: 5
- Segment:
a: [0, calcs.RTrib]
b: [params.t, calcs.RTrib]
color: green
lineStyle: dashed
strokeWidth: 3
- Segment:
a: [params.t, 0]
b: [params.t, calcs.RTrib]
color: green
lineStyle: dashed
strokeWidth: 3
- Segment:
a: [0, calcs.RTrib]
b: [0, calcs.RTrib]
color: white
bgcolor: "'#fc7e0f'"
show: (params.t>5)
label:
text: "`(\\\\$)\\\\ ${calcs.RTrib.toFixed(2)}`"
position: r
- Segment:
a: [params.t, 0]
b: [params.t, 0]
color: black
bgcolor: green
show: (params.t>5)
label:
text: params.t.toFixed(1)
position: t
- Segment:
a: [0, 650]
b: [0, 650]
color: black
bgcolor: white
label:
text: "`RTrib`"
position: r
- Segment:
a: [100, 10]
b: [100, 10]
color: black
bgcolor: white
label:
text: \ \ \ t
fontSize: 11
position: t
sidebar:
controls:
- title: Curva de Laffer — Maximização de Receita Tributária
sliders:
- param: B
label: \beta
digits: 2
- param: e
label: \\e
digits: 4
- param: t
label: t
digits: 4