---
title: "Alokacijska funkcija i tržišni neuspjesi"
---
::: {.vodic-panel}
## Vodič kroz poglavlje
1. Što je tržišni neuspjeh i zašto opravdava ulogu države u alokaciji resursa?
2. Što su javna dobra i zašto ih tržište sustavno podproizvodi?
3. Kada eksternaliju treba ispraviti porezom ili subvencijom, a kada je dovoljno odrediti vlasnička prava i prepustiti pregovore?
4. Zašto asimetrične informacije vode k nepovoljnom izboru i moralnom hazardu?
5. Kako tržišna moć i prirodni monopoli narušavaju učinkovitost?
6. Po čemu se zajednička i meritorna dobra razlikuju od ostalih tržišnih neuspjeha?
:::
Nakon što smo objasnili zašto konkurentsko tržište u idealnim uvjetima može dovesti do Pareto učinkovite alokacije, možemo jasnije razumjeti što znači **tržišni neuspjeh**. On nastaje onda kada stvarna tržišta ne zadovoljavaju uvjete pod kojima vrijedi prvi teorem ekonomike blagostanja. Tada cijene ne odražavaju sve društvene troškove i koristi, tržišta ne postoje ili ne funkcioniraju potpuno, pojedini akteri imaju tržišnu moć ili informacije nisu jednako raspoređene. U takvim okolnostima država može imati alokacijsku ulogu kroz ispravljanje ili ublažavanje neučinkovitosti koje nastaju u tržišnom procesu.
::: {#def-trzisni-neuspjeh}
**Tržišni neuspjeh** nastaje kada stvarna tržišta ne zadovoljavaju uvjete prvog teorema ekonomike blagostanja pa cijene ne odražavaju sve društvene troškove i koristi, što znači da tržišni ishod nije Pareto učinkovit s društvenog stajališta. Klasični oblici su javna dobra, eksternalije, asimetrične informacije i tržišna moć.
:::
Tržišni neuspjeh ne znači da tržište uopće ne funkcionira. On znači da rezultat tržišnog procesa nije najbolji mogući s društvenog stajališta. Tržište može proizvoditi premalo nečega što je društveno korisno, previše nečega što je društveno štetno, ili može proizvesti cijene i količine koje ne odražavaju stvarne troškove i koristi. Klasični primjeri tržišnih neuspjeha su javna dobra, eksternalije, asimetrične informacije, tržišna moć i prirodni monopoli [@pigou1920; @samuelson1954; @akerlof1970; @stiglitz2015].
Važno je naglasiti da alokacijska funkcija države nije isto što i tvrdnja da država uvijek zna bolje od tržišta. Njezina je osnovna logika uža i preciznija. Država može imati opravdanje za intervenciju onda kada tržište ne uspijeva osigurati učinkovitu alokaciju resursa. Tada se postavlja pitanje koji je oblik tržišnog neuspjeha prisutan i koji instrument javne politike može taj problem najbolje ublažiti.
Ostatak poglavlja prolazi kroz te oblike redom, svaki kao zaseban razlog zbog kojeg država može ući u alokaciju i svaki sa svojim instrumentom ispravljanja. Počinjemo od onoga koji najjasnije pokazuje granice tržišta, a to su javna dobra.
## Javna dobra
Najpoznatiji primjer tržišnog neuspjeha su **javna dobra**. Razlog zbog kojega ih privatno tržište sustavno podbacuje leži u dvama svojstvima koja takva dobra dijele, a koja zajedno potkopavaju uobičajeni mehanizam naplate [@samuelson1954; @musgrave1959].
::: {#def-javno-dobro}
**Javno dobro** je dobro koje je istodobno **nekonkurentno** (potrošnja jednog korisnika ne smanjuje dostupnost drugima) i **neisključivo** (teško ili skupo je spriječiti nekoga da ga koristi). Zbog te kombinacije tržište javno dobro ne može financirati jer korisnici imaju poticaj ne otkriti svoje preferencije i ostvariti ga besplatno.
:::
Ta dva svojstva rijetko su prisutna u čistom obliku, pa je javnost nekog dobra pitanje stupnja, a ne oštre podjele. Nerivalnost znači da dodatni korisnik ne umanjuje dostupnost dobra ostalima, dok neisključivost znači da ga je teško ili preskupo uskratiti onome tko ne plati. Kada se ta dva svojstva poklope, uobičajeni mehanizam naplate po jedinici prestaje raditi jer nitko nema razloga dragovoljno otkriti koliko mu je dobro vrijedno. Najlakše je tu kombinaciju svojstava prepoznati na konkretnim primjerima, od klasičnih udžbeničkih do suvremenih.
::: {.callout-praksa}
Svjetionik je klasičan udžbenički primjer javnog dobra jer njegovo svjetlo koristi svim brodovima u blizini, a teško je naplatiti ga svakom pojedinom brodu. Suvremeniji je primjer satelitska navigacija. Europski sustav Galileo svoj otvoreni signal nudi besplatno svima, pa nijedan pojedinačni korisnik nema poticaj sam ga financirati, zbog čega je izgrađen javnim sredstvima Europske unije. U oba slučaja tržište bi takvo dobro proizvelo u premaloj količini ili ga uopće ne bi proizvelo, pa njegovo osiguravanje preuzima javni sektor. Granica između javnog i privatnog dobra pritom nije uvijek oštra jer tehnologija može promijeniti isključivost, kao kada naplatne ceste ili kriptirani satelitski signali omoguće da se prije neisključivo dobro ipak naplati. Upravo zato pitanje treba li neko dobro osigurati država nije jednom zauvijek riješeno, nego ovisi o troškovima isključivanja i o tome koliko bi tržišno rješenje smanjilo korist za društvo.[^wp-ch02]
:::
[^wp-ch02]: Daljnje čitanje: Coase (1974), [*The Lighthouse in Economics*](https://www.jstor.org/stable/724895); NIST/RTI (2019), [*Economic Benefits of GPS*](https://www.nist.gov/document/economic-benefits-global-positioning-system-gps-final-report).
Klasični primjeri javnih dobara su nacionalna obrana, javna rasvjeta, svjetionici, zaštita od poplava, osnovna javna sigurnost, parkovi, šetnice i određeni oblici javne infrastrukture. Ako država organizira nacionalnu obranu, svi stanovnici imaju korist od sigurnosti teritorija, neovisno o tome koliko je svatko pojedinačno spreman platiti. Ako se osvijetli ulica, korist imaju svi prolaznici. Ako se izgradi nasip protiv poplave, svi stanovnici zaštićenog područja imaju korist od zaštite.
U slučaju javnih dobara pojavljuje se **problem slobodnog jahača** (*free rider problem*). Budući da se pojedinca teško može isključiti iz korištenja javnog dobra, on ima poticaj prikriti koliko mu je to dobro stvarno važno i pokušati izbjeći plaćanje. Ako zna da će ulica biti osvijetljena i bez njegova doprinosa, racionalno mu je prepustiti drugima da plate. Međutim, ako se svi ponašaju na taj način, javno dobro neće biti financirano ili će ga biti premalo. Tržište tada ne uspijeva otkriti stvarnu društvenu potražnju jer pojedinci nemaju poticaja iskreno otkriti svoje preferencije [@olson1965].
Zato država javna dobra najčešće financira kroz poreze. Porezi omogućuju da se trošak javnog dobra raspodijeli na širu zajednicu, a ne samo na one koji bi dobrovoljno platili. To ne znači da je svaka državna potrošnja automatski opravdana. Država i dalje mora odlučiti koliko javnog dobra treba osigurati, koliko ono košta i je li društvena korist veća od društvenog troška. Kod čistih javnih dobara tržišni mehanizam naplate pojedinačne cijene jednostavno ne funkcionira dobro.
U praksi je važno razlikovati čista javna dobra od mješovitih dobara. Čista javna dobra, poput nacionalne obrane, gotovo su potpuno nekonkurentna i neisključiva. Mješovita dobra imaju neka obilježja javnih, a neka obilježja privatnih dobara. Primjerice, park je javno dostupan, ali ako postane prenapučen, potrošnja jedne osobe smanjuje kvalitetu korištenja drugima. Cesta je nekonkurentna dok nema gužve, ali u prometnoj gužvi korištenje jedne osobe smanjuje mogućnost korištenja drugima. Autocesta može biti isključiva ako se naplaćuje cestarina, ali je do određene razine prometa nekonkurentna.
::: {.callout-praksa}
Slično pitanje o granicama isključivosti danas se postavlja oko umjetne inteligencije. Kada se težinski parametri nekog jezičnog modela jednom javno objave, gotovo nikoga više nije moguće isključiti iz njihove uporabe, a to što ih jedan korisnik preuzme i pokreće ne umanjuje mogućnost da to učini bilo tko drugi, pa otvoreno objavljeni modeli poprimaju obilježja javnog dobra. Računalna snaga i golemi troškovi treniranja najsposobnijih modela, naprotiv, ostaju isključivi i skupi, slično kao naplatna cesta, pa najnaprednije sustave pružaju zatvorene komercijalne platforme. Zbog te napetosti između otvorenog koda i zatvorene infrastrukture u javnim se financijama sve više raspravlja o tome treba li temeljne sastavnice umjetne inteligencije, od računalnih kapaciteta do podataka za treniranje, tretirati kao novu klasu javnih dobara [@korinek2026].
:::
Alokacijska funkcija države zato nije ograničena samo na čista javna dobra. Država često financira i dobra koja imaju šire društvene koristi, iako nisu čista javna dobra. Ceste, škole, bolnice, komunalna infrastruktura i javni prijevoz nisu uvijek javna dobra u strogom ekonomskom smislu, ali snažno utječu na funkcioniranje gospodarstva i kvalitetu života. Cesta povezuje ljude i poduzeća, smanjuje troškove prijevoza i povećava dostupnost tržišta. Obrazovanje povećava ljudski kapital. Zdravstvo povećava radnu sposobnost i smanjuje društvene troškove bolesti. Zbog tih širih koristi država može imati važnu ulogu u financiranju, organizaciji ili regulaciji takvih usluga.
Graf koji slijedi prikazuje kako se kod javnog dobra određuje društveno poželjna količina i zašto je tržište samo ne osigurava. Budući da svaka jedinica istovremeno koristi svim potrošačima (nerivalnost), agregatna potražnja dobiva se vertikalnim zbrajanjem pojedinačnih krivulja D~i~, pa taj zbroj predstavlja marginalnu društvenu korist ΣD~i~ = MSB. Društveni optimum Q\* nalazi se ondje gdje MSB siječe granični trošak MC. Bez prisilne koordinacije svaki pojedinac plaća samo prema vlastitoj krivulji potražnje, pa najviše što bi tržište osiguralo (Q~M~) određuje pojedinac s najvećom spremnošću da plati, a razlika između Q~M~ i Q\* posljedica je problema švercerana. Graf je interaktivan, pa klizači mijenjaju broj potrošača, njihovu heterogenost, najvišu spremnost platiti i razinu graničnog troška.
::: {.content-visible when-format="html"}
```{ojs}
//| echo: false
viewof pg_controls = Inputs.form({
n: Inputs.range([2, 6], {value: 4, step: 1, label: "Broj potrošača (n):"}),
a_top: Inputs.range([30, 60], {value: 45, step: 1, label: "Najviša spremnost platiti (a₁):"}),
delta: Inputs.range([3, 12], {value: 6, step: 1, label: "Heterogenost potrošača (Δ):"}),
mc: Inputs.range([30, 90], {value: 60, step: 1, label: "Razina graničnog troška (MC):"})
})
```
```{ojs}
//| echo: false
pg_n = pg_controls.n
```
```{ojs}
//| echo: false
pg_a_top = pg_controls.a_top
```
```{ojs}
//| echo: false
pg_delta = pg_controls.delta
```
```{ojs}
//| echo: false
pg_mc = pg_controls.mc
```
```{ojs}
//| echo: false
//| label: fig-javna-dobra
//| fig-cap: "Vertikalno zbrajanje individualnih krivulja potražnje za javnim dobrom i problem švercerana: tržišna razina Q_M premala je u odnosu na društveni optimum Q*."
//| fig-alt: "Graf prikazuje n individualnih silaznih krivulja potražnje i njihov vertikalni zbroj MSB koji siječe horizontalnu krivulju MC u točki Q*. Tržišna razina Q_M, određena samo najvećom individualnom spremnošću na plaćanje, znatno je niža od Q*, što ilustrira nedovoljnu opskrbu javnim dobrom."
{
const n = pg_n;
const a_top = pg_a_top;
const delta = pg_delta;
const MC = pg_mc;
const slope = 0.5; // common slope b for all individual demands
const Qmax = 100;
const Pmax = 200;
// Build individual demand intercepts: a_1 > a_2 > ... > a_n
const a_i = d3.range(n).map(i => a_top - i * delta);
// Quantity grid
const Qs = d3.range(0, Qmax + 0.5, 0.5);
// Individual demand curves
const indivCurves = a_i.map((a, idx) =>
Qs.map(q => ({Q: q, P: Math.max(0, a - slope * q), id: `D${idx + 1}`}))
.filter(p => p.P >= 0 && p.P <= Pmax)
);
// Vertical aggregate: MSB(q) = Σ max(0, a_i - slope*q)
const msb = Qs.map(q => {
const total = a_i.reduce((acc, a) => acc + Math.max(0, a - slope * q), 0);
return {Q: q, P: total};
}).filter(p => p.P >= 0 && p.P <= Pmax);
// MC: horizontal line at level MC
const mcLine = [{Q: 0, P: MC}, {Q: Qmax, P: MC}];
// Social optimum: where MSB = MC
// Sum of individuals still in market at q: those with a_i > slope*q
// Solve numerically by scanning
let Qstar = 0;
for (let i = msb.length - 1; i >= 0; i--) {
if (msb[i].P >= MC) { Qstar = msb[i].Q; break; }
}
// Market (free-rider) provision: highest individual D_1 meets MC
// a_1 - slope*Q = MC => Q = (a_1 - MC)/slope, if positive
const Qm = Math.max(0, (a_i[0] - MC) / slope);
const P_star = MC; // price/level along MC line
// Color palette for individual curves (light to dark navy/teal)
const palette = ["#A9C3DA", "#7FA3C6", "#5683B0", "#3D6B99", "#2D5A8E", "#1E3F63"];
// Build marks dynamically
const indivMarks = indivCurves.map((curve, idx) =>
Plot.line(curve, {x: "Q", y: "P", stroke: palette[idx % palette.length], strokeWidth: 1.5})
);
// Labels on individual curves at their right end
const indivLabels = a_i.map((a, idx) => {
const xEnd = Math.min(Qmax * 0.9, (a / slope) * 0.85);
const yEnd = Math.max(0, a - slope * xEnd);
return {x: xEnd, y: yEnd, label: `D${idx + 1}`, color: palette[idx % palette.length]};
});
return Plot.plot({
width: 760,
height: 520,
marginLeft: 65,
marginBottom: 55,
style: {fontSize: "12px", fontFamily: "Public Sans, system-ui, sans-serif", color: "#3A332D"},
x: {label: "Količina javnog dobra (Q) →", domain: [0, Qmax], grid: false},
y: {label: "↑ Cijena / Korist (P)", domain: [0, Pmax], grid: true},
marks: [
Plot.ruleY([0], {stroke: "#C9C3B8"}),
// Individual demand curves
...indivMarks,
// Aggregate MSB curve (thick, dark)
Plot.line(msb, {x: "Q", y: "P", stroke: "#1C1916", strokeWidth: 3}),
// MC line (horizontal)
Plot.line(mcLine, {x: "Q", y: "P", stroke: "#6B1F26", strokeWidth: 2.5}),
// Dashed guides
Plot.ruleY([P_star], {stroke: "#6B6357", strokeDasharray: "4,3"}),
Plot.ruleX([Qm], {y1: 0, y2: P_star, stroke: "#6B6357", strokeDasharray: "4,3"}),
Plot.ruleX([Qstar], {y1: 0, y2: P_star, stroke: "#6B6357", strokeDasharray: "4,3"}),
// Equilibrium dots
Plot.dot([{Q: Qm, P: P_star}],
{x: "Q", y: "P", r: 5, fill: "#6B1F26", stroke: "white", strokeWidth: 2}),
Plot.dot([{Q: Qstar, P: P_star}],
{x: "Q", y: "P", r: 5, fill: "#1C1916", stroke: "white", strokeWidth: 2}),
// Curve labels (individual)
Plot.text(indivLabels, {x: "x", y: "y", text: "label",
fill: d => d.color, fontSize: 11, fontWeight: 600, dy: -8}),
// MSB label
Plot.text([{x: Qmax * 0.65, y: msb.find(p => p.Q >= Qmax * 0.65)?.P ?? 0,
label: "ΣDᵢ = MSB"}],
{x: "x", y: "y", text: "label", fill: "#1C1916",
fontSize: 13, fontWeight: 700, dy: -10}),
// MC label
Plot.text([{x: Qmax * 0.05, y: MC, label: `MC = ${MC}`}],
{x: "x", y: "y", text: "label", fill: "#6B1F26",
fontSize: 12, fontWeight: 600, dy: -8, textAnchor: "start"}),
// Price label
Plot.text([{x: 1, y: P_star, label: `P* = ${P_star.toFixed(0)}`}],
{x: "x", y: "y", text: "label", textAnchor: "start", dy: 12,
fontSize: 11, fill: "#3A332D"}),
// Quantity labels
Plot.text([{x: Qm, y: 3, label: `Q_M = ${Qm.toFixed(1)}`}],
{x: "x", y: "y", text: "label", textAnchor: "middle",
fontSize: 11, fill: "#6B1F26"}),
Plot.text([{x: Qstar, y: 3, label: `Q* = ${Qstar.toFixed(1)}`}],
{x: "x", y: "y", text: "label", textAnchor: "middle",
fontSize: 11, fill: "#1C1916"}),
// Headline readout: underprovision gap
Plot.text([{x: 2, y: Pmax * 0.97,
label: `Premala tržišna proizvodnja: Q* − Q_M = ${(Qstar - Qm).toFixed(1)}`}],
{x: "x", y: "y", text: "label", textAnchor: "start",
fontSize: 14, fill: "#1C1916", fontWeight: 700})
]
});
}
```
**Što isprobati.** (1) Povećajte broj potrošača ([n]{.var}) i pratite kako se vertikalni zbroj ΣDᵢ podiže, a jaz Q\* − Q_M raste jer pojedinačni doprinos ostaje sitan dok društvena korist ne. (2) Spustite razinu graničnog troška ([MC]{.var}) i vidjet ćete da društveni optimum Q\* klizi udesno mnogo brže nego tržišna razina Q_M, što povećava podproizvodnju. (3) Sada povećajte heterogenost potrošača ([Δ]{.var}) uz nepromijenjenu najvišu spremnost platiti ([a₁]{.var}) i primijetite naizgled neočekivan ishod, naime da tržišna razina ostaje vezana uz jednog kupca s najvećom spremnošću na plaćanje, pa se s rastom raznolikosti problem švercerana zaoštrava upravo ondje gdje bi se očekivalo da brojnost pomaže.
:::
::: {.content-visible when-format="pdf"}
```{r}
#| label: fig-javna-dobra-print
#| echo: false
#| fig-cap: "Vertikalno zbrajanje individualnih krivulja potražnje za javnim dobrom i problem švercerana: tržišna razina Q_M premala je u odnosu na društveni optimum Q*."
#| fig-alt: "Graf prikazuje n individualnih silaznih krivulja potražnje i njihov vertikalni zbroj MSB koji siječe horizontalnu krivulju MC u točki Q*. Tržišna razina Q_M, određena samo najvećom individualnom spremnošću na plaćanje, znatno je niža od Q*, što ilustrira nedovoljnu opskrbu javnim dobrom."
#| fig-width: 7.6
#| fig-height: 5.2
# Statički PDF blizanac interaktivnog OJS grafa (zadane vrijednosti klizača).
source("R/setup.R")
# Zadane vrijednosti klizača (iz Inputs.form):
n <- 4 # Broj potrošača (n)
a_top <- 45 # Najviša spremnost platiti (a₁)
delta <- 6 # Heterogenost potrošača (Δ)
MC <- 60 # Razina graničnog troška (MC)
# Konstante ugrađene u graf:
slope <- 0.5 # zajednički nagib b svih individualnih krivulja potražnje
Qmax <- 100
Pmax <- 200
# Paleta za individualne krivulje (svijetlo -> tamno navy/teal), idx %% 6
palette <- c("#AAAAAA", "#888888", "#555555", "#555555", "#1A1A1A", "#262626")
# Sjecišta individualnih potražnji: a_1 > a_2 > ... > a_n
a_i <- a_top - (0:(n - 1)) * delta # = c(45, 39, 33, 27)
# Mreža količina (kao u OJS-u: 0 do 100 korak 0.5)
Qs <- seq(0, Qmax, by = 0.5)
# Individualne krivulje potražnje: P = max(0, a_i - slope*Q), filtrirano 0<=P<=200
indiv <- do.call(rbind, lapply(seq_along(a_i), function(idx) {
P <- pmax(0, a_i[idx] - slope * Qs)
d <- data.frame(Q = Qs, P = P, id = factor(idx))
d[d$P >= 0 & d$P <= Pmax, ]
}))
# Vertikalni (Samuelsonov) zbroj: MSB(q) = Σ max(0, a_i - slope*q)
msb_P <- sapply(Qs, function(q) sum(pmax(0, a_i - slope * q)))
msb <- data.frame(Q = Qs, P = msb_P)
msb <- msb[msb$P >= 0 & msb$P <= Pmax, ]
# MC: vodoravna linija na razini MC
mcLine <- data.frame(Q = c(0, Qmax), P = c(MC, MC))
P_star <- MC # razina/cijena uz MC liniju
# Društveni optimum: najveći Q na mreži gdje je MSB(Q) >= MC
Qstar <- max(msb$Q[msb$P >= MC]) # = 42.0
# Tržišna (švercerska) razina: samo pojedinac s najvećom spremnošću (D_1) doseže MC
Qm <- max(0, (a_i[1] - MC) / slope) # = 0.0
# Oznake na desnom kraju individualnih krivulja
xEnd <- pmin(Qmax * 0.9, (a_i / slope) * 0.85)
yEnd <- pmax(0, a_i - slope * xEnd)
indivLabels <- data.frame(
x = xEnd, y = yEnd,
label = paste0("D", seq_along(a_i)),
col = palette[((seq_along(a_i) - 1) %% length(palette)) + 1]
)
# Položaj MSB oznake (prva vrijednost gdje je Q >= 65)
msb_label_y <- msb$P[which(msb$Q >= Qmax * 0.65)[1]]
ggplot() +
# Baseline
geom_hline(yintercept = 0, color = "#CCCCCC", linewidth = 0.4) +
# Individualne krivulje potražnje
geom_line(data = indiv, aes(Q, P, group = id, color = id), linewidth = 0.6) +
scale_color_manual(values = palette[((seq_along(a_i) - 1) %% length(palette)) + 1],
guide = "none") +
# Agregatna MSB krivulja (debela, tamna)
geom_line(data = msb, aes(Q, P), color = "#000000", linewidth = 1.2) +
# MC linija (vodoravna)
geom_line(data = mcLine, aes(Q, P), color = "#4D4D4D", linewidth = 1.0) +
# Isprekidane vodilice
geom_hline(yintercept = P_star, color = "#8C8C8C", linetype = "dashed", linewidth = 0.4) +
annotate("segment", x = Qm, xend = Qm, y = 0, yend = P_star,
color = "#8C8C8C", linetype = "dashed", linewidth = 0.4) +
annotate("segment", x = Qstar, xend = Qstar, y = 0, yend = P_star,
color = "#8C8C8C", linetype = "dashed", linewidth = 0.4) +
# Točke ravnoteže (bijeli obrub)
annotate("point", x = Qm, y = P_star, size = 3.2, color = "white",
fill = "#4D4D4D", shape = 21, stroke = 1) +
annotate("point", x = Qstar, y = P_star, size = 3.2, color = "white",
fill = "#000000", shape = 21, stroke = 1) +
# Oznake individualnih krivulja
geom_text(data = indivLabels, aes(x, y, label = label),
color = indivLabels$col, vjust = 1.4, fontface = "bold", size = 3.4) +
# MSB oznaka
annotate("text", x = Qmax * 0.65, y = msb_label_y, label = "ΣD_i = MSB",
vjust = -0.8, hjust = 0.5, fontface = "bold", size = 4.2, color = "#000000") +
# MC oznaka
annotate("text", x = Qmax * 0.05, y = MC, label = sprintf("MC = %d", MC),
hjust = 0, vjust = -0.8, fontface = "bold", size = 3.8, color = "#4D4D4D") +
# Oznaka cijene
annotate("text", x = 1, y = P_star, label = sprintf("P* = %.0f", P_star),
hjust = 0, vjust = 1.6, size = 3.4, color = "#1A1A1A") +
# Oznake količina
annotate("text", x = Qm, y = 3, label = sprintf("Q_M = %.1f", Qm),
hjust = 0.5, size = 3.4, color = "#4D4D4D") +
annotate("text", x = Qstar, y = 3, label = sprintf("Q* = %.1f", Qstar),
hjust = 0.5, size = 3.4, color = "#000000") +
# Glavni ispis: jaz podproizvodnje
annotate("text", x = 2, y = Pmax * 0.97,
label = sprintf("Premala tržišna proizvodnja: Q* − Q_M = %.1f", Qstar - Qm),
hjust = 0, fontface = "bold", size = 4.6, color = "#000000") +
scale_x_continuous(limits = c(0, Qmax), expand = c(0, 0)) +
scale_y_continuous(limits = c(0, Pmax), expand = c(0, 0)) +
labs(x = "Količina javnog dobra (Q)", y = "Cijena / Korist (P)") +
theme_pubfin()
```
:::
Javna dobra time pokazuju prvi način na koji se tržišni i društveni račun razilaze, naime kada korist nekog dobra ne može biti naplaćena pojedinačnom korisniku. Postoji i zrcalni problem, kada se trošak ili korist neke odluke prelije na druge koji u njoj nisu sudjelovali. Tom se obliku neuspjeha okrećemo sljedeće.
## Eksternalije
Drugi veliki oblik tržišnog neuspjeha nastaje kada cijena ne uhvati sve posljedice neke odluke. Akter koji odlučuje tada ne snosi sve troškove ni ne ubire sve koristi koje njegov izbor stvara za druge, pa se privatni i društveni račun razilaze i tržišna ravnoteža više nije Pareto učinkovita [@pigou1920; @baumol1988].
::: {#def-eksternalija}
**Eksternalija** nastaje kada odluka jednog aktera utječe na dobrobit drugih, a taj se učinak ne odražava u tržišnoj cijeni, pa se privatni i društveni trošak (ili korist) razilaze i tržišna ravnoteža nije Pareto učinkovita. Negativna eksternalija vodi prema prekomjernoj, a pozitivna prema nedovoljnoj aktivnosti.
:::
Eksternalije mogu biti negativne i pozitivne. **Negativna eksternalija** nastaje kada privatna aktivnost stvara trošak za druge. Klasičan primjer je zagađenje. Tvornica koja ispušta štetne tvari u rijeku može smanjiti vlastite troškove proizvodnje jer ne plaća puni trošak onečišćenja. Međutim, taj trošak snose stanovnici nizvodno, ribari, lokalna zajednica, zdravstveni sustav ili buduće generacije. Budući da se trošak zagađenja ne nalazi u tržišnoj cijeni proizvoda, proizvodnja takvog proizvoda može biti veća nego što je društveno poželjno.
Slični primjeri negativnih eksternalija su emisije stakleničkih plinova, buka, prometne gužve, pušenje u zatvorenim prostorima, prekomjerna uporaba antibiotika ili vožnja koja povećava rizik za druge sudionike u prometu. U svim tim slučajevima privatna korist pojedinca ili poduzeća ne uključuje puni društveni trošak.
Graf koji slijedi prikazuje standardni model negativne eksternalije. Krivulja MPC (*marginalni privatni trošak*) odražava ono što proizvođač uzima u obzir, dok krivulja MSC (*marginalni društveni trošak*) uključuje i vanjske troškove koje snosi društvo. Tržišno ravnotežno presjecište MPC i potražnje (D) daje premašenu količinu Q~M~ po prenisko postavljenoj cijeni P~MPC~, dok je društveno optimalna razina proizvodnje Q\*, koja se postiže uz cijenu P\*. Osjenčani trokut između Q\* i Q~M~ predstavlja gubitak blagostanja (DWL). Graf je interaktivan, pa klizači mijenjaju vanjski trošak po jedinici i elastičnost potražnje.
::: {.content-visible when-format="html"}
```{ojs}
//| echo: false
viewof ext_controls = Inputs.form({
ext: Inputs.range([5, 40], {value: 20, step: 1, label: "Vanjski trošak po jedinici (e):"}),
eps_d_ext: Inputs.range([0.3, 2.5], {value: 1.0, step: 0.05, label: "Elastičnost potražnje |εD|:"}),
eps_s_ext: Inputs.range([0.3, 2.5], {value: 1.0, step: 0.05, label: "Elastičnost ponude εS:"})
})
```
```{ojs}
//| echo: false
ext_val = ext_controls.ext
```
```{ojs}
//| echo: false
eps_d_ext = ext_controls.eps_d_ext
```
```{ojs}
//| echo: false
eps_s_ext = ext_controls.eps_s_ext
```
```{ojs}
//| echo: false
//| label: fig-neg-eksternalija
//| fig-cap: "Negativna eksternalija i gubitak blagostanja: tržišna ravnoteža (Q_M, P_MPC) premašuje društveni optimum (Q*, P*) jer MPC ne uključuje vanjski trošak."
//| fig-alt: "Graf prikazuje silaznu krivulju potražnje D, uzlaznu krivulju marginalnog privatnog troška MPC i krivulju marginalnog društvenog troška MSC pomaknutu gore za iznos vanjskog troška. Tržišna ravnoteža je u presjeku D i MPC, a društveni optimum niže lijevo u presjeku D i MSC. Osjenčani trokut između Q* i Q_M prikazuje gubitak blagostanja."
{
// Fix MPC/D equilibrium at (Qm, Pmpc) = (60, 50)
const Qm = 60;
const Pmpc = 50;
const Qmax = 110;
const Pmax = 110;
const e = ext_val;
// MPC slope from elasticity: |εD| = (P/Q)*(1/b_d) => b_d = P/(Q*|εD|)
const b_d = Pmpc / (Qm * eps_d_ext);
// Demand: P = a_d - b_d*Q, at (Qm, Pmpc): a_d = Pmpc + b_d*Qm
const a_d = Pmpc + b_d * Qm;
// MPC slope: εS = (P/Q)*(1/b_s) => b_s = P/(Q*εS)
const b_s = Pmpc / (Qm * eps_s_ext);
// MPC: P = c_s + b_s*Q, at (Qm, Pmpc): c_s = Pmpc - b_s*Qm
const c_s = Pmpc - b_s * Qm;
// MSC = MPC + e => P = (c_s + e) + b_s*Q
// Social optimum: MSC = D => (c_s + e) + b_s*Q* = a_d - b_d*Q*
const Qstar = (a_d - c_s - e) / (b_d + b_s);
const Pstar = a_d - b_d * Qstar;
// Data arrays
const Qs = d3.range(0, Qmax + 1);
const demand = Qs.map(q => ({Q: q, P: a_d - b_d * q})).filter(p => p.P >= 0 && p.P <= Pmax);
const mpc = Qs.map(q => ({Q: q, P: c_s + b_s * q})).filter(p => p.P >= 0 && p.P <= Pmax);
const msc = Qs.map(q => ({Q: q, P: c_s + e + b_s * q})).filter(p => p.P >= 0 && p.P <= Pmax);
// DWL triangle: vertices at (Q*, Pstar), (Qm, Pmpc), (Qm, Pstar)
// More precisely: intersection of MSC with D at Q*, and MPC with D at Qm
const dwlTri = [
{Q: Qstar, P: Pstar},
{Q: Qm, P: Pmpc},
{Q: Qm, P: Pstar}
];
// DWL area
const dwl = 0.5 * Math.abs(Pstar - Pmpc) * Math.abs(Qm - Qstar);
return Plot.plot({
width: 760,
height: 500,
marginLeft: 65,
marginBottom: 55,
style: {fontSize: "12px", fontFamily: "Public Sans, system-ui, sans-serif", color: "#3A332D"},
x: {label: "Količina (Q) →", domain: [0, Qmax], grid: false},
y: {label: "↑ Cijena / Trošak (P)", domain: [0, Pmax], grid: true},
marks: [
Plot.ruleY([0], {stroke: "#C9C3B8"}),
// DWL triangle (shaded)
Plot.line([...dwlTri, dwlTri[0]],
{x: "Q", y: "P", stroke: "#6B1F26", strokeWidth: 1,
fill: "#D8B5B3", fillOpacity: 0.65, curve: "linear"}),
// Curves
Plot.line(demand, {x: "Q", y: "P", stroke: "#2D5A8E", strokeWidth: 2.5}),
Plot.line(mpc, {x: "Q", y: "P", stroke: "#4A6B5C", strokeWidth: 2}),
Plot.line(msc, {x: "Q", y: "P", stroke: "#6B1F26", strokeWidth: 2}),
// Dashed guides
Plot.ruleY([Pstar], {stroke: "#6B6357", strokeDasharray: "4,3"}),
Plot.ruleY([Pmpc], {stroke: "#6B6357", strokeDasharray: "4,3"}),
Plot.ruleX([Qstar], {y1: 0, y2: Pstar, stroke: "#6B6357", strokeDasharray: "4,3"}),
Plot.ruleX([Qm], {y1: 0, y2: Pmpc, stroke: "#6B6357", strokeDasharray: "4,3"}),
// Equilibrium dots
Plot.dot([{Q: Qm, P: Pmpc}],
{x: "Q", y: "P", r: 5, fill: "#4A6B5C", stroke: "white", strokeWidth: 2}),
Plot.dot([{Q: Qstar, P: Pstar}],
{x: "Q", y: "P", r: 5, fill: "#6B1F26", stroke: "white", strokeWidth: 2}),
// Curve labels
Plot.text([{x: Qmax * 0.82, y: a_d - b_d * Qmax * 0.82, label: `D (|εD|=${eps_d_ext.toFixed(2)})`}],
{x: "x", y: "y", text: "label", fill: "#2D5A8E", fontSize: 12, fontWeight: 600, dy: -8}),
Plot.text([{x: Qmax * 0.82, y: c_s + b_s * Qmax * 0.82, label: `MPC (εS=${eps_s_ext.toFixed(2)})`}],
{x: "x", y: "y", text: "label", fill: "#4A6B5C", fontSize: 12, fontWeight: 600, dy: -8}),
Plot.text([{x: Qmax * 0.7, y: c_s + e + b_s * Qmax * 0.7, label: `MSC (e=${e})`}],
{x: "x", y: "y", text: "label", fill: "#6B1F26", fontSize: 12, fontWeight: 600, dy: -8}),
// Price & quantity labels on axes
Plot.text([{x: 1, y: Pstar, label: `P* = ${Pstar.toFixed(1)}`}],
{x: "x", y: "y", text: "label", textAnchor: "start", dy: -7, fontSize: 11, fill: "#6B1F26"}),
Plot.text([{x: 1, y: Pmpc, label: `P_MPC = ${Pmpc.toFixed(1)}`}],
{x: "x", y: "y", text: "label", textAnchor: "start", dy: 12, fontSize: 11, fill: "#4A6B5C"}),
Plot.text([{x: Qstar, y: 2, label: `Q* = ${Qstar.toFixed(1)}`}],
{x: "x", y: "y", text: "label", textAnchor: "middle", dy: 0, fontSize: 11, fill: "#6B1F26"}),
Plot.text([{x: Qm, y: 2, label: `Q_M = ${Qm.toFixed(1)}`}],
{x: "x", y: "y", text: "label", textAnchor: "middle", dy: 0, fontSize: 11, fill: "#4A6B5C"}),
// DWL readout
Plot.text([{x: 2, y: Pmax * 0.97,
label: `Gubitak blagostanja (DWL) = ${dwl.toFixed(1)}`}],
{x: "x", y: "y", text: "label", textAnchor: "start",
fontSize: 14, fill: "#6B1F26", fontWeight: 700})
]
});
}
```
**Što isprobati.** (1) Povećajte vanjski trošak po jedinici ([e]{.var}) i pratite kako se MSC odmiče od MPC, društveni optimum Q\* pomiče ulijevo, a osjenčani trokut gubitka blagostanja raste. (2) Vratite (e) na nisku vrijednost i vidjet ćete kako se MSC gotovo poklopi s MPC, pa gubitak blagostanja iščezava jer privatni i društveni trošak postaju jedva razlučivi. (3) Uz fiksni (e) smanjite elastičnost potražnje [|εD|]{.var} prema 0,3 i primijetite protuintuitivan ishod, naime da kruta potražnja zadržava količinu blizu Q_M unatoč eksternaliji, pa porez koji bi je trebao obuzdati pomiče količinu vrlo malo, a glavnina tereta pada na cijenu.
:::
::: {.content-visible when-format="pdf"}
```{r}
#| label: fig-neg-eksternalija-print
#| echo: false
#| fig-cap: "Negativna eksternalija i gubitak blagostanja: tržišna ravnoteža (Q_M, P_MPC) premašuje društveni optimum (Q*, P*) jer MPC ne uključuje vanjski trošak."
#| fig-alt: "Graf prikazuje silaznu krivulju potražnje D, uzlaznu krivulju marginalnog privatnog troška MPC i krivulju marginalnog društvenog troška MSC pomaknutu gore za iznos vanjskog troška. Tržišna ravnoteža je u presjeku D i MPC, a društveni optimum niže lijevo u presjeku D i MSC. Osjenčani trokut između Q* i Q_M prikazuje gubitak blagostanja."
#| fig-width: 7.6
#| fig-height: 5.0
# Statički PDF blizanac interaktivnog OJS grafa (zadane vrijednosti klizača).
source("R/setup.R")
# --- Zadane vrijednosti klizača (snimka grafa kakav se prvi prikazuje) ---
e <- 20 # vanjski trošak po jedinici (klizač "Vanjski trošak po jedinici (e)")
eps_d_ext <- 1.0 # elastičnost potražnje |εD| (klizač)
eps_s_ext <- 1.0 # elastičnost ponude εS (klizač)
# Fiksne sidrišne točke ravnoteže MPC/D u (Qm, Pmpc) = (60, 50)
Qm <- 60
Pmpc <- 50
Qmax <- 110
Pmax <- 110
# Nagib potražnje iz elastičnosti: b_d = P / (Q * |εD|); Potražnja: P = a_d - b_d*Q
b_d <- Pmpc / (Qm * eps_d_ext)
a_d <- Pmpc + b_d * Qm
# Nagib MPC iz elastičnosti ponude: b_s = P / (Q * εS); MPC: P = c_s + b_s*Q
b_s <- Pmpc / (Qm * eps_s_ext)
c_s <- Pmpc - b_s * Qm
# Društveni optimum (MSC = D): Qstar = (a_d - c_s - e) / (b_d + b_s)
Qstar <- (a_d - c_s - e) / (b_d + b_s)
Pstar <- a_d - b_d * Qstar
# Gubitak blagostanja (DWL) = 0.5 * |Pstar - Pmpc| * |Qm - Qstar| (identično OJS-u)
dwl <- 0.5 * abs(Pstar - Pmpc) * abs(Qm - Qstar)
# Krivulje (ograničene na vidljivi raspon cijena 0..Pmax)
Qgrid <- 0:Qmax
demand <- data.frame(Q = Qgrid, P = a_d - b_d * Qgrid)
demand <- demand[demand$P >= 0 & demand$P <= Pmax, ]
mpc <- data.frame(Q = Qgrid, P = c_s + b_s * Qgrid)
mpc <- mpc[mpc$P >= 0 & mpc$P <= Pmax, ]
msc <- data.frame(Q = Qgrid, P = c_s + e + b_s * Qgrid)
msc <- msc[msc$P >= 0 & msc$P <= Pmax, ]
# Trokut gubitka blagostanja: (Q*, P*), (Qm, Pmpc), (Qm, P*)
dwlTri <- data.frame(
Q = c(Qstar, Qm, Qm),
P = c(Pstar, Pmpc, Pstar)
)
ggplot() +
# Osnovica na y = 0
geom_hline(yintercept = 0, color = "#CCCCCC", linewidth = 0.5) +
# Osjenčani trokut gubitka blagostanja
geom_polygon(data = dwlTri, aes(Q, P),
fill = "#D8D8D8", alpha = 0.65,
color = "#4D4D4D", linewidth = 0.4) +
# Krivulje
geom_line(data = demand, aes(Q, P), color = "#1A1A1A", linewidth = 1.1) +
geom_line(data = mpc, aes(Q, P), color = "#7A7A7A", linewidth = 0.9) +
geom_line(data = msc, aes(Q, P), color = "#4D4D4D", linewidth = 0.9) +
# Isprekidane vodilje
geom_hline(yintercept = Pstar, color = "#8C8C8C", linetype = "dashed", linewidth = 0.4) +
geom_hline(yintercept = Pmpc, color = "#8C8C8C", linetype = "dashed", linewidth = 0.4) +
geom_segment(aes(x = Qstar, xend = Qstar, y = 0, yend = Pstar),
color = "#8C8C8C", linetype = "dashed", linewidth = 0.4) +
geom_segment(aes(x = Qm, xend = Qm, y = 0, yend = Pmpc),
color = "#8C8C8C", linetype = "dashed", linewidth = 0.4) +
# Točke ravnoteže (bijeli obrub kao u OJS-u)
geom_point(aes(x = Qm, y = Pmpc), size = 3, color = "white", fill = "#7A7A7A",
shape = 21, stroke = 1.1) +
geom_point(aes(x = Qstar, y = Pstar), size = 3, color = "white", fill = "#4D4D4D",
shape = 21, stroke = 1.1) +
# Oznake krivulja
annotate("text", x = Qmax * 0.82, y = a_d - b_d * Qmax * 0.82 + 4,
label = sprintf("D (|εD|=%.2f)", eps_d_ext),
color = "#1A1A1A", fontface = "bold", size = 3.6, hjust = 0.5) +
annotate("text", x = Qmax * 0.82, y = c_s + b_s * Qmax * 0.82 + 4,
label = sprintf("MPC (εS=%.2f)", eps_s_ext),
color = "#7A7A7A", fontface = "bold", size = 3.6, hjust = 0.5) +
annotate("text", x = Qmax * 0.7, y = c_s + e + b_s * Qmax * 0.7 + 4,
label = sprintf("MSC (e=%g)", e),
color = "#4D4D4D", fontface = "bold", size = 3.6, hjust = 0.5) +
# Oznake cijena i količina uz osi
annotate("text", x = 1, y = Pstar + 3, label = sprintf("P* = %.1f", Pstar),
color = "#4D4D4D", size = 3.2, hjust = 0) +
annotate("text", x = 1, y = Pmpc - 4, label = sprintf("P_MPC = %.1f", Pmpc),
color = "#7A7A7A", size = 3.2, hjust = 0) +
annotate("text", x = Qstar, y = 2, label = sprintf("Q* = %.1f", Qstar),
color = "#4D4D4D", size = 3.2, hjust = 0.5) +
annotate("text", x = Qm, y = 2, label = sprintf("Q_M = %.1f", Qm),
color = "#7A7A7A", size = 3.2, hjust = 0.5) +
# Ispis gubitka blagostanja
annotate("text", x = 2, y = Pmax * 0.97,
label = sprintf("Gubitak blagostanja (DWL) = %.1f", dwl),
color = "#4D4D4D", fontface = "bold", size = 4.4, hjust = 0) +
scale_x_continuous(limits = c(0, Qmax), expand = c(0, 0)) +
scale_y_continuous(limits = c(0, Pmax), expand = c(0, 0)) +
labs(x = "Količina (Q)", y = "Cijena / Trošak (P)")
```
:::
Negativna eksternalija pokazuje slučaj u kojem tržište proizvodi previše nečega štetnog. Jednako je čest i obrnut slučaj, kada aktivnost stvara korist za druge pa je tržište proizvodi premalo. Taj zrcalni problem i instrumente kojima ga država ispravlja razmatramo u nastavku.
## Pozitivne eksternalije i instrumenti ispravljanja
**Pozitivna eksternalija** nastaje kada aktivnost pojedinca ili poduzeća stvara korist za druge, a ta korist nije u potpunosti plaćena. Primjer je cijepljenje. Osoba koja se cijepi štiti sebe, ali istodobno smanjuje vjerojatnost širenja bolesti na druge. Slično vrijedi za obrazovanje. Obrazovaniji pojedinac ima veću osobnu korist kroz veće mogućnosti zapošljavanja i dohotka, ali društvo također ima koristi kroz veću produktivnost, informiranije građane, manju sklonost kriminalu i bolju sposobnost prilagodbe tehnološkim promjenama. Istraživanje i razvoj također stvaraju pozitivne eksternalije jer se nova znanja mogu prelijevati na druga poduzeća, sektore i buduće inovacije.
Kod negativnih eksternalija tržište obično proizvodi previše aktivnosti koja stvara štetu. Kod pozitivnih eksternalija tržište obično proizvodi premalo aktivnosti koja stvara korist. Zadaća države je približiti privatne poticaje društvenim troškovima i koristima.
Graf koji slijedi prikazuje zrcalnu sliku prethodnog, slučaj u kojem društvene koristi premašuju privatne. Krivulja MPB (*marginalna privatna korist*) odražava potražnju koju potrošači sami iskazuju, dok krivulja MSB (*marginalna društvena korist*) uključuje i vanjske koristi, primjerice veću produktivnost cijelog gospodarstva od obrazovanijih pojedinaca. Tržišno presjecište MPB i ponude (S) daje nedovoljnu količinu Q~M~ po cijeni P~M~, dok je društveno optimalna razina Q\* uz cijenu P\*. Osjenčani trokut prikazuje propuštenu društvenu korist, odnosno gubitak blagostanja zbog premale proizvodnje. Graf je interaktivan, pa klizači mijenjaju vanjsku korist po jedinici i elastičnost ponude.
::: {.content-visible when-format="html"}
```{ojs}
//| echo: false
viewof pos_controls = Inputs.form({
extb: Inputs.range([5, 40], {value: 20, step: 1, label: "Vanjska korist po jedinici (b):"}),
eps_d_pos: Inputs.range([0.3, 2.5], {value: 1.0, step: 0.05, label: "Elastičnost potražnje |εD|:"}),
eps_s_pos: Inputs.range([0.3, 2.5], {value: 1.0, step: 0.05, label: "Elastičnost ponude εS:"})
})
```
```{ojs}
//| echo: false
extb_val = pos_controls.extb
```
```{ojs}
//| echo: false
eps_d_pos = pos_controls.eps_d_pos
```
```{ojs}
//| echo: false
eps_s_pos = pos_controls.eps_s_pos
```
```{ojs}
//| echo: false
//| label: fig-poz-eksternalija
//| fig-cap: "Pozitivna eksternalija i propuštena korist: tržišna razina Q_M preniska je u odnosu na društveni optimum Q* jer MPB ne uključuje vanjsku korist."
//| fig-alt: "Graf prikazuje krivulju marginalnog privatnog benefita MPB i krivulju marginalnog društvenog benefita MSB pomaknutu gore za iznos vanjske koristi, te uzlaznu krivulju ponude S. Tržišna ravnoteža je u presjeku MPB i S, a društveni optimum desno gore u presjeku MSB i S. Osjenčani trokut prikazuje propuštenu društvenu korist."
{
// Fix MPB/S market equilibrium at (Qm, Pm) = (50, 50)
const Qm = 50;
const Pm = 50;
const Qmax = 110;
const Pmax = 110;
const b = extb_val;
// MPB slope from elasticity: b_d = P/(Q*|εD|)
const b_d = Pm / (Qm * eps_d_pos);
// MPB: P = a_d - b_d*Q, at (Qm, Pm): a_d = Pm + b_d*Qm
const a_d = Pm + b_d * Qm;
// Supply slope: b_s = P/(Q*εS)
const b_s = Pm / (Qm * eps_s_pos);
// S: P = c_s + b_s*Q, at (Qm, Pm): c_s = Pm - b_s*Qm
const c_s = Pm - b_s * Qm;
// MSB = MPB + b => P = (a_d + b) - b_d*Q
// Social optimum: MSB = S => (a_d + b) - b_d*Q* = c_s + b_s*Q*
const Qstar = (a_d + b - c_s) / (b_d + b_s);
const Pstar = c_s + b_s * Qstar;
// MSB at Q_M (top-left vertex of DWL triangle)
const MSB_Qm = a_d + b - b_d * Qm;
const Qs = d3.range(0, Qmax + 1);
const mpb = Qs.map(q => ({Q: q, P: a_d - b_d * q})).filter(p => p.P >= 0 && p.P <= Pmax);
const msb = Qs.map(q => ({Q: q, P: a_d + b - b_d * q})).filter(p => p.P >= 0 && p.P <= Pmax);
const supply = Qs.map(q => ({Q: q, P: c_s + b_s * q})).filter(p => p.P >= 0 && p.P <= Pmax);
// DWL triangle: area between MSB (top) and S (bottom), from Q_M to Q*
// Vertices: (Q_M, P_M) on S, (Q_M, MSB(Q_M)) on MSB, (Q*, P*) intersection
const dwlTri = [
{Q: Qm, P: Pm},
{Q: Qm, P: MSB_Qm},
{Q: Qstar, P: Pstar}
];
// DWL area = 0.5 * (MSB(Q_M) - P_M) * (Q* - Q_M)
const dwl = 0.5 * Math.abs(MSB_Qm - Pm) * Math.abs(Qstar - Qm);
return Plot.plot({
width: 760,
height: 500,
marginLeft: 65,
marginBottom: 55,
style: {fontSize: "12px", fontFamily: "Public Sans, system-ui, sans-serif", color: "#3A332D"},
x: {label: "Količina (Q) →", domain: [0, Qmax], grid: false},
y: {label: "↑ Cijena / Korist (P)", domain: [0, Pmax], grid: true},
marks: [
Plot.ruleY([0], {stroke: "#C9C3B8"}),
// DWL triangle (shaded — propuštena korist)
Plot.line([...dwlTri, dwlTri[0]],
{x: "Q", y: "P", stroke: "#C8985E", strokeWidth: 1,
fill: "#E8D6B8", fillOpacity: 0.65, curve: "linear"}),
// Curves
Plot.line(mpb, {x: "Q", y: "P", stroke: "#2D5A8E", strokeWidth: 2.5}),
Plot.line(msb, {x: "Q", y: "P", stroke: "#2B6CB0", strokeWidth: 2}),
Plot.line(supply, {x: "Q", y: "P", stroke: "#4A6B5C", strokeWidth: 2}),
// Dashed guides
Plot.ruleY([Pstar], {stroke: "#6B6357", strokeDasharray: "4,3"}),
Plot.ruleY([Pm], {stroke: "#6B6357", strokeDasharray: "4,3"}),
Plot.ruleX([Qstar], {y1: 0, y2: Pstar, stroke: "#6B6357", strokeDasharray: "4,3"}),
Plot.ruleX([Qm], {y1: 0, y2: MSB_Qm, stroke: "#6B6357", strokeDasharray: "4,3"}),
// Equilibrium dots
Plot.dot([{Q: Qm, P: Pm}],
{x: "Q", y: "P", r: 5, fill: "#2D5A8E", stroke: "white", strokeWidth: 2}),
Plot.dot([{Q: Qstar, P: Pstar}],
{x: "Q", y: "P", r: 5, fill: "#2B6CB0", stroke: "white", strokeWidth: 2}),
// Curve labels
Plot.text([{x: Qmax * 0.82, y: a_d - b_d * Qmax * 0.82, label: `D = MPB (|εD|=${eps_d_pos.toFixed(2)})`}],
{x: "x", y: "y", text: "label", fill: "#2D5A8E", fontSize: 12, fontWeight: 600, dy: -8}),
Plot.text([{x: Qmax * 0.7, y: a_d + b - b_d * Qmax * 0.7, label: `MSB (b=${b})`}],
{x: "x", y: "y", text: "label", fill: "#2B6CB0", fontSize: 12, fontWeight: 600, dy: -8}),
Plot.text([{x: Qmax * 0.82, y: c_s + b_s * Qmax * 0.82, label: `S (εS=${eps_s_pos.toFixed(2)})`}],
{x: "x", y: "y", text: "label", fill: "#4A6B5C", fontSize: 12, fontWeight: 600, dy: -8}),
// Price & quantity labels on axes
Plot.text([{x: 1, y: Pstar, label: `P* = ${Pstar.toFixed(1)}`}],
{x: "x", y: "y", text: "label", textAnchor: "start", dy: -7, fontSize: 11, fill: "#2B6CB0"}),
Plot.text([{x: 1, y: Pm, label: `P_M = ${Pm.toFixed(1)}`}],
{x: "x", y: "y", text: "label", textAnchor: "start", dy: 12, fontSize: 11, fill: "#2D5A8E"}),
Plot.text([{x: Qm, y: 2, label: `Q_M = ${Qm.toFixed(1)}`}],
{x: "x", y: "y", text: "label", textAnchor: "middle", dy: 0, fontSize: 11, fill: "#2D5A8E"}),
Plot.text([{x: Qstar, y: 2, label: `Q* = ${Qstar.toFixed(1)}`}],
{x: "x", y: "y", text: "label", textAnchor: "middle", dy: 0, fontSize: 11, fill: "#2B6CB0"}),
// DWL readout
Plot.text([{x: 2, y: Pmax * 0.97,
label: `Propuštena korist (DWL) = ${dwl.toFixed(1)}`}],
{x: "x", y: "y", text: "label", textAnchor: "start",
fontSize: 14, fill: "#9A6F38", fontWeight: 700})
]
});
}
```
**Što isprobati.** (1) Povećajte vanjsku korist po jedinici ([b]{.var}) i pratite kako se MSB podiže iznad MPB, društveni optimum Q\* pomiče udesno, a osjenčani trokut propuštene koristi raste jer tržište proizvodi premalo. (2) Spustite (b) prema nuli i vidjet ćete kako se MSB stopi s MPB, pa propuštena korist nestaje i tržišna razina Q_M postaje društveno optimalna. (3) Uz izdašnu vanjsku korist smanjite elastičnost ponude [εS]{.var} prema 0,3 i primijetite protuintuitivan ishod, naime da kruta ponuda zadržava količinu blizu Q_M unatoč velikoj vanjskoj koristi, pa subvencija koja bi je trebala potaknuti diže uglavnom cijenu, a količinu pomiče tek skromno.
:::
::: {.content-visible when-format="pdf"}
```{r}
#| label: fig-poz-eksternalija-print
#| echo: false
#| fig-cap: "Pozitivna eksternalija i propuštena korist: tržišna razina Q_M preniska je u odnosu na društveni optimum Q* jer MPB ne uključuje vanjsku korist."
#| fig-alt: "Graf prikazuje krivulju marginalnog privatnog benefita MPB i krivulju marginalnog društvenog benefita MSB pomaknutu gore za iznos vanjske koristi, te uzlaznu krivulju ponude S. Tržišna ravnoteža je u presjeku MPB i S, a društveni optimum desno gore u presjeku MSB i S. Osjenčani trokut prikazuje propuštenu društvenu korist."
#| fig-width: 7.6
#| fig-height: 5.0
# Statički PDF blizanac interaktivnog OJS grafa (zadane vrijednosti klizača).
source("R/setup.R")
# Zadane vrijednosti klizača
b <- 20 # vanjska korist po jedinici (b)
eps_d_pos <- 1.0 # elastičnost potražnje |εD|
eps_s_pos <- 1.0 # elastičnost ponude εS
# Fiksna tržišna ravnoteža MPB/S u (Qm, Pm) = (50, 50)
Qm <- 50
Pm <- 50
Qmax <- 110
Pmax <- 110
# Nagib MPB iz elastičnosti: b_d = P/(Q*|εD|); MPB: P = a_d - b_d*Q
b_d <- Pm / (Qm * eps_d_pos) # = 1.0
a_d <- Pm + b_d * Qm # = 100
# Nagib ponude: b_s = P/(Q*εS); S: P = c_s + b_s*Q
b_s <- Pm / (Qm * eps_s_pos) # = 1.0
c_s <- Pm - b_s * Qm # = 0
# Društveni optimum: MSB = S => (a_d + b) - b_d*Q* = c_s + b_s*Q*
Qstar <- (a_d + b - c_s) / (b_d + b_s) # = 60
Pstar <- c_s + b_s * Qstar # = 60
# MSB pri tržišnoj količini Q_M (gornji lijevi vrh trokuta propuštene koristi)
MSB_Qm <- a_d + b - b_d * Qm # = 70
# Krivulje (filtrirane na 0 <= P <= Pmax, Q u 0..110)
Qs <- 0:Qmax
mpb <- subset(data.frame(Q = Qs, P = a_d - b_d * Qs), P >= 0 & P <= Pmax)
msb <- subset(data.frame(Q = Qs, P = a_d + b - b_d * Qs), P >= 0 & P <= Pmax)
supply <- subset(data.frame(Q = Qs, P = c_s + b_s * Qs), P >= 0 & P <= Pmax)
# Trokut propuštene koristi (MSB gore, S dolje, od Q_M do Q*)
dwlTri <- data.frame(
Q = c(Qm, Qm, Qstar),
P = c(Pm, MSB_Qm, Pstar)
)
# Površina DWL = 0.5 * |MSB(Q_M) - P_M| * |Q* - Q_M| (identično OJS-u)
dwl <- 0.5 * abs(MSB_Qm - Pm) * abs(Qstar - Qm) # = 100.0
ggplot() +
geom_hline(yintercept = 0, color = "#CCCCCC") +
# trokut propuštene koristi (osjenčano)
geom_polygon(data = dwlTri, aes(Q, P),
fill = "#EAEAEA", alpha = 0.65,
color = "#B0B0B0", linewidth = 0.4) +
# krivulje
geom_line(data = mpb, aes(Q, P), color = "#1A1A1A", linewidth = 1.0) +
geom_line(data = msb, aes(Q, P), color = "#333333", linewidth = 0.8) +
geom_line(data = supply, aes(Q, P), color = "#7A7A7A", linewidth = 0.8) +
# isprekidane vodilje
geom_hline(yintercept = Pstar, linetype = "dashed", linewidth = 0.4, color = "#8C8C8C") +
geom_hline(yintercept = Pm, linetype = "dashed", linewidth = 0.4, color = "#8C8C8C") +
geom_segment(aes(x = Qstar, xend = Qstar, y = 0, yend = Pstar),
linetype = "dashed", linewidth = 0.4, color = "#8C8C8C") +
geom_segment(aes(x = Qm, xend = Qm, y = 0, yend = MSB_Qm),
linetype = "dashed", linewidth = 0.4, color = "#8C8C8C") +
# ravnotežne točke
geom_point(aes(x = Qm, y = Pm), size = 2.6, shape = 21, fill = "#1A1A1A", color = "white", stroke = 1) +
geom_point(aes(x = Qstar, y = Pstar), size = 2.6, shape = 21, fill = "#333333", color = "white", stroke = 1) +
# oznake krivulja
annotate("text", x = Qmax * 0.82, y = a_d - b_d * Qmax * 0.82,
label = sprintf("D = MPB (|εD|=%.2f)", eps_d_pos),
color = "#1A1A1A", fontface = "bold", size = 3.5, vjust = -0.6) +
annotate("text", x = Qmax * 0.7, y = a_d + b - b_d * Qmax * 0.7,
label = sprintf("MSB (b=%d)", as.integer(b)),
color = "#333333", fontface = "bold", size = 3.5, vjust = -0.6) +
annotate("text", x = Qmax * 0.82, y = c_s + b_s * Qmax * 0.82,
label = sprintf("S (εS=%.2f)", eps_s_pos),
color = "#7A7A7A", fontface = "bold", size = 3.5, vjust = -0.6) +
# oznake cijena i količina na osima
annotate("text", x = 1, y = Pstar, label = sprintf("P* = %.1f", Pstar),
color = "#333333", size = 3.2, hjust = 0, vjust = -0.6) +
annotate("text", x = 1, y = Pm, label = sprintf("P_M = %.1f", Pm),
color = "#1A1A1A", size = 3.2, hjust = 0, vjust = 1.4) +
annotate("text", x = Qm, y = 2, label = sprintf("Q_M = %.1f", Qm),
color = "#1A1A1A", size = 3.2, hjust = 0.5) +
annotate("text", x = Qstar, y = 2, label = sprintf("Q* = %.1f", Qstar),
color = "#333333", size = 3.2, hjust = 0.5) +
# ispis propuštene koristi (DWL)
annotate("text", x = 2, y = Pmax * 0.97,
label = sprintf("Propuštena korist (DWL) = %.1f", dwl),
color = "#6E6E6E", fontface = "bold", size = 4.2, hjust = 0) +
scale_x_continuous(limits = c(0, Qmax), expand = c(0, 0)) +
scale_y_continuous(limits = c(0, Pmax), expand = c(0, 0)) +
labs(x = "Količina (Q)", y = "Cijena / Korist (P)") +
theme_pubfin()
```
:::
Najpoznatiji instrument za ispravljanje negativnih eksternalija je **Pigouov porez**. Ako aktivnost stvara društveni trošak koji nije uključen u cijenu, država može uvesti porez koji povećava privatni trošak te aktivnosti. Time se poduzeća i potrošači potiču da smanje štetno ponašanje. Primjeri su porezi na emisije ugljika, trošarine na gorivo, porezi na duhan ili porezi na alkohol. Logika je jednostavna jer ako neka aktivnost stvara društveni trošak, njezina cijena treba taj trošak odražavati.
Koliko bi točno takav porez trebao iznositi pitanje je koje vodi do empirijske veličine vanjskog troška. Za klimatske emisije ta se veličina naziva **društvenim troškom ugljika** (*social cost of carbon*) i predstavlja procijenjenu štetu koju nanosi svaka dodatna tona ugljičnog dioksida, a upravo bi joj Pigouov porez na emisije trebao biti jednak. Procjene se, međutim, kreću u širokom rasponu i s vremenom rastu kako modeli uključuju sve više dugoročnih i teško mjerljivih šteta, od desetak do više stotina dolara po toni [@nordhaus2017; @rennert2022]. Sam taj raspon pokazuje da visina ispravnog poreza nije tehnička činjenica nego procjena opterećena pretpostavkama o diskontiranju i budućim štetama, što objašnjava zašto je i kod načelno prihvaćenog instrumenta njegova kalibracija predmet trajnog spora.
Kod pozitivnih eksternalija država može koristiti subvencije, javno financiranje ili porezne olakšice. Ako obrazovanje, cijepljenje ili istraživanje i razvoj stvaraju društvene koristi veće od privatnih koristi pojedinca, država ih može poticati kako bi se povećala njihova razina. Zato države financiraju škole i sveučilišta, subvencioniraju istraživanje, organiziraju javnozdravstvene kampanje ili financiraju preventivne programe.
Država eksternalije može rješavati i regulacijom. Može propisati maksimalne emisije, tehničke standarde, obveznu uporabu sigurnosne opreme, zabranu odlaganja otpada u rijeke ili standarde energetske učinkovitosti. Može koristiti i tržišne instrumente poput trgovanja emisijskim dozvolama.
## Coaseov teorem i vlasnička prava
Pigouova logika eksternaliju promatra kao jednosmjernu krivnju u kojoj zagađivač nanosi štetu žrtvi, pa zaključuje da država mora korektivnim porezom ili regulacijom prisiliti zagađivača da internalizira vanjski trošak. Coase [-@coase1960] tu logiku okreće. Eksternalija je nusproizvod interakcije obiju strana, a ne svojstvo jedne od njih. Tvornica koja ispušta dim u nenaseljenom kraju ne stvara nikakav vanjski trošak. Tek kad se nizvodno nasele ribari, oko istog resursa nastaje sukob, pa je šteta jednako tako posljedica njihove prisutnosti kao i tvorničke proizvodnje. Zabrani li država tvornici rad da zaštiti ribare, štetu nanosi vlasnicima, radnicima i potrošačima koji ostaju bez proizvoda. Pitanje s gledišta blagostanja zato nije kako kazniti zagađivača nego kako izbjeći težu od dviju šteta i pronaći razinu aktivnosti koja maksimizira ukupnu vrijednost resursa. Tako preformuliranu, eksternaliju ne definira tržišni neuspjeh nego nedovoljno određena vlasnička prava nad oskudnim dobrom.
Coaseov se uvid najlakše pokaže na modelu pregovaranja dvaju aktera. Tvornica $F$ proizvodi količinu $q$ uz profit $\pi(q)$, pri čemu je funkcija strogo konkavna ($\pi'(q) > 0$, $\pi''(q) < 0$) sve do količine privatnog maksimuma $q_m$, gdje granični profit pada na nulu, $\pi'(q_m) = 0$. Ista proizvodnja stvara zagađenje koje ribarima nizvodno nanosi štetu $D(q)$, koja raste sa sve većom graničnom štetom ($D'(q) > 0$, $D''(q) > 0$). Društveno blagostanje zbroj je profita tvornice umanjen za štetu ribara,
$$W(q) = \pi(q) - D(q).$$
Društveno optimalna proizvodnja $q^*$ maksimizira to blagostanje. Deriviranje po $q$ i izjednačavanje s nulom daje uvjet prvoga reda
$$W'(q^*) = \pi'(q^*) - D'(q^*) = 0 \quad\Longleftrightarrow\quad \pi'(q^*) = D'(q^*),$$
u kojem je granični profit tvornice jednak graničnoj šteti ribara. Pigouovo rješenje do iste točke dolazi izvana, porezom po jedinici $t = D'(q^*)$, koji tvorničin privatni trošak izjednačuje s društvenim. Coase pokazuje da pregovori daju isti $q^*$ neovisno o tome kome su prava dodijeljena, dokle god su transakcijski troškovi zanemarivi.
Pripadnu li prava ribarima, oni imaju pravo na čistu vodu, pa proizvodnja kreće od nule i tvornica im mora platiti naknadu $P$ za pravo na zagađenje. Tvornica pristaje platiti samo dok je naknada manja od profita koji ostvaruje, $P \le \pi(q)$, a ribari je primaju samo dok premašuje štetu, $P \ge D(q)$. Za svaku dodatnu jedinicu tvornica je spremna dati do $\pi'(q)$, a ribari je prihvatiti za bilo što iznad $D'(q)$. Sve dok vrijedi
$$\pi'(q) > D'(q),$$
postoji raspon naknade koji objema stranama koristi, pa proizvodnja raste. Pregovori staju kad se granice izjednače, upravo u $q^*$, jer bi svaka daljnja jedinica nosila veću štetu od profita.
Pripadnu li prava tvornici, ona slobodno kreće od svog privatnog maksimuma $q_m$, gdje ribari trpe najveću štetu, pa sada oni plaćaju njoj za smanjenje proizvodnje. Za smanjenje s $q_m$ na $q$ ribari su spremni dati do iznosa izbjegnute štete $D(q_m) - D(q)$, a tvornica pristaje samo ako plaćanje premašuje propušteni profit $\pi(q_m) - \pi(q)$. Na margini ribari nude do $D'(q)$, a tvornica prihvaća sve iznad $\pi'(q)$, pa se proizvodnja smanjuje sve dok vrijedi
$$D'(q) > \pi'(q).$$
I ovdje se pregovori zaustavljaju kad se granice izjednače, opet točno u $q^*$. Konačna je alokacija time identična bez obzira na to je li pravo isprva pripalo zagađivaču ili žrtvi, čime je Coaseov teorem dokazan.
Neutralnost vrijedi za učinkovitost, ne i za raspodjelu. Tko kome plaća ovisi upravo o početnoj dodjeli prava. Pripadnu li ona ribarima, tvornica im plaća za pravo na rad, pa ribari ostvaruju neto dobitak, a profit tvornice pada za iznos naknade. Pripadnu li tvornici, ribari plaćaju njoj, snose financijski teret, a tvornica ubire prihod veći od svog proizvodnog profita. Onaj tko odlučuje o dodjeli prava ne rješava problem učinkovitosti, jer tržište do optimuma dolazi u oba slučaja, nego pitanje pravednosti početne raspodjele bogatstva. Vlasnička prava tako postaju instrument preraspodjele koji djeluje bez gubitka ukupne učinkovitosti, što je jedna od trajnih lekcija konstitucionalne ekonomike za dizajn javnih politika.
## Transakcijski troškovi i granice pregovaranja
Dokaz vrijedi uz pretpostavku nultih transakcijskih troškova, koju Coase u drugom dijelu rada napušta. U stvarnom svijetu pregovaranje, prikupljanje informacija, koordinacija i provedba ugovora troše stvarne resurse, koje Williamson uspoređuje s trenjem u stroju, energijom koja se gubi koliko god dobar bio nacrt [@williamson1985]. Ti se troškovi javljaju u tri faze. Prije pregovora akteri moraju utvrditi tko su pogođene strane i koliko vrijedi šteta, što kod masovnog zagađenja s tisućama pogođenih i stotinama izvora postaje logistički nesavladivo. Tijekom pregovora javlja se strateško ponašanje, od zadržavanja pristanka u nadi za većom isplatom do Olsonova slobodnog jahača, u kojem pojedinci unutar skupine žrtava izbjegavaju svoj dio naknade očekujući da će ga snositi drugi [@olson1965]. Nakon dogovora strane moraju nadzirati ponašanje druge strane i provoditi ugovor pred sudom, pa bez jeftine pravne zaštite troškovi nadzora mogu poništiti svaku korist od pregovora. Institucije koje određuju visinu tih troškova, pravila igre koja pregovaranje čine jeftinijim ili skupljim, sustavno se razmatraju u poglavlju o institucionalnoj ekonomici.
Kad su ti troškovi visoki, privatni akteri ne mogu pregovarati, tržište ostaje u neučinkovitoj točki s prekomjernim zagađenjem, a početna dodjela prava prestaje biti neutralna. Pravo tada valja dodijeliti strani koja resursom može upravljati uz najniže troškove. Coaseov uvid time postaje korektiv automatskom povjerenju u državnu intervenciju. Tradicionalni pigouovski pristup pati od onoga što Demsetz naziva zabludom nirvane, usporedbom stvarnih, nesavršenih tržišta s idealiziranim planerom koji bez troška i s potpunim informacijama bira optimum [@demsetz1969]. Ni državna intervencija nije besplatna. Porezna administracija, regulacija i sudski postupci stvaraju vlastite troškove, a Pigouov porez pretpostavlja da država poznaje točne oblike funkcija profita i štete, premda su te informacije privatne i raspršene u smislu Hayekove analize znanja [@hayek1945].
Sami troškovi intervencije ne ostaju neutralni jer regulacija otvara prostor lovu na rentu, gdje interesne skupine umjesto pregovora s pogođenim građanima usmjeravaju sredstva u lobiranje oko poreznih stopa i standarda, pa ishod intervencije zna stvoriti veći trošak od neuspjeha koji je trebala ispraviti. Coaseova logika zato nalaže usporedbu nesavršenih institucija umjesto vjere u savršenu, decentralizirano pregovaranje sa svojim troškovima, državnu regulaciju s rizikom državnog neuspjeha, ili toleriranje eksternalije kad je svako rješenje skuplje od same štete [@north1990].
Logika pregovaranja oko prava nije ostala teorijska. Europska unija svoj sustav trgovanja emisijama gradi upravo na njoj.
::: {.callout-praksa}
Europski sustav trgovanja emisijama (EU ETS) zamjenjuje jedinstveni porez na ugljik prenosivim emisijskim kvotama. Ukupna dopuštena emisija strogo je ograničena, a kvote se dodjeljuju ili prodaju postrojenjima koja njima potom trguju. Poduzeća koja emisije mogu smanjiti jeftino to čine i višak kvota prodaju onima kojima je prilagodba skupa, pa tržište zadani ekološki cilj postiže uz najmanji ukupni trošak. Granice modela vide se na istom mjestu na kojem ih predviđa teorija. Transakcijski troškovi opterećuju manja poduzeća, a moćni industrijski lobiji pritišću na besplatnu dodjelu kvota i blaže uvozne prilagodbe, čime se teorijska optimalnost sustava narušava na ustavnoj razini, ondje gdje se pišu pravila.[^wp-ets]
:::
[^wp-ets]: Daljnje čitanje: Clò (2010), [*Grandfathering, auctioning and Carbon Leakage*](https://ideas.repec.org/a/eee/enepol/v38y2010i5p2420-2430.html), Energy Policy 38(5).
Gdje su prava jasna, a pogođenih malo, pregovor radi i bez tržišne infrastrukture poput EU ETS-a.
::: {.callout-praksa}
Oko velikih zračnih luka u Sjedinjenim Državama buka noćnih letova godinama je izvor tužbi okolnih kućanstava. Budući da je pravo stanara na miran posjed pravno neupitno, a broj pogođenih kuća ograničen, troškovi pregovaranja bili su podnošljivi. Zračne kompanije i uprave luka zaobišle su rigidnu regulaciju i ponudile izravne naknade, preuzele ugradnju zvučne izolacije i klimatizacije na tisućama kuća ili otkupile zemljište iznad tržišne cijene. Luke su zadržale noćni rad ključan za teretni promet, a stanari dobili naknadu i zaštitu, uz minimalnu ulogu države.[^wp-zracne-luke]
:::
[^wp-zracne-luke]: Daljnje čitanje: Wolfe, Malina, Barrett i Waitz (2016), [*Costs and benefits of US aviation noise land-use policies*](https://doi.org/10.1016/j.trd.2016.02.010), Transportation Research Part D 44.
Hrvatski priobalni sukob pokazuje zrcalni slučaj, u kojem nejasna prava i visoki troškovi koordinacije pregovor unaprijed isključuju.
<!-- TODO(coauthor): jadranski primjer je Hrvatska-specifičan i prema STYLE.md/ENRICHMENT rezerviran za koautore — Milan/Petra trebaju potvrditi ili zamijeniti prije finalne verzije. -->
::: {.callout-praksa}
Na jadranskoj obali masovni turizam i lokalno stanovništvo sukobljavaju se oko buke, zagušenja i devastacije pomorskog dobra. Da su prava nad obalom i mirom jasno dodijeljena zajednici, a troškovi organiziranja niski, problem bi se mogao riješiti naknadom, zvučnom izolacijom ili ulaganjem u lokalnu infrastrukturu u zamjenu za dogovorenu razinu buke. U praksi je pregovor blokiran. Pomorsko dobro ustavno je određeno kao opće dobro pod zaštitom države, što ostavlja nedorečenim tko zapravo raspolaže pravom odlučivanja, a troškovi koordinacije velikog broja raspršenih stanara nasuprot promjenjivim turističkim subjektima previsoki su. Sukob se zato prepušta državnoj regulaciji i lokalnim vlastima, sa svojim troškovima sporih inspekcija, neujednačene primjene i sumnji u pogodovanje.
:::
Tablica koja slijedi sažima dvije paradigme rješavanja eksternalija, od dijagnoze uzroka do uloge koju u svakoj od njih ima država.
| Dimenzija | Pigouov pristup | Coaseov pristup |
|---|---|---|
| Uzrok problema | Tržišni neuspjeh, cijena ne uključuje društveni trošak | Nedovoljno određena vlasnička prava i visoki transakcijski troškovi |
| Priroda učinka | Jednosmjerna krivnja zagađivača nad pasivnom žrtvom | Recipročna interakcija dviju strana oko oskudnog resursa |
| Glavni instrument | Porezi, subvencije ili administrativna regulacija | Određivanje prava i dobrovoljni pregovori |
| Uloga države | Planer koji računa optimum i propisuje mjere | Čuvar pravila, sudstva i ugovornog poretka |
| Informacijski zahtjevi | Visoki, država mora znati oblike funkcija troška i koristi | Niski, akteri sami raspolažu informacijama |
| Glavna prepreka | Državni neuspjeh, lobiranje i informacijski deficit | Visoki transakcijski troškovi i strateško ponašanje |
: Pigouov i Coaseov pristup eksternalijama. Izrada autora prema @pigou1920 i @coase1960. {#tbl-pigou-coase}
Coaseova poruka nije da država nema ulogu, nego da kvalitetan okvir koji prava jasno određuje, štiti i čini prenosivima često znači više za blagostanje od samog opsega intervencije. Što su pravila jasnija, a troškovi pregovaranja i sudske zaštite niži, to je manja potreba za skupom regulacijom. Prije nego što posegne za novim porezom ili zabranom, odgovorna politika najprije provjerava može li stvoriti uvjete u kojima problem riješe sami akteri. Time se sukob oko eksternalije seli iz domene znanja, gdje je tržište bilo neuspješno, u domenu informacija o tuđim namjerama i svojstvima, što je tema sljedećeg oblika tržišnog neuspjeha.
## Asimetrične informacije
Treći oblik tržišnog neuspjeha su **asimetrične informacije**. Tržišta funkcioniraju najbolje kada kupci i prodavatelji, poslodavci i radnici, banke i dužnici ili osiguravatelji i osiguranici raspolažu relevantnim informacijama. U stvarnosti to često nije slučaj. Jedna strana u razmjeni može znati mnogo više od druge, a ta informacijska neravnoteža može dovesti do neučinkovitih ili nepravednih ishoda, bilo prije sklapanja ugovora bilo nakon njega.
::: {#def-asimetricne-informacije}
**Asimetrične informacije** nastaju kada jedna strana u razmjeni raspolaže relevantnim znanjem koje druga strana nema, što može dovesti do nepovoljnog izbora (*adverse selection*, pred sklapanjem ugovora) ili moralnog hazarda (*moral hazard*, nakon sklapanja ugovora). Oba mehanizma smanjuju učinkovitost tržišnog ishoda.
:::
Najpoznatiji primjer dao je George Akerlof u radu o tržištu „limuna", odnosno rabljenih automobila loše kvalitete [@akerlof1970]. Prodavatelj rabljenog automobila zna više o stvarnom stanju automobila od kupca. Kupac ne može lako razlikovati kvalitetan automobil od lošeg, pa je spreman platiti samo prosječnu cijenu. Ta prosječna cijena može biti preniska za vlasnike kvalitetnih automobila, koji se zato povlače s tržišta. Na tržištu ostaju uglavnom lošiji automobili. Rezultat je pad kvalitete i smanjenje razmjene, iako bi u uvjetima potpunih informacija tržište moglo bolje funkcionirati.
Asimetrične informacije stvaraju dva važna problema, **nepovoljan izbor** i **moralni hazard**. Nepovoljan izbor nastaje prije sklapanja ugovora. To je situacija u kojoj se zbog informacijske neravnoteže na tržištu zadržavaju lošiji rizici ili lošija kvaliteta. Primjer je tržište zdravstvenog osiguranja. Osobe koje znaju da imaju veći zdravstveni rizik sklonije su kupiti osiguranje, dok se zdraviji pojedinci mogu povući ako je premija previsoka. Ako osiguravatelj ne može dobro razlikovati rizične i manje rizične pojedince, premije rastu, a tržište može postati nestabilno.
Graf koji slijedi prikazuje kako nepovoljan izbor postupno istiskuje kvalitetnu robu s tržišta. Kada kupci ne razlikuju kvalitetu, spremni su platiti samo prosječnu cijenu, a ta je cijena preniska za prodavače kvalitetne robe (krivulja S~visoka~), pa oni napuštaju tržište. Ostaje samo loša roba (krivulja S~loša~), a ravnoteža se pomiče s točke (Q₁, P~visoka~) na (Q₂, P~niska~), pri čemu se u graničnim slučajevima tržište može potpuno urušiti. Graf je interaktivan, pa klizači mijenjaju premiju za kvalitetu i elastičnost potražnje.
::: {.content-visible when-format="html"}
```{ojs}
//| echo: false
viewof asi_controls = Inputs.form({
qprem: Inputs.range([5, 40], {value: 20, step: 1, label: "Premija za kvalitetu (Δ):"}),
eps_d_asi: Inputs.range([0.3, 2.5], {value: 1.0, step: 0.05, label: "Elastičnost potražnje |εD|:"}),
eps_s_asi: Inputs.range([0.3, 2.5], {value: 1.0, step: 0.05, label: "Elastičnost ponude εS:"})
})
```
```{ojs}
//| echo: false
qprem_val = asi_controls.qprem
```
```{ojs}
//| echo: false
eps_d_asi = asi_controls.eps_d_asi
```
```{ojs}
//| echo: false
eps_s_asi = asi_controls.eps_s_asi
```
```{ojs}
//| echo: false
//| label: fig-nepovoljan-izbor
//| fig-cap: "Tržište limuna i nepovoljan izbor: informacijska asimetrija tjera kvalitetne prodavače s tržišta, pa ravnoteža pada s (Q₁, P_visoka) na (Q₂, P_niska)."
//| fig-alt: "Graf prikazuje jednu silaznu krivulju potražnje i dvije uzlazne krivulje ponude: S_loša (niža) i S_visoka (viša, isprekidana). Crvena strelica pokazuje pomak ponude prema dolje, dok se ravnoteža pomiče ulijevo i prema nižoj cijeni, ilustrirajući kako informacijska asimetrija urušava tržište kvalitetne robe."
{
// Anchor low-quality equilibrium at (Q2, P_niska) = (60, 50)
const Q2 = 60;
const P_low = 50;
const Qmax = 110;
const Pmax = 120;
const dQ = qprem_val;
// Demand slope from elasticity at low-quality eq
const b_d = P_low / (Q2 * eps_d_asi);
const a_d = P_low + b_d * Q2; // D: P = a_d - b_d*Q
// Supply slope from elasticity at low-quality eq
const b_s = P_low / (Q2 * eps_s_asi);
const c_s = P_low - b_s * Q2; // S_low: P = c_s + b_s*Q
// S_high shifted up by Δ: P = (c_s + Δ) + b_s*Q
// High-quality equilibrium: D = S_high
// a_d - b_d*Q = (c_s + Δ) + b_s*Q
const Q1 = (a_d - c_s - dQ) / (b_d + b_s);
const P_high = a_d - b_d * Q1;
const Qs = d3.range(0, Qmax + 1);
const demand = Qs.map(q => ({Q: q, P: a_d - b_d * q})).filter(p => p.P >= 0 && p.P <= Pmax);
const sLow = Qs.map(q => ({Q: q, P: c_s + b_s * q})).filter(p => p.P >= 0 && p.P <= Pmax);
const sHigh = Qs.map(q => ({Q: q, P: c_s + dQ + b_s * q})).filter(p => p.P >= 0 && p.P <= Pmax);
// Quantity reduction & price drop
const qDrop = Q2 - Q1;
const pDrop = P_high - P_low;
// Detect potential market collapse: high-quality eq quantity ≤ 0
const collapse = Q1 <= 0;
return Plot.plot({
width: 760,
height: 500,
marginLeft: 65,
marginBottom: 55,
style: {fontSize: "12px", fontFamily: "Public Sans, system-ui, sans-serif", color: "#3A332D"},
x: {label: "Količina (Q) →", domain: [0, Qmax], grid: false},
y: {label: "↑ Cijena (P)", domain: [0, Pmax], grid: true},
marks: [
Plot.ruleY([0], {stroke: "#C9C3B8"}),
// Curves
Plot.line(demand, {x: "Q", y: "P", stroke: "#2D5A8E", strokeWidth: 2.5}),
Plot.line(sLow, {x: "Q", y: "P", stroke: "#4A6B5C", strokeWidth: 2}),
Plot.line(sHigh, {x: "Q", y: "P", stroke: "#4A6B5C", strokeWidth: 2, strokeDasharray: "6,4"}),
// Shift arrow from S_high to S_low at a representative Q (Q2 * 0.6)
Plot.link(
[{x1: Q2 * 0.55, y1: c_s + dQ + b_s * Q2 * 0.55,
x2: Q2 * 0.55, y2: c_s + b_s * Q2 * 0.55}],
{x1: "x1", y1: "y1", x2: "x2", y2: "y2",
stroke: "#6B1F26", strokeWidth: 2, markerEnd: "arrow"}),
// Dashed price/quantity guides
Plot.ruleY([P_high], {stroke: "#6B6357", strokeDasharray: "4,3"}),
Plot.ruleY([P_low], {stroke: "#6B6357", strokeDasharray: "4,3"}),
Plot.ruleX([Q1], {y1: 0, y2: P_high, stroke: "#6B6357", strokeDasharray: "4,3"}),
Plot.ruleX([Q2], {y1: 0, y2: P_low, stroke: "#6B6357", strokeDasharray: "4,3"}),
// Equilibrium dots
Plot.dot([{Q: Q1, P: P_high}],
{x: "Q", y: "P", r: 5, fill: "#1C1916", stroke: "white", strokeWidth: 2}),
Plot.dot([{Q: Q2, P: P_low}],
{x: "Q", y: "P", r: 5, fill: "#6B1F26", stroke: "white", strokeWidth: 2}),
// Curve labels
Plot.text([{x: Qmax * 0.82, y: a_d - b_d * Qmax * 0.82, label: `D (|εD|=${eps_d_asi.toFixed(2)})`}],
{x: "x", y: "y", text: "label", fill: "#2D5A8E", fontSize: 12, fontWeight: 600, dy: -8}),
Plot.text([{x: Qmax * 0.82, y: c_s + b_s * Qmax * 0.82, label: `S_loša (εS=${eps_s_asi.toFixed(2)})`}],
{x: "x", y: "y", text: "label", fill: "#4A6B5C", fontSize: 12, fontWeight: 600, dy: -8}),
Plot.text([{x: Qmax * 0.7, y: c_s + dQ + b_s * Qmax * 0.7, label: `S_visoka (Δ=${dQ})`}],
{x: "x", y: "y", text: "label", fill: "#4A6B5C", fontSize: 12, fontWeight: 600, dy: -8}),
// Price labels
Plot.text([{x: 1, y: P_high, label: `P_visoka = ${P_high.toFixed(1)}`}],
{x: "x", y: "y", text: "label", textAnchor: "start", dy: -7, fontSize: 11, fill: "#1C1916"}),
Plot.text([{x: 1, y: P_low, label: `P_niska = ${P_low.toFixed(1)}`}],
{x: "x", y: "y", text: "label", textAnchor: "start", dy: 12, fontSize: 11, fill: "#6B1F26"}),
// Quantity labels
Plot.text([{x: Q1, y: 2, label: `Q₁ = ${Q1.toFixed(1)}`}],
{x: "x", y: "y", text: "label", textAnchor: "middle", fontSize: 11, fill: "#1C1916"}),
Plot.text([{x: Q2, y: 2, label: `Q₂ = ${Q2.toFixed(1)}`}],
{x: "x", y: "y", text: "label", textAnchor: "middle", fontSize: 11, fill: "#6B1F26"}),
// Top readouts
Plot.text([{x: 2, y: Pmax * 0.97,
label: collapse ? "⚠ Tržište se urušava (Q₁ ≤ 0)" : `Pad količine: ΔQ = ${qDrop.toFixed(1)}`}],
{x: "x", y: "y", text: "label", textAnchor: "start",
fontSize: 14, fill: "#6B1F26", fontWeight: 700}),
Plot.text([{x: 2, y: Pmax * 0.91,
label: `Pad cijene: ΔP = ${pDrop.toFixed(1)}`}],
{x: "x", y: "y", text: "label", textAnchor: "start",
fontSize: 13, fill: "#1C1916", fontWeight: 600})
]
});
}
```
**Što isprobati.** (1) Povećavajte premiju za kvalitetu ([Δ]{.var}) i pratite kako se S_visoka sve više odiže od S_loša, pa ravnoteža kvalitetne robe (Q₁, P_visoka) klizi ulijevo i prema gore, a pad količine ΔQ raste. (2) Gurnite (Δ) dovoljno visoko i vidjet ćete kako Q₁ pada na nulu, pa se pojavljuje upozorenje da se tržište kvalitetne robe potpuno urušava, baš kao u Akerlofovu primjeru limuna. (3) Sada uz visoku premiju smanjite elastičnost potražnje [|εD|]{.var} prema 0,3 i primijetite protuintuitivan ishod, naime da kruta potražnja prigušuje pad količine, ali zato cijenu kvalitetne robe gura znatno više, pa se asimetrija očituje skokom cijene umjesto nestankom količine.
:::
::: {.content-visible when-format="pdf"}
```{r}
#| label: fig-nepovoljan-izbor-print
#| echo: false
#| fig-cap: "Tržište limuna i nepovoljan izbor: informacijska asimetrija tjera kvalitetne prodavače s tržišta, pa ravnoteža pada s (Q₁, P_visoka) na (Q₂, P_niska)."
#| fig-alt: "Graf prikazuje jednu silaznu krivulju potražnje i dvije uzlazne krivulje ponude: S_loša (niža) i S_visoka (viša, isprekidana). Crvena strelica pokazuje pomak ponude prema dolje, dok se ravnoteža pomiče ulijevo i prema nižoj cijeni, ilustrirajući kako informacijska asimetrija urušava tržište kvalitetne robe."
#| fig-width: 7.6
#| fig-height: 5.0
# Statički PDF blizanac interaktivnog OJS grafa (zadane vrijednosti klizača
# Δ = 20, |εD| = 1.0, εS = 1.0).
source("R/setup.R")
# --- Zadane vrijednosti klizača (hardkodirane) -----------------------------
dQ <- 20 # premija za kvalitetu Δ (zadana vrijednost klizača qprem)
eps_d_asi <- 1.0 # elastičnost potražnje |εD| (zadana vrijednost klizača)
eps_s_asi <- 1.0 # elastičnost ponude εS (zadana vrijednost klizača)
# --- Fiksne/izvedene konstante (identično OJS-u) ---------------------------
Q2 <- 60 # količina u ravnoteži loše kvalitete
P_low <- 50 # cijena u ravnoteži loše kvalitete
Qmax <- 110
Pmax <- 120
# Nagib potražnje iz elastičnosti u ravnoteži loše kvalitete
b_d <- P_low / (Q2 * eps_d_asi)
a_d <- P_low + b_d * Q2 # D: P = a_d - b_d*Q
# Nagib ponude iz elastičnosti u ravnoteži loše kvalitete
b_s <- P_low / (Q2 * eps_s_asi)
c_s <- P_low - b_s * Q2 # S_loša: P = c_s + b_s*Q
# S_visoka pomaknuta gore za Δ: P = (c_s + Δ) + b_s*Q
# Ravnoteža kvalitetne robe: D = S_visoka -> Q1 = (a_d - c_s - Δ)/(b_d + b_s)
Q1 <- (a_d - c_s - dQ) / (b_d + b_s) # = 48.0 pri zadanim vrijednostima
P_high <- a_d - b_d * Q1 # = 60.0 pri zadanim vrijednostima
# Prikazani izračuni (iste formule kao u OJS-u)
qDrop <- Q2 - Q1 # pad količine ΔQ = 12.0
pDrop <- P_high - P_low # pad cijene ΔP = 10.0
collapse <- Q1 <= 0 # urušavanje tržišta kvalitetne robe
# --- Krivulje uzorkovane na Q = 0..Qmax, filtrirane na 0 <= P <= Pmax ------
Qs <- 0:Qmax
demand <- subset(data.frame(Q = Qs, P = a_d - b_d * Qs), P >= 0 & P <= Pmax)
sLow <- subset(data.frame(Q = Qs, P = c_s + b_s * Qs), P >= 0 & P <= Pmax)
sHigh <- subset(data.frame(Q = Qs, P = c_s + dQ + b_s * Qs), P >= 0 & P <= Pmax)
# Reprezentativni Q za strelicu pomaka (Q2 * 0.55)
arr_x <- Q2 * 0.55
arr_y1 <- c_s + dQ + b_s * arr_x # vrh (S_visoka)
arr_y2 <- c_s + b_s * arr_x # dno (S_loša)
# Tekst gornjeg očitanja #1 (upozorenje ako se tržište urušava)
readout1 <- if (collapse) "Trziste se urusava (Q1 <= 0)" else sprintf("Pad kolicine: dQ = %.1f", qDrop)
ggplot() +
# Bazna os (ruleY na 0)
geom_hline(yintercept = 0, color = "#CCCCCC") +
# Krivulje
geom_line(data = demand, aes(Q, P), color = "#1A1A1A", linewidth = 1.0) +
geom_line(data = sLow, aes(Q, P), color = "#7A7A7A", linewidth = 0.8) +
geom_line(data = sHigh, aes(Q, P), color = "#7A7A7A", linewidth = 0.8,
linetype = "dashed") +
# Strelica pomaka ponude prema dolje (S_visoka -> S_loša)
annotate("segment", x = arr_x, xend = arr_x, y = arr_y1, yend = arr_y2,
color = "#4D4D4D", linewidth = 0.8,
arrow = arrow(length = unit(0.18, "cm"), type = "closed")) +
# Isprekidane cjenovne/količinske vodilice
geom_hline(yintercept = P_high, color = "#8C8C8C", linetype = "dashed", linewidth = 0.4) +
geom_hline(yintercept = P_low, color = "#8C8C8C", linetype = "dashed", linewidth = 0.4) +
annotate("segment", x = Q1, xend = Q1, y = 0, yend = P_high,
color = "#8C8C8C", linetype = "dashed", linewidth = 0.4) +
annotate("segment", x = Q2, xend = Q2, y = 0, yend = P_low,
color = "#8C8C8C", linetype = "dashed", linewidth = 0.4) +
# Ravnotežne točke
annotate("point", x = Q1, y = P_high, size = 3, color = "#000000") +
annotate("point", x = Q2, y = P_low, size = 3, color = "#4D4D4D") +
# Oznake krivulja
annotate("text", x = Qmax * 0.82, y = a_d - b_d * Qmax * 0.82,
label = sprintf("D (|eD|=%.2f)", eps_d_asi),
color = "#1A1A1A", fontface = "bold", size = 3.6, vjust = -0.6) +
annotate("text", x = Qmax * 0.82, y = c_s + b_s * Qmax * 0.82,
label = sprintf("S_loša (eS=%.2f)", eps_s_asi),
color = "#7A7A7A", fontface = "bold", size = 3.6, vjust = -0.6) +
annotate("text", x = Qmax * 0.7, y = c_s + dQ + b_s * Qmax * 0.7,
label = sprintf("S_visoka (delta=%g)", dQ),
color = "#7A7A7A", fontface = "bold", size = 3.6, vjust = -0.6) +
# Cjenovne oznake
annotate("text", x = 1, y = P_high, label = sprintf("P_visoka = %.1f", P_high),
hjust = 0, vjust = -0.6, size = 3.3, color = "#000000") +
annotate("text", x = 1, y = P_low, label = sprintf("P_niska = %.1f", P_low),
hjust = 0, vjust = 1.4, size = 3.3, color = "#4D4D4D") +
# Količinske oznake
annotate("text", x = Q1, y = 2, label = sprintf("Q_1 = %.1f", Q1),
hjust = 0.5, size = 3.3, color = "#000000") +
annotate("text", x = Q2, y = 2, label = sprintf("Q_2 = %.1f", Q2),
hjust = 0.5, size = 3.3, color = "#4D4D4D") +
# Gornja očitanja
annotate("text", x = 2, y = Pmax * 0.97, label = readout1,
hjust = 0, fontface = "bold", size = 4.2, color = "#4D4D4D") +
annotate("text", x = 2, y = Pmax * 0.91,
label = sprintf("Pad cijene: dP = %.1f", pDrop),
hjust = 0, fontface = "bold", size = 3.9, color = "#000000") +
scale_x_continuous(limits = c(0, Qmax), expand = c(0, 0)) +
scale_y_continuous(limits = c(0, Pmax), expand = c(0, 0)) +
labs(x = "Količina (Q)", y = "Cijena (P)") +
theme_pubfin()
```
:::
Nepovoljan izbor pokazuje kako informacijska neravnoteža djeluje već prije sklapanja ugovora, kroz odabir onih koji u razmjenu ulaze. Drugi se njezin oblik javlja tek nakon što je ugovor sklopljen, kada zaštita koju on pruža počne mijenjati ponašanje strane koja je njome pokrivena.
## Moralni hazard i informacijske mjere države
Moralni hazard nastaje nakon sklapanja ugovora. To je situacija u kojoj osiguranje ili zaštita mijenja ponašanje pojedinca jer on više ne snosi puni trošak svojih odluka. Osoba koja ima potpuno osiguranje može biti manje oprezna. Banka koja očekuje da će je država spasiti u krizi može preuzimati veće rizike. Poduzeće koje očekuje stalne državne potpore može manje ulagati u učinkovitost i prilagodbu. Klasična rješenja uključuju dijeljenje rizika kroz franšizu, suosiguranje i nadzor.
Graf koji slijedi prikazuje kako osiguranje mijenja razinu rizika koju akter dragovoljno preuzima. Agent bira razinu rizičnog ponašanja e uspoređujući privatnu korist, primjerice brzinu, prinos ili udobnost, s troškom mogućih šteta. Bez osiguranja snosi puni trošak C(e) i bira nisku razinu rizika e\*, a s osiguranjem osiguratelj pokriva dio (θ) štete, pa agent percipira samo (1−θ)·C(e), krivulja postaje plića i bira višu razinu rizika e~M~ > e\*. Razlika je posljedica moralnog hazarda. Graf je interaktivan, pa klizači mijenjaju pokriće osiguranja i konveksnost troška.
::: {.content-visible when-format="html"}
```{ojs}
//| echo: false
viewof mh_controls = Inputs.form({
theta: Inputs.range([0, 0.9], {value: 0.5, step: 0.05, label: "Pokriće osiguranja (θ):"}),
k: Inputs.range([0.05, 0.5], {value: 0.15, step: 0.01, label: "Konveksnost troška (k):"}),
m: Inputs.range([0.5, 3.0], {value: 1.5, step: 0.05, label: "Marginalna korist od rizika (m):"})
})
```
```{ojs}
//| echo: false
mh_theta = mh_controls.theta
```
```{ojs}
//| echo: false
mh_k = mh_controls.k
```
```{ojs}
//| echo: false
mh_m = mh_controls.m
```
```{ojs}
//| echo: false
//| label: fig-moralni-hazard
//| fig-cap: "Moralni hazard: osiguranje smanjuje percipiranu krivulju troška, pa agent bira višu razinu rizičnog ponašanja e_M umjesto optimalne e*."
//| fig-alt: "Graf prikazuje dvije konveksne krivulje troška kao funkciju razine rizičnog ponašanja e. Crvena isprekidana krivulja Bez osiguranja strmija je, a crna puna krivulja S osiguranjem položenija jer agent percipira samo dio troška. Optimalni e* je lijevo od e_M kojeg agent bira uz osiguranje."
{
const theta = mh_theta;
const k = mh_k;
const m = mh_m;
const emax = 12;
const Cmax = 18;
// Cost function: C(e) = 1 + k*e^2 (convex)
// Without insurance, agent sees full C(e)
// With insurance, agent perceives (1 - theta) * variable cost: 1 + k*(1 - theta)*e^2
// Agent's chosen e: MB = m, MC_perceived = 2*k_eff*e => e = m / (2*k_eff)
const eStar = m / (2 * k);
const eM = m / (2 * k * (1 - theta));
const eMshown = Math.min(eM, emax * 0.98);
const es = d3.range(0, emax + 0.05, 0.05);
const cFull = es.map(e => ({e: e, C: 1 + k * e * e}))
.filter(p => p.C <= Cmax);
const cIns = es.map(e => ({e: e, C: 1 + k * (1 - theta) * e * e}))
.filter(p => p.C <= Cmax);
// Costs at the two chosen e levels (real, social cost — on the full curve)
const C_at_eStar = 1 + k * eStar * eStar;
const C_at_eM = 1 + k * Math.min(eM, emax) * Math.min(eM, emax);
// Excess social cost from moral hazard (vs net benefit gained):
// Cost increase: C(eM) - C(e*); Benefit increase: m*(eM - e*)
const dwl = Math.max(0, (C_at_eM - C_at_eStar) - m * (eM - eStar));
return Plot.plot({
width: 760,
height: 500,
marginLeft: 70,
marginBottom: 55,
style: {fontSize: "12px", fontFamily: "Public Sans, system-ui, sans-serif", color: "#3A332D"},
x: {label: "Rizično ponašanje (e) →", domain: [0, emax], grid: false},
y: {label: "↑ Trošak / šteta", domain: [0, Cmax], grid: true},
marks: [
Plot.ruleY([0], {stroke: "#C9C3B8"}),
// Cost curves
Plot.line(cFull, {x: "e", y: "C", stroke: "#6B1F26", strokeWidth: 2.5, strokeDasharray: "6,4"}),
Plot.line(cIns, {x: "e", y: "C", stroke: "#1C1916", strokeWidth: 2.5}),
// Dashed verticals at e* and eM
Plot.ruleX([eStar], {y1: 0, y2: 1 + k * eStar * eStar, stroke: "#6B6357", strokeDasharray: "4,3"}),
Plot.ruleX([eMshown], {y1: 0, y2: 1 + k * (1 - theta) * eMshown * eMshown,
stroke: "#6B6357", strokeDasharray: "4,3"}),
// Equilibrium dots: each on the curve the agent actually faces
Plot.dot([{e: eStar, C: 1 + k * eStar * eStar}],
{x: "e", y: "C", r: 5, fill: "#6B1F26", stroke: "white", strokeWidth: 2}),
Plot.dot([{e: eMshown, C: 1 + k * (1 - theta) * eMshown * eMshown}],
{x: "e", y: "C", r: 5, fill: "#1C1916", stroke: "white", strokeWidth: 2}),
// Curve labels
Plot.text([{x: emax * 0.78, y: 1 + k * (emax * 0.78) * (emax * 0.78), label: "Bez osiguranja"}],
{x: "x", y: "y", text: "label", fill: "#6B1F26", fontSize: 12, fontWeight: 700,
dy: -10, textAnchor: "end"}),
Plot.text([{x: emax * 0.88, y: 1 + k * (1 - theta) * (emax * 0.88) * (emax * 0.88),
label: "S osiguranjem (moralni hazard)"}],
{x: "x", y: "y", text: "label", fill: "#1C1916", fontSize: 12, fontWeight: 700,
dy: -10, textAnchor: "end"}),
// x-axis labels for e* and eM
Plot.text([{x: eStar, y: 0.4, label: `e* = ${eStar.toFixed(2)}`}],
{x: "x", y: "y", text: "label", textAnchor: "middle", fontSize: 11, fill: "#6B1F26"}),
Plot.text([{x: eMshown, y: 0.4, label: `e_M = ${eM.toFixed(2)}`}],
{x: "x", y: "y", text: "label", textAnchor: "middle", fontSize: 11, fill: "#1C1916"}),
// Top readouts
Plot.text([{x: 0.2, y: Cmax * 0.97,
label: `Porast rizika: e_M − e* = ${(eM - eStar).toFixed(2)} (+${(((eM - eStar) / eStar) * 100).toFixed(0)} %)`}],
{x: "x", y: "y", text: "label", textAnchor: "start",
fontSize: 14, fill: "#1C1916", fontWeight: 700}),
Plot.text([{x: 0.2, y: Cmax * 0.91,
label: `Neefikasnost (gubitak blagostanja) = ${dwl.toFixed(2)}`}],
{x: "x", y: "y", text: "label", textAnchor: "start",
fontSize: 13, fill: "#6B1F26", fontWeight: 600})
]
});
}
```
**Što isprobati.** (1) Povećavajte pokriće osiguranja ([θ]{.var}) prema 0,9 i pratite kako krivulja S osiguranjem postaje sve plića, pa agent klizi s optimalne razine e\* na sve viši e_M, a postotni porast rizika i neefikasnost rastu. (2) Vratite (θ) na nulu i vidjet ćete da se dvije krivulje poklope, pa e_M pada na e\* i moralni hazard nestaje jer agent ponovno snosi puni trošak. (3) Uz osiguranje smanjite konveksnost troška ([k]{.var}) i primijetite protuintuitivan ishod, naime da blaži rast troška znači slabiju prirodnu kočnicu rizika, pa iste razine pokrića vode k razmjerno većem skoku e_M nego kad je trošak strmo konveksan.
:::
::: {.content-visible when-format="pdf"}
```{r}
#| label: fig-moralni-hazard-print
#| echo: false
#| fig-cap: "Moralni hazard: osiguranje smanjuje percipiranu krivulju troška, pa agent bira višu razinu rizičnog ponašanja e_M umjesto optimalne e*."
#| fig-alt: "Graf prikazuje dvije konveksne krivulje troška kao funkciju razine rizičnog ponašanja e. Crvena isprekidana krivulja Bez osiguranja strmija je, a crna puna krivulja S osiguranjem položenija jer agent percipira samo dio troška. Optimalni e* je lijevo od e_M kojeg agent bira uz osiguranje."
#| fig-width: 7.6
#| fig-height: 5.0
# Statički PDF blizanac interaktivnog OJS grafa (zadane vrijednosti klizača).
source("R/setup.R")
theta <- 0.5 # pokriće osiguranja θ (zadana vrijednost klizača)
k <- 0.15 # konveksnost troška k (zadana vrijednost klizača)
m <- 1.5 # marginalna korist od rizika m (zadana vrijednost klizača)
emax <- 12
Cmax <- 18
# Funkcija troška C(e) = 1 + k*e^2 (konveksna).
# Bez osiguranja agent snosi puni C(e); s osiguranjem percipira (1-theta) varijabilnog troška.
# Izabrani e: MB = m, MC = 2*k_eff*e => e = m / (2*k_eff)
eStar <- m / (2 * k) # 1.5/(2*0.15) = 5.00
eM <- m / (2 * k * (1 - theta)) # 1.5/(2*0.15*0.5) = 10.00
eMshown <- min(eM, emax * 0.98) # min(10, 11.76) = 10.00
# Krivulje troška, filtrirane na C <= Cmax (identično OJS-u)
es <- seq(0, emax + 0.05, by = 0.05)
cFull <- data.frame(e = es, C = 1 + k * es * es)
cFull <- cFull[cFull$C <= Cmax, ]
cIns <- data.frame(e = es, C = 1 + k * (1 - theta) * es * es)
cIns <- cIns[cIns$C <= Cmax, ]
# Troškovi na izabranim razinama e (stvarni društveni trošak, na punoj krivulji)
C_at_eStar <- 1 + k * eStar * eStar # 4.75
C_at_eM <- 1 + k * min(eM, emax) * min(eM, emax) # 16.00
# Višak društvenog troška od moralnog hazarda naspram dobivene neto koristi
dwl <- max(0, (C_at_eM - C_at_eStar) - m * (eM - eStar)) # 3.75
# Vrhovi okomitih crta (na krivulji koju agent zaista vidi)
y_eStar <- 1 + k * eStar * eStar
y_eMshown <- 1 + k * (1 - theta) * eMshown * eMshown
ggplot() +
geom_hline(yintercept = 0, color = "#CCCCCC", linewidth = 0.5) +
# Okomite isprekidane crte na e* i e_M
geom_segment(aes(x = eStar, xend = eStar, y = 0, yend = y_eStar),
color = "#8C8C8C", linetype = "dashed", linewidth = 0.4) +
geom_segment(aes(x = eMshown, xend = eMshown, y = 0, yend = y_eMshown),
color = "#8C8C8C", linetype = "dashed", linewidth = 0.4) +
# Krivulje troška
geom_line(data = cFull, aes(e, C),
color = "#4D4D4D", linewidth = 1.1, linetype = "longdash") +
geom_line(data = cIns, aes(e, C),
color = "#000000", linewidth = 1.1) +
# Ravnotežne točke (svaka na krivulji koju agent zaista vidi)
geom_point(aes(x = eStar, y = y_eStar),
size = 3, color = "white", fill = "#4D4D4D",
shape = 21, stroke = 1) +
geom_point(aes(x = eMshown, y = y_eMshown),
size = 3, color = "white", fill = "#000000",
shape = 21, stroke = 1) +
# Oznake krivulja
annotate("text", x = emax * 0.78, y = 1 + k * (emax * 0.78)^2,
label = "Bez osiguranja", color = "#4D4D4D",
fontface = "bold", size = 4, hjust = 1, vjust = -0.6) +
annotate("text", x = emax * 0.88, y = 1 + k * (1 - theta) * (emax * 0.88)^2,
label = "S osiguranjem (moralni hazard)", color = "#000000",
fontface = "bold", size = 4, hjust = 1, vjust = -0.6) +
# Oznake na osi x za e* i e_M
annotate("text", x = eStar, y = 0.4,
label = sprintf("e* = %.2f", eStar),
color = "#4D4D4D", size = 3.5, hjust = 0.5) +
annotate("text", x = eMshown, y = 0.4,
label = sprintf("e_M = %.2f", eM),
color = "#000000", size = 3.5, hjust = 0.5) +
# Gornji ispisi
annotate("text", x = 0.2, y = Cmax * 0.97,
label = sprintf("Porast rizika: e_M - e* = %.2f (+%.0f %%)",
eM - eStar, ((eM - eStar) / eStar) * 100),
color = "#000000", fontface = "bold", size = 4.6, hjust = 0) +
annotate("text", x = 0.2, y = Cmax * 0.91,
label = sprintf("Neefikasnost (gubitak blagostanja) = %.2f", dwl),
color = "#4D4D4D", fontface = "bold", size = 4.2, hjust = 0) +
scale_x_continuous(limits = c(0, emax), expand = c(0, 0)) +
scale_y_continuous(limits = c(0, Cmax), expand = c(0, 0)) +
labs(x = "Rizično ponašanje (e)", y = "Trošak / šteta")
```
:::
Asimetrične informacije posebno su važne u zdravstvu, financijama, obrazovanju, osiguranju i tržištu rada. Pacijent obično zna manje od liječnika o dijagnozi, terapiji i kvaliteti liječenja. Štediša zna manje od financijske institucije o složenim financijskim proizvodima. Roditelj ne može uvijek lako procijeniti kvalitetu škole. Poslodavac ne zna uvijek stvarnu produktivnost radnika prije zapošljavanja.
Prije nego što se umiješa država, na te probleme reagira i samo tržište. Bolje informirana strana ima poticaj svoje skriveno svojstvo učiniti vidljivim kroz **signaliziranje**, odnosno kroz skupu i teško krivotvorivu radnju koju si može priuštiti samo onaj tko doista posjeduje kvalitetu, poput diplome koja poslodavcu signalizira sposobnost ili jamstva kojim prodavač jamči za stanje automobila [@spence1973]. Slabije informirana strana zauzvrat pribjegava **probiru** (*screening*), nudeći niz ugovora osmišljenih tako da se sugovornici sami razvrstaju prema svojem skrivenom tipu, kao kad osiguravatelj ponudi izbor između police s visokim sudjelovanjem u šteti i skuplje police s punim pokrićem, pa se rizičniji i manje rizični osiguranici sami otkriju izborom [@rothschild1976]. Tek kada su takvi tržišni mehanizmi preskupi ili kada se uspostavi ravnoteža u kojoj se tipovi ne mogu razdvojiti, postaje jasno gdje državna intervencija doista dodaje vrijednost, a ne samo dvostruko pokriva ono što bi tržište riješilo samo.
Država može smanjiti informacijske probleme na više načina. Može propisati obvezno objavljivanje informacija, primjerice deklaracije na hrani, energetske certifikate, financijske prospekte, informacije o kamatnim stopama ili usporedive podatke o kvaliteti javnih usluga. Može uvesti licenciranje i standarde za liječnike, odvjetnike, revizore, nastavnike ili financijske institucije. Može uspostaviti nadzorne agencije, javne registre, sustave certifikacije i mehanizme zaštite potrošača.
No informacijske mjere nisu uvijek dovoljne. Informacije moraju biti razumljive, dostupne i vjerodostojne. Ako potrošač dobije dokument od pedeset stranica, formalno je informiran, ali stvarno možda nije sposoban donijeti bolju odluku. Zato se u suvremenim javnim politikama sve više naglašava jednostavnost informacija, standardizirani prikazi, jasna upozorenja i bihevioralni uvidi u način na koji ljudi donose odluke.
## Tržišna moć i monopol
Četvrti oblik tržišnog neuspjeha je **tržišna moć**, posebno monopol. U idealnom konkurentskom tržištu nijedno poduzeće ne može samo određivati cijenu. Poduzeća se natječu, potrošači biraju, a cijene odražavaju troškove i preferencije. Međutim, kada jedno poduzeće ili mali broj poduzeća ima značajnu tržišnu moć, taj se mehanizam narušava.
Monopol nastaje kada na tržištu postoji samo jedan ponuđač određenog dobra ili usluge. Monopolist može ograničiti količinu proizvodnje i naplatiti cijenu višu od konkurentske. Potrošači tada plaćaju više, kupuju manje, a dio potencijalne društvene koristi nestaje. U ekonomskoj analizi taj gubitak naziva se **mrtvi teret monopola**. Problem monopola nije samo u tome da monopolist ostvaruje visoku dobit, nego u tome da društvo dobiva manju količinu dobra po višoj cijeni nego što bi dobilo u uvjetima konkurencije.
Tržišna moć može nastati iz više razloga. Može biti posljedica vlasništva nad ključnim resursom, patenata, visokih početnih ulaganja, regulatornih prepreka ulasku, mrežnih učinaka ili strateškog ponašanja poduzeća. U nekim digitalnim tržištima tržišna moć nastaje jer vrijednost usluge raste s brojem korisnika. Što više ljudi koristi neku platformu, to ona postaje korisnija novim korisnicima, pa konkurenti sve teže ulaze na tržište.
::: {#def-prirodni-monopol}
**Prirodni monopol** nastaje kada su fiksni troškovi infrastrukture toliko visoki da prosječni trošak neprekidno pada s količinom, pa jedan ponuđač može sve kupce poslužiti po nižem trošku nego dva ili više. Konkurencija na takvom tržištu nije stabilna jer naposljetku pobjeđuje jedan ponuđač, pa regulacija postaje zamjena za tržišnu disciplinu.
:::
Poseban slučaj je **prirodni monopol**. Prirodni monopol nastaje kada su fiksni troškovi vrlo visoki, a prosječni troškovi padaju kako se povećava količina proizvodnje. U takvim okolnostima jedan veliki ponuđač može proizvoditi po nižem trošku nego više manjih ponuđača. Primjeri su vodoopskrba, elektroenergetske mreže, plinovodi, željeznička infrastruktura i određene komunalne usluge.
Graf koji slijedi prikazuje kako tržišna moć podiže cijenu i smanjuje proizvedenu količinu u odnosu na konkurenciju. Monopolist određuje količinu na razini gdje se marginalni prihod (MR) izjednačava s marginalnim troškom (MC), a zatim postavlja cijenu prema krivulji potražnje D. Rezultat je niža količina Q~M~ i viša cijena P~M~ u odnosu na konkurentsku ravnotežu (Q~C~, P~C~), u kojoj bi D sjekao MC, a osjenčani trokut između Q~M~ i Q~C~ predstavlja gubitak blagostanja (*deadweight loss*) zbog tržišne moći. Graf je interaktivan, pa klizači mijenjaju elastičnost potražnje i nagib marginalnog troška.
::: {.content-visible when-format="html"}
```{ojs}
//| echo: false
viewof mon_controls = Inputs.form({
eps_d_mon: Inputs.range([0.5, 3.0], {value: 1.2, step: 0.05, label: "Elastičnost potražnje |εD|:"}),
eps_s_mon: Inputs.range([0.4, 3.0], {value: 1.2, step: 0.05, label: "Elastičnost MC (εS):"})
})
```
```{ojs}
//| echo: false
eps_d_mon = mon_controls.eps_d_mon
```
```{ojs}
//| echo: false
eps_s_mon = mon_controls.eps_s_mon
```
```{ojs}
//| echo: false
//| label: fig-monopol
//| fig-cap: "Monopol i gubitak blagostanja: monopolist ograničava količinu na Q_M i podiže cijenu na P_M iznad konkurentske razine (Q_C, P_C), čime nastaje osjenčani trokut mrtvog tereta."
//| fig-alt: "Graf prikazuje silaznu krivulju potražnje D, silaznu krivulju marginalnog prihoda MR i uzlaznu krivulju marginalnog troška MC. Monopolist bira Q_M gdje se MR izjednačava s MC, a cijena P_M određena je prema krivulji potražnje i viša je od konkurentske cijene P_C. Crveni osjenčani trokut između Q_M i Q_C prikazuje gubitak blagostanja."
{
// Anchor competitive equilibrium at (Qc, Pc) = (60, 50)
const Qc = 60;
const Pc = 50;
const Qmax = 110;
const Pmax = 120;
// Slopes from elasticities at competitive equilibrium
const b = Pc / (Qc * eps_d_mon); // demand slope
const d = Pc / (Qc * eps_s_mon); // MC slope
// Demand: P = a - b*Q, at (Qc, Pc): a = Pc + b*Qc
const a = Pc + b * Qc;
// MC: P = c + d*Q, at (Qc, Pc): c = Pc - d*Qc
const c = Pc - d * Qc;
// Monopoly: MR = MC => a - 2b*Qm = c + d*Qm => Qm = (a - c)/(2b + d)
const Qm = (a - c) / (2 * b + d);
const Pm = a - b * Qm; // monopoly price (on demand curve)
const MC_at_Qm = c + d * Qm; // marginal cost at Qm
const Qs = d3.range(0, Qmax + 1);
const demand = Qs.map(q => ({Q: q, P: a - b * q}))
.filter(p => p.P >= 0 && p.P <= Pmax);
const mr = Qs.map(q => ({Q: q, P: a - 2 * b * q}))
.filter(p => p.P >= -Pmax && p.P <= Pmax);
const mc = Qs.map(q => ({Q: q, P: c + d * q}))
.filter(p => p.P >= 0 && p.P <= Pmax);
// DWL triangle: vertices (Qm, Pm), (Qm, MC_at_Qm), (Qc, Pc)
const dwlTri = [
{Q: Qm, P: Pm},
{Q: Qm, P: MC_at_Qm},
{Q: Qc, P: Pc}
];
const dwl = 0.5 * Math.abs(Pm - MC_at_Qm) * Math.abs(Qc - Qm);
const markup = ((Pm - Pc) / Pc) * 100;
return Plot.plot({
width: 760,
height: 500,
marginLeft: 65,
marginBottom: 55,
style: {fontSize: "12px", fontFamily: "Public Sans, system-ui, sans-serif", color: "#3A332D"},
x: {label: "Količina (Q) →", domain: [0, Qmax], grid: false},
y: {label: "↑ Cijena (P)", domain: [0, Pmax], grid: true},
marks: [
Plot.ruleY([0], {stroke: "#C9C3B8"}),
// DWL triangle (shaded)
Plot.line([...dwlTri, dwlTri[0]],
{x: "Q", y: "P", stroke: "#6B1F26", strokeWidth: 1,
fill: "#D8B5B3", fillOpacity: 0.65, curve: "linear"}),
// Curves
Plot.line(demand, {x: "Q", y: "P", stroke: "#2D5A8E", strokeWidth: 2.5}),
Plot.line(mr, {x: "Q", y: "P", stroke: "#3A332D", strokeWidth: 2, strokeDasharray: "5,4"}),
Plot.line(mc, {x: "Q", y: "P", stroke: "#4A6B5C", strokeWidth: 2}),
// Dashed guides for prices and quantities
Plot.ruleY([Pm], {stroke: "#6B6357", strokeDasharray: "4,3"}),
Plot.ruleY([Pc], {stroke: "#6B6357", strokeDasharray: "4,3"}),
Plot.ruleX([Qm], {y1: 0, y2: Pm, stroke: "#6B6357", strokeDasharray: "4,3"}),
Plot.ruleX([Qc], {y1: 0, y2: Pc, stroke: "#6B6357", strokeDasharray: "4,3"}),
// Equilibrium dots
Plot.dot([{Q: Qm, P: Pm}],
{x: "Q", y: "P", r: 5, fill: "#6B1F26", stroke: "white", strokeWidth: 2}),
Plot.dot([{Q: Qc, P: Pc}],
{x: "Q", y: "P", r: 5, fill: "#4A6B5C", stroke: "white", strokeWidth: 2}),
Plot.dot([{Q: Qm, P: MC_at_Qm}],
{x: "Q", y: "P", r: 4, fill: "#1C1916", stroke: "white", strokeWidth: 1.5}),
// Curve labels
Plot.text([{x: Qmax * 0.82, y: a - b * Qmax * 0.82, label: `D (|εD|=${eps_d_mon.toFixed(2)})`}],
{x: "x", y: "y", text: "label", fill: "#2D5A8E", fontSize: 12, fontWeight: 600, dy: -8}),
Plot.text([{x: Qmax * 0.42, y: a - 2 * b * Qmax * 0.42, label: "MR"}],
{x: "x", y: "y", text: "label", fill: "#3A332D", fontSize: 12, fontWeight: 700, dy: -8}),
Plot.text([{x: Qmax * 0.82, y: c + d * Qmax * 0.82, label: `MC (εS=${eps_s_mon.toFixed(2)})`}],
{x: "x", y: "y", text: "label", fill: "#4A6B5C", fontSize: 12, fontWeight: 600, dy: -8}),
// Price & quantity labels
Plot.text([{x: 1, y: Pm, label: `P_M = ${Pm.toFixed(1)}`}],
{x: "x", y: "y", text: "label", textAnchor: "start", dy: -7, fontSize: 11, fill: "#6B1F26"}),
Plot.text([{x: 1, y: Pc, label: `P_C = ${Pc.toFixed(1)}`}],
{x: "x", y: "y", text: "label", textAnchor: "start", dy: 12, fontSize: 11, fill: "#4A6B5C"}),
Plot.text([{x: Qm, y: 2, label: `Q_M = ${Qm.toFixed(1)}`}],
{x: "x", y: "y", text: "label", textAnchor: "middle", fontSize: 11, fill: "#6B1F26"}),
Plot.text([{x: Qc, y: 2, label: `Q_C = ${Qc.toFixed(1)}`}],
{x: "x", y: "y", text: "label", textAnchor: "middle", fontSize: 11, fill: "#4A6B5C"}),
// Top readouts
Plot.text([{x: 2, y: Pmax * 0.97,
label: `Gubitak blagostanja (DWL) = ${dwl.toFixed(1)}`}],
{x: "x", y: "y", text: "label", textAnchor: "start",
fontSize: 14, fill: "#6B1F26", fontWeight: 700}),
Plot.text([{x: 2, y: Pmax * 0.91,
label: `Monopolska marža: ${markup.toFixed(0)} %`}],
{x: "x", y: "y", text: "label", textAnchor: "start",
fontSize: 13, fill: "#1C1916", fontWeight: 600})
]
});
}
```
**Što isprobati.** (1) Smanjite elastičnost potražnje [|εD|]{.var} prema 0,5 i pratite kako monopolist širi razmak između Q_M i konkurentske količine Q_C, pa monopolska marža i osjenčani trokut mrtvog tereta rastu. (2) Povećajte |εD| prema 3,0 i vidjet ćete kako se Q_M približava Q_C, a cijena P_M pada prema konkurentskoj P_C jer kupci koji lako odustaju oduzimaju monopolistu prostor za podizanje cijene. (3) Uz elastičnu potražnju spustite elastičnost MC ([εS]{.var}) prema 0,4 i primijetite protuintuitivan ishod, naime da strmiji marginalni trošak sam po sebi sužava jaz količina, pa gubitak blagostanja od monopola ovisi ne samo o tržišnoj moći nego i o tome koliko se brzo penju troškovi proizvodnje.
:::
::: {.content-visible when-format="pdf"}
```{r}
#| label: fig-monopol-print
#| echo: false
#| fig-cap: "Monopol i gubitak blagostanja: monopolist ograničava količinu na Q_M i podiže cijenu na P_M iznad konkurentske razine (Q_C, P_C), čime nastaje osjenčani trokut mrtvog tereta."
#| fig-alt: "Graf prikazuje silaznu krivulju potražnje D, silaznu krivulju marginalnog prihoda MR i uzlaznu krivulju marginalnog troška MC. Monopolist bira Q_M gdje se MR izjednačava s MC, a cijena P_M određena je prema krivulji potražnje i viša je od konkurentske cijene P_C. Crveni osjenčani trokut između Q_M i Q_C prikazuje gubitak blagostanja."
#| fig-width: 7.6
#| fig-height: 5.0
# Statički PDF blizanac interaktivnog OJS grafa (zadane vrijednosti klizača).
source("R/setup.R")
# Zadane vrijednosti klizača
eps_d_mon <- 1.2 # elastičnost potražnje |εD| (zadana vrijednost klizača)
eps_s_mon <- 1.2 # elastičnost MC (εS) (zadana vrijednost klizača)
# Fiksne kotve: konkurentska ravnoteža (Qc, Pc) = (60, 50)
Qc <- 60
Pc <- 50
Qmax <- 110
Pmax <- 120
# Nagibi iz elastičnosti u konkurentskoj ravnoteži
b <- Pc / (Qc * eps_d_mon) # nagib potražnje
d <- Pc / (Qc * eps_s_mon) # nagib MC
# Potražnja: P = a - b*Q, u (Qc, Pc): a = Pc + b*Qc
a <- Pc + b * Qc
# MC: P = c + d*Q, u (Qc, Pc): c = Pc - d*Qc
cc <- Pc - d * Qc
# Monopol: MR = MC => a - 2b*Qm = c + d*Qm => Qm = (a - c)/(2b + d)
Qm <- (a - cc) / (2 * b + d)
Pm <- a - b * Qm # monopolska cijena (na krivulji potražnje)
MC_at_Qm <- cc + d * Qm # marginalni trošak pri Qm
# Serije podataka (cijela Q od 0 do Qmax), filtrirane kao u OJS-u
Qs <- 0:Qmax
demand <- data.frame(Q = Qs, P = a - b * Qs)
demand <- demand[demand$P >= 0 & demand$P <= Pmax, ]
mr <- data.frame(Q = Qs, P = a - 2 * b * Qs)
mr <- mr[mr$P >= -Pmax & mr$P <= Pmax, ]
mc <- data.frame(Q = Qs, P = cc + d * Qs)
mc <- mc[mc$P >= 0 & mc$P <= Pmax, ]
# Trokut mrtvog tereta: vrhovi (Qm, Pm), (Qm, MC_at_Qm), (Qc, Pc)
dwlTri <- data.frame(
Q = c(Qm, Qm, Qc),
P = c(Pm, MC_at_Qm, Pc)
)
# Prikazani brojevi (identične formule kao u OJS-u)
dwl <- 0.5 * abs(Pm - MC_at_Qm) * abs(Qc - Qm) # 277.8 pri zadanim vrijednostima
markup <- ((Pm - Pc) / Pc) * 100 # 28 % pri zadanim vrijednostima
ggplot() +
# Bazna vodoravna crta y = 0
geom_hline(yintercept = 0, color = "#CCCCCC") +
# Trokut mrtvog tereta (osjenčan)
geom_polygon(data = dwlTri, aes(Q, P),
fill = "#D8D8D8", alpha = 0.65,
color = "#4D4D4D", linewidth = 0.4) +
# Krivulje
geom_line(data = demand, aes(Q, P), color = "#1A1A1A", linewidth = 1.0) +
geom_line(data = mr, aes(Q, P), color = "#1A1A1A", linewidth = 0.8,
linetype = "longdash") +
geom_line(data = mc, aes(Q, P), color = "#7A7A7A", linewidth = 0.8) +
# Isprekidane vodilje za cijene i količine
geom_hline(yintercept = Pm, color = "#8C8C8C", linetype = "dashed",
linewidth = 0.4) +
geom_hline(yintercept = Pc, color = "#8C8C8C", linetype = "dashed",
linewidth = 0.4) +
geom_segment(aes(x = Qm, xend = Qm, y = 0, yend = Pm),
color = "#8C8C8C", linetype = "dashed", linewidth = 0.4) +
geom_segment(aes(x = Qc, xend = Qc, y = 0, yend = Pc),
color = "#8C8C8C", linetype = "dashed", linewidth = 0.4) +
# Ravnotežne točke
geom_point(aes(x = Qm, y = Pm), size = 3, color = "white",
fill = "#4D4D4D", shape = 21, stroke = 1.0) +
geom_point(aes(x = Qc, y = Pc), size = 3, color = "white",
fill = "#7A7A7A", shape = 21, stroke = 1.0) +
geom_point(aes(x = Qm, y = MC_at_Qm), size = 2.4, color = "white",
fill = "#000000", shape = 21, stroke = 0.8) +
# Oznake krivulja
annotate("text", x = Qmax * 0.82, y = a - b * Qmax * 0.82 + 4,
label = sprintf("D (|εD|=%.2f)", eps_d_mon),
color = "#1A1A1A", fontface = "bold", size = 3.4, hjust = 0.5) +
annotate("text", x = Qmax * 0.42, y = a - 2 * b * Qmax * 0.42 + 4,
label = "MR", color = "#1A1A1A", fontface = "bold",
size = 3.4, hjust = 0.5) +
annotate("text", x = Qmax * 0.82, y = cc + d * Qmax * 0.82 + 4,
label = sprintf("MC (εS=%.2f)", eps_s_mon),
color = "#7A7A7A", fontface = "bold", size = 3.4, hjust = 0.5) +
# Oznake cijena i količina
annotate("text", x = 1, y = Pm + 4, label = sprintf("P_M = %.1f", Pm),
color = "#4D4D4D", size = 3.1, hjust = 0) +
annotate("text", x = 1, y = Pc - 6, label = sprintf("P_C = %.1f", Pc),
color = "#7A7A7A", size = 3.1, hjust = 0) +
annotate("text", x = Qm, y = 2, label = sprintf("Q_M = %.1f", Qm),
color = "#4D4D4D", size = 3.1, hjust = 0.5) +
annotate("text", x = Qc, y = 2, label = sprintf("Q_C = %.1f", Qc),
color = "#7A7A7A", size = 3.1, hjust = 0.5) +
# Gornji ispisi
annotate("text", x = 2, y = Pmax * 0.97,
label = sprintf("Gubitak blagostanja (DWL) = %.1f", dwl),
color = "#4D4D4D", fontface = "bold", size = 4.2, hjust = 0) +
annotate("text", x = 2, y = Pmax * 0.91,
label = sprintf("Monopolska marža: %.0f %%", markup),
color = "#000000", fontface = "bold", size = 3.8, hjust = 0) +
scale_x_continuous(limits = c(0, Qmax), expand = c(0, 0)) +
scale_y_continuous(limits = c(0, Pmax), expand = c(0, 0)) +
labs(x = "Količina (Q)", y = "Cijena (P)")
```
:::
Država može odgovoriti na tržišnu moć na nekoliko načina. Prvi je **politika zaštite tržišnog natjecanja**. Ona uključuje zabranu kartela, nadzor spajanja poduzeća, sprječavanje zloupotrebe dominantnog položaja i uklanjanje neopravdanih prepreka ulasku na tržište. Cilj nije kažnjavati velika poduzeća zato što su velika, nego spriječiti ponašanja koja ograničavaju konkurenciju i štete potrošačima.
Drugi odgovor je **regulacija prirodnih monopola**. Ako nije učinkovito imati više ponuđača, država može regulirati cijene, kvalitetu usluge, investicije i pristup infrastrukturi.
Sama regulacija cijena, međutim, nije bez vlastitih izobličenja. Kada regulator dopušta poduzeću prinos vezan uz vrijednost njegova kapitala, poduzeće dobiva poticaj predimenzionirati ulaganja i napuhati kapitalnu osnovicu kako bi povećalo dopuštenu dobit, čak i ondje gdje to nije najjeftiniji način pružanja usluge [@averchjohnson1962]. Zbog tog su učinka razvijene regulacije koje cijenu vežu uz unaprijed zadanu putanju umjesto uz trošak, pa poduzeću prepuštaju uštede koje samo pronađe i time mu vraćaju poticaj na učinkovitost, doduše uz slabije jamstvo kvalitete. Pouka je da reguliranje monopola nije čist popravak nego problem dizajna instrumenta s vlastitim kompromisima, jednako kao i intervencije kod ostalih oblika tržišnog neuspjeha.
Treći odgovor je **javno vlasništvo**. Država može odlučiti da određeni prirodni monopol bude u javnom vlasništvu, osobito ako se radi o strateški važnoj infrastrukturi. Međutim, javno vlasništvo samo po sebi ne jamči učinkovitost. Javna poduzeća mogu imati probleme političkog utjecaja, slabih poticaja i neučinkovitog upravljanja.
Tržišna moć pokazuje da konkurencija nije uvijek prirodno i trajno stanje tržišta. Ponekad je država potrebna upravo zato da bi zaštitila konkurenciju. U tom smislu država nije nužno protiv tržišta, nego može biti čuvar uvjeta pod kojima tržište može funkcionirati.
## Mrežni učinci, dvostrana tržišta i tržišna moć platformi
Digitalne platforme zaoštravaju upravo onaj oblik tržišne moći koji nastaje iz mrežnih učinaka. Mnoge od njih istodobno posreduju između dviju skupina korisnika, primjerice između vozača i putnika, trgovaca i kupaca ili oglašivača i čitatelja, pa se nazivaju **dvostranim tržištima** (*two-sided markets*). Vrijednost koju platforma nudi jednoj strani raste s brojem korisnika na drugoj strani, zbog čega cijena nije samo pitanje razine nego i strukture, pa platforma jednu stranu često poslužuje besplatno ili uz subvenciju kako bi privukla drugu [@rochet2003]. Tražilica je tako besplatna za korisnike, a naplaćuje se oglašivačima, dok je tržnica besplatna za kupce, a prihod dolazi od trgovaca. Ta unakrsna povratna sprega objašnjava zašto vrijednost i broj korisnika na takvim tržištima rastu zajedno.
Kada su mrežni učinci dovoljno jaki, tržište teži prevagnuti u korist jednog pobjednika. Korisnici se okupljaju ondje gdje su već drugi korisnici, pa i tehnološki slabiji, ali ranije rašireni sustav može istisnuti boljega, a jednom stečena prednost postaje teško premostiva [@katz1985]. Tu se prednost dodatno učvršćuje podacima koje platforma prikuplja i pažnjom korisnika koju preprodaje oglašivačima, jer i jedno i drugo postaju ulazni resursi koje pridošlica teško može dostići. Zbog te kombinacije klasični instrumenti zaštite tržišnog natjecanja, građeni za svijet u kojem se konkurencija mjeri cijenom pojedinačnog proizvoda, slabije pristaju digitalnim tržištima na kojima je usluga prividno besplatna, što je nadležna tijela navelo na zaključak da su za njih potrebna nova, unaprijed zadana pravila [@tirole2017; @cremer2019].
Tržišna moć platformi proizvodi i poseban oblik eksternalije. Budući da poslovni model počiva na zadržavanju pažnje, algoritmi nagrađuju sadržaj koji izaziva snažnu reakciju, a ne nužno onaj koji je točan, pa se niskokvalitetne i lažne informacije šire kao svojevrsno onečišćenje zajedničkog informacijskog prostora čiji trošak snosi cijelo društvo, a ne onaj tko ga proizvodi [@allcott2017]. Riječ je o negativnoj eksternaliji iste vrste kao one koje smo razmotrili ranije u poglavlju, samo što se ovdje prelijeva kroz informacije umjesto kroz dim ili buku.
Odgovor države na platformsku moć zato nadilazi klasičnu zabranu kartela. Uz naknadni nadzor zloupotrebe dominantnog položaja sve se više uvode unaprijed zadana pravila ponašanja za najveće platforme, a kako ti instrumenti izgledaju u praksi razrađujemo u poglavlju o instrumentima javnih politika.
## Zajednički resursi
Uz javna dobra, eksternalije, asimetrične informacije i monopol, važno je spomenuti i **zajedničke resurse**. Zajednički resursi su dobra koja su teško isključiva, ali su konkurentna u potrošnji. To znači da je teško spriječiti pojedince da ih koriste, ali korištenje jedne osobe smanjuje dostupnost drugima.
Primjeri su riblji fond, podzemne vode, šume, pašnjaci, atmosfera, čisti zrak ili zajednički okolišni resursi. Ako jedan ribar ulovi više ribe, manje je ostaje za druge. Ako jedno poduzeće koristi rijeku kao odvodni kanal, kvaliteta vode za druge se smanjuje. Ako mnogi koriste isti pašnjak bez ograničenja, pašnjak se može iscrpiti.
Problem zajedničkih resursa često se naziva **tragedijom zajedničkog dobra** (*tragedy of the commons*) [@hardin1968]. Svaki pojedinac ima poticaj koristiti resurs što više jer korist pripada njemu, dok se trošak iscrpljivanja dijeli na sve. Ako se svi ponašaju na taj način, resurs se prekomjerno koristi i dugoročno propada. To je tržišni neuspjeh jer individualno racionalno ponašanje vodi kolektivno lošem ishodu.
::: {.callout-empirija}
Prekomjerno iskorištavanje zajedničkih resursa nije samo teorijska mogućnost, nego dokumentirana pravilnost. Svjetske ribolovne zalihe pokazuju upravo obrazac koji je Hardin opisao kao tragediju zajedničkog dobra [@hardin1968], pri čemu je velik dio morskih ribljih stokova prelovljen jer svaki ribar snosi tek dio troška iscrpljivanja, a punu korist od dodatnog ulova. Ondje gdje su uvedena prenosiva prava na ulov ili zajedničko upravljanje resursom, kolaps je često zaustavljen, što potvrđuje da problem nije u resursu, nego u pravilima pristupa. Elinor Ostrom pokazala je da zajednice ponekad i bez državne i bez privatne kontrole razviju vlastita pravila održivog korištenja resursa, ali da takva rješenja zahtijevaju jasne granice, nadzor i sankcije [@ostrom1990]. Empirijska je pouka da kolaps zajedničkog dobra nije neizbježan, nego ovisi o tome postoje li institucije koje ograničavaju prekomjerno korištenje.
:::
Država može intervenirati regulacijom količine korištenja, dozvolama, kvotama, naknadama, porezima, zaštićenim područjima ili definiranjem vlasničkih prava. Rješenje, međutim, nije uvijek izbor samo između tržišta i države, jer i zajedničko upravljanje samih korisnika može održati resurs, kako pokazuje prethodni nalaz. Time klasična rasprava dobiva treći put koji lako previdi.
## Meritorna dobra
Iako se meritorna dobra često prikazuju uz alokacijsku funkciju, ona nisu tržišni neuspjeh u istom uskom tehničkom smislu kao javna dobra, eksternalije ili monopol. **Meritorna dobra** su dobra za koja društvo smatra da ih treba poticati ili osigurati svima, čak i ako ih pojedinci ne bi sami izabrali u dovoljnoj mjeri. Pojam je razvio Musgrave kako bi objasnio zašto država intervenira u područjima poput obrazovanja, zdravstva, kulture, mirovinske sigurnosti ili osnovne socijalne zaštite [@musgrave1959].
Obrazovanje je dobar primjer. Ono nije čisto javno dobro jer je moguće organizirati privatne škole i naplatiti školarinu. Ipak, društvo često smatra da obrazovanje ne smije ovisiti samo o platežnoj sposobnosti roditelja. Razlog nije samo učinkovitost, nego i jednakost šansi, društvena uključenost i dugoročni razvoj. Slično vrijedi za osnovnu zdravstvenu zaštitu.
Meritorna dobra otvaraju pitanje **paternalizma**. Ako država obvezno propisuje osnovno obrazovanje, obvezno zdravstveno osiguranje ili obveznu mirovinsku štednju, ona ne prepušta odluku u potpunosti pojedincu. Time ograničava izbor, ali to opravdava tvrdnjom da pojedinac možda ne bi sam donio odluku koja je dobra za njega i za društvo. Zbog toga meritorna dobra treba promatrati kao prijelazno područje između alokacijske i distribucijske funkcije.
## Alokacijska funkcija kao prvi argument za državu
Alokacijska funkcija države pokazuje zašto slobodno tržište, iako je temeljni mehanizam organizacije gospodarskog života, nije dovoljno za sve društvene potrebe. Javna dobra tržište ne može lako financirati jer se korisnike teško može isključiti iz potrošnje. Eksternalije nastaju kada privatne odluke stvaraju društvene troškove ili koristi koje cijene ne odražavaju. Asimetrične informacije narušavaju razmjenu jer jedna strana zna više od druge. Tržišna moć i prirodni monopoli ograničavaju konkurenciju i omogućuju cijene i količine koje nisu društveno učinkovite. Zajednički resursi mogu biti prekomjerno iskorišteni jer pojedinci ne snose puni trošak iscrpljivanja. Meritorna dobra pokazuju da društvo ponekad želi osigurati određena dobra i usluge zbog njihovih širih učinaka i društvene vrijednosti.
U svim tim slučajevima država može imati važnu ulogu. Može financirati javna dobra, oporezivati negativne eksternalije, subvencionirati pozitivne eksternalije, propisivati standarde, smanjivati informacijske probleme, regulirati monopole, štititi zajedničke resurse i osiguravati meritorna dobra. Međutim, prepoznavanje tržišnog neuspjeha samo je prvi korak. Nakon toga treba odabrati pravi instrument, procijeniti troškove i koristi, uzeti u obzir kapacitete provedbe i paziti da državna intervencija sama ne proizvede nove probleme.
Najvažnija pouka alokacijske funkcije zato glasi da je država potrebna ne zato da zamijeni tržište, nego zato da ispravi situacije u kojima tržište samo ne može proizvesti društveno učinkovit ishod.
Ta pouka ujedno ocrtava granicu alokacijskog argumenta. Svi neuspjesi koje smo razmotrili tiču se učinkovitosti, odnosno pitanja proizvodi li tržište pravu količinu pravih dobara. Čak i kad tržište prođe sve te testove i alocira resurse savršeno učinkovito, ostaje otvoreno drugo pitanje, naime je li raspodjela dohotka i bogatstva koja iz toga proizlazi društveno prihvatljiva. Pareto učinkovit ishod može biti duboko nejednak, a tržište nema unutarnji mehanizam koji bi tu nejednakost ispravio. Time alokacijska funkcija prirodno predaje palicu distribucijskoj, kojoj se okrećemo u sljedećem poglavlju.
::: {.sazetak-panel}
## Sažetak
Tržišni neuspjeh nastaje kad stvarna tržišta odstupe od pretpostavki prvog teorema ekonomike blagostanja, pa cijene više ne odražavaju sve društvene troškove i koristi. Javna dobra, eksternalije, asimetrične informacije te tržišna moć i prirodni monopoli pokazuju različite načine na koje to odstupanje nastaje, dok zajednička i meritorna dobra proširuju popis situacija u kojima tržišni ishod nije društveno najbolji. U svakom od tih slučajeva država raspolaže prepoznatljivim instrumentom, od financiranja i oporezivanja do regulacije, standarda i definiranja vlasničkih prava koja stranama dopuštaju da pojedine neuspjehe riješe i bez izravne državne intervencije. Alokacijska funkcija zato ne tvrdi da država zna bolje od tržišta, nego precizno locira neuspjeh i nalaže da se uz njega odvaže pravi instrument, njegovi troškovi i kapaciteti provedbe. I sama savršeno učinkovita alokacija pritom ostavlja otvorenim pitanje je li raspodjela koju proizvodi društveno prihvatljiva, pa se mjerilo učinkovitosti iscrpljuje i ustupa mjesto pitanju pravednosti.
:::
::: {.callout-vjezba}
Promotrite hipotetsku industriju u kojoj je tržišna potražnja zadana izrazom P = 120 − Q, a marginalni privatni trošak proizvodnje iznosi MPC = 30 + 0,5Q, pri čemu se Q mjeri u tisućama jedinica. Svaka proizvedena jedinica stvara onečišćenje koje društvu nameće vanjski trošak od 30 novčanih jedinica, pa je marginalni društveni trošak MSC = MPC + 30.
(a) Izračunajte tržišnu ravnotežu koju daje presjecište potražnje i marginalnog privatnog troška, odnosno količinu Q~M~ i cijenu koju proizvođači uzimaju u obzir.
(b) Izračunajte društveno optimalnu količinu Q\* koja izjednačava potražnju s marginalnim društvenim troškom, a zatim usporedite Q\* s količinom Q~M~ iz prethodnog dijela.
(c) Odredite veličinu gubitka blagostanja kao površinu trokuta između količina Q\* i Q~M~ čija je visina jednaka vanjskom trošku po jedinici.
(d) Pretpostavite da država želi privatne poticaje uskladiti s društvenim troškom. Izračunajte Pigouov porez po jedinici koji tržišnu proizvodnju vraća na društveni optimum i objasnite zašto upravo iznos jednak vanjskom trošku otklanja gubitak blagostanja, premda proizvodnja ne pada na nulu.
(e) Umjesto poreza, pretpostavite da država jasno dodijeli vlasnička prava i dopusti dvjema stranama da pregovaraju uz zanemarive transakcijske troškove. Pokažite da je dogovorena količina jednaka optimumu Q\* iz dijela (b) bez obzira na to pripadne li pravo na čistu okolinu pogođenoj strani ili proizvođaču, te objasnite po čemu se dva ishoda razlikuju u tome tko kome plaća i kakva je posljedična raspodjela blagostanja.
:::