🚀 Oferta especial: 60% OFF no CrazyStack - Últimas vagas!Garantir vaga →
Voltar ao Curso
Módulo 4
Aula 15
50 min

Monopólio e Discriminação de Preços

Do extremo da competição perfeita ao monopólio: market power, markup pricing e estratégias de captura de surplus.

MIT Lecture #11: Monopoly

Conceitos-chave: Price makers, marginal revenue < price, efeito poisoning, market power, markup, deadweight loss, perfect price discrimination, real-world pricing strategies

Do Extremo ao Extremo

Nas últimas aulas, estudamos competição perfeita: muitas firmas competindo com produtos idênticos, onde empresas são price takers. Agora vamos para o extremo oposto.

Monopólio: Firma Única Dominando o Mercado

Definição: Mercado com uma única firma que atende toda a demanda.
Mudança fundamental: Firmas são agora price makers, não price takers. Elas podem escolher o preço!
Realidade: Monopólios puros são raros (assim como competição perfeita), mas existem. Próximas aulas: oligopólio (o caso mais realista).
✅ Competição Perfeita
Muitas firmas
• Produtos idênticos
Price takers: P dado pelo mercado
• Demanda firma: perfeitamente elástica
• MR = P (sem tradeoff)
• π → 0 no longo prazo
⚡ Monopólio
Uma firma
• Produto único (sem substitutos próximos)
Price makers: firma seta P
• Demanda firma = demanda do mercado
• MR < P (efeito poisoning)
• π > 0 possível no longo prazo

O Efeito Poisoning

A grande mudança no monopólio é que marginal revenue (MR) não é mais igual a preço. Por quê?

Assunção Crítica: Sem Discriminação de Preço

Vamos assumir (por agora) que o monopolista não pode discriminar preços. Quando ele seta um preço, ele seta o mesmo preço para todos.

(Voltaremos a isso. Mas essa assunção é fundamental para entender o tradeoff.)

Competição Perfeita vs Monopólio

Competição Perfeita: MR = P

Firma enfrenta demanda perfeitamente elástica. Pode vender o quanto quiser ao preço P.

  • • Vende Q unidades → revenue = P × Q
  • • Vende Q+1 unidades → revenue = P × (Q+1)
  • MR = P (ganhou P na unidade extra)
  • • Sem tradeoff: mais quantidade = mais revenue

Monopólio: MR < P

Firma enfrenta demanda do mercado (downward-sloping). Para vender mais, precisa baixar preço.

  • • Vende Q a preço P₁
  • • Quer vender Q+1 → tem que baixar para P₂
  • Ganha P₂ na unidade nova
  • Perde (P₁ - P₂) × Q nas antigas

🧪 Efeito Poisoning (Envenenamento)

Eu chamo isso de "efeito poisoning": se eu quero vender mais uma unidade, eu tenho que envenenar (reduzir o preço de) todas as vendas anteriores.

MR = P₂ + (dP/dQ) × Q
MR = P₂ - (P₁ - P₂) × Q

↑ ganho na unidade nova - perda nas unidades antigas

Derivação Matemática

// Marginal Revenue: derivação formal
// Revenue: R = P × Q

// Se P = P(Q) (demanda), então:
// R = P(Q) × Q

// Derivando em respeito a Q:
// MR = dR/dQ = P + (dP/dQ) × Q

// Ou, multiplicando e dividindo por P:
// MR = P × [1 + (dP/dQ) × (Q/P)]

// Sabemos que elasticidade: ε = (dQ/dP) × (P/Q)
// Logo: (dP/dQ) × (Q/P) = 1/ε

// Portanto:
// MR = P × [1 + 1/ε]

// Em competição perfeita: ε = -∞
// → MR = P × [1 + 0] = P ✓

// Em monopólio: ε é finito (ex: ε = -2)
// → MR = P × [1 - 1/2] = P/2 < P ✓

console.log('=== MARGINAL REVENUE ANALYSIS ===');
console.log('Perfect Competition (ε = -∞): MR = P');
console.log('Monopoly (ε = -2): MR = 0.5P');
console.log('Monopoly (ε = -3): MR = 0.67P');
console.log('Monopoly (ε = -5): MR = 0.8P');

console.log('\nCONCLUSÃO: Quanto mais elástica a demanda,');
console.log('mais próximo MR está de P. Quanto mais inelástica,');
console.log('maior o efeito poisoning.');

Exemplo numérico: Demanda Q = 24 - P

// Exemplo: Q = 24 - P
// Reescrever como: P = 24 - Q

// Revenue: R = P × Q = (24 - Q) × Q = 24Q - Q²

// Marginal Revenue: MR = dR/dQ = 24 - 2Q

// Curva de demanda: P = 24 - Q
// Curva de MR: MR = 24 - 2Q

// Note que:
// 1. Ambas começam em y-intercept = 24
// 2. MR tem inclinação 2x a demanda (mais íngreme)
// 3. MR sempre ABAIXO da demanda

console.log('=== DEMAND VS MR CURVE ===');
for (let Q = 0; Q <= 12; Q += 3) {
  const P = 24 - Q;
  const MR = 24 - 2 * Q;
  console.log(`Q=${Q}: P=$${P}, MR=$${MR} (MR - P = $${MR - P})`);
}

/*
OUTPUT:
=== DEMAND VS MR CURVE ===
Q=0: P=$24, MR=$24 (MR - P = $0)
Q=3: P=$21, MR=$18 (MR - P = $-3)
Q=6: P=$18, MR=$12 (MR - P = $-6)
Q=9: P=$15, MR=$6 (MR - P = $-9)
Q=12: P=$12, MR=$0 (MR - P = $-12)

INSIGHT: MR está sempre abaixo de P (exceto em Q=0).
Diferença cresce linearmente com Q.
*/

Maximização de Lucro

Lembre-se: MR = MC é a condição de maximização de lucro, independente da estrutura de mercado. O que muda no monopólio é que MR ≠ P.

Processo de Solução

  1. Pegue a curva de demanda P = f(Q)
  2. Crie equação de revenue: R = P × Q
  3. Diferencie para obter MR: MR = dR/dQ
  4. Tenha a função de custo C(Q)
  5. Diferencie para obter MC: MC = dC/dQ
  6. Iguale MR = MC e resolva para Q* (quantidade de maximização de lucro)
  7. Volte para a curva de demanda para encontrar P*: P* = f(Q*)

CUIDADO: Não confunda MC com P! O preço vem da demanda, não do MC.

Exemplo Completo: Monopolista Maximizando Lucros

// Exemplo: Monopolista com demanda linear e custo quadrático
class Monopolist {
  constructor() {
    // Demanda: Q = 24 - P → P = 24 - Q
    this.demandIntercept = 24;
    this.demandSlope = -1;

    // Custo: C = 12 + Q²
    this.fixedCost = 12;
    this.costCoefficient = 1;  // Q²
  }

  // Preço dado quantidade (curva de demanda)
  price(Q) {
    return this.demandIntercept + this.demandSlope * Q;
  }

  // Revenue
  revenue(Q) {
    return this.price(Q) * Q;
  }

  // Marginal Revenue
  marginalRevenue(Q) {
    // R = 24Q - Q² → MR = 24 - 2Q
    return 24 - 2 * Q;
  }

  // Custo
  cost(Q) {
    return this.fixedCost + this.costCoefficient * Math.pow(Q, 2);
  }

  // Marginal Cost
  marginalCost(Q) {
    // C = 12 + Q² → MC = 2Q
    return 2 * this.costCoefficient * Q;
  }

  // Average Cost
  averageCost(Q) {
    if (Q === 0) return Infinity;
    return this.cost(Q) / Q;
  }

  // Profit
  profit(Q) {
    return this.revenue(Q) - this.cost(Q);
  }

  // Encontrar Q* onde MR = MC
  profitMaximizingQuantity() {
    // MR = 24 - 2Q
    // MC = 2Q
    // 24 - 2Q = 2Q
    // 24 = 4Q
    // Q* = 6
    return 6;
  }

  // Análise completa
  analyze() {
    const Q_star = this.profitMaximizingQuantity();
    const P_star = this.price(Q_star);
    const MR_star = this.marginalRevenue(Q_star);
    const MC_star = this.marginalCost(Q_star);
    const profit_star = this.profit(Q_star);
    const AC_star = this.averageCost(Q_star);

    return {
      quantity: Q_star,
      price: P_star,
      marginalRevenue: MR_star,
      marginalCost: MC_star,
      averageCost: AC_star,
      profit: profit_star,
      profitPerUnit: P_star - AC_star,
    };
  }
}

const monopolist = new Monopolist();
const result = monopolist.analyze();

console.log('=== MONOPOLY PROFIT MAXIMIZATION ===\n');
console.log(`Optimal Quantity (Q*): ${result.quantity} units`);
console.log(`Optimal Price (P*): $${result.price}`);
console.log(`Marginal Revenue at Q*: $${result.marginalRevenue}`);
console.log(`Marginal Cost at Q*: $${result.marginalCost}`);
console.log(`Average Cost at Q*: $${result.averageCost.toFixed(2)}`);
console.log(`\nProfit per unit: $${result.profitPerUnit.toFixed(2)}`);
console.log(`Total Profit: $${result.profit}`);

// Por que não produzir 7 unidades?
const Q_7 = 7;
const profit_7 = monopolist.profit(Q_7);
console.log(`\n=== WHY NOT Q=7? ===`);
console.log(`Price at Q=7: $${monopolist.price(Q_7)}`);
console.log(`MC at Q=7: $${monopolist.marginalCost(Q_7)}`);
console.log(`Profit at Q=7: $${profit_7.toFixed(2)}`);
console.log(`Profit loss: $${(result.profit - profit_7).toFixed(2)}`);

console.log(`\nINSIGHT: Mesmo que P exceda MC na unidade 7, produzir 7`);
console.log(`reduz lucros porque o efeito poisoning (baixar preço em`);
console.log(`todas as 6 unidades anteriores) supera o ganho da 7ª unidade.`);

/*
OUTPUT:
=== MONOPOLY PROFIT MAXIMIZATION ===

Optimal Quantity (Q*): 6 units
Optimal Price (P*): $18
Marginal Revenue at Q*: $12
Marginal Cost at Q*: $12
Average Cost at Q*: $8.00

Profit per unit: $10.00
Total Profit: $60

=== WHY NOT Q=7? ===
Price at Q=7: $17
MC at Q=7: $14
Profit at Q=7: $58.00
Profit loss: $2.00

INSIGHT: Mesmo que P exceda MC na unidade 7, produzir 7
reduz lucros porque o efeito poisoning (baixar preço em
todas as 6 unidades anteriores) supera o ganho da 7ª unidade.
*/

⚠️ O Paradoxo: P > MC mas Não Produzimos

Na unidade 7, consumidores estão dispostos a pagar $17, e o custo marginal é apenas $14. Há $3 de surplus potencial. Por que o monopolista não produz?

Resposta: Porque para vender a 7ª unidade, ele teria que baixar o preço de $18 para $17. Isso significa perder $1 em cada uma das 6 unidades anteriores = -$6. Ganhar $3 na 7ª unidade não compensa.

Market Power e Markup

O dinheiro que monopolistas fazem depende de quão elástica é a demanda. Quanto mais inelástica, maior o poder de mercado.

Markup Formula

Lembre que MR = P × [1 + 1/ε]

Como MR = MC em equilíbrio:

MC = P × [1 + 1/ε]
MC/P = 1 + 1/ε

(P - MC)/P = -1/ε

Markup = (P - MC)/P = -1/ε

Quanto mais inelástica a demanda (|ε| pequeno), maior o markup que monopolista pode cobrar.

Por Que Monopolistas Não Cobram "O Que Quiserem"?

💊 Insulina (Muito Inelástico)

ε ≈ -0.2 (quase perfeitamente inelástico)

Markup = -1/(-0.2) = 5.0

Se MC = $10, então P = $60 (markup de 500%)

Diabéticos precisam de insulina. Não há substitutos. Logo, monopolista pode cobrar preços muito altos.

🍬 Goma de Mascar (Elástico)

ε ≈ -5.0 (muito elástico)

Markup = -1/(-5) = 0.2

Se MC = $0.10, então P = $0.125 (markup de 25%)

Muitos substitutos: goma de hortelã, chiclete, balas. Se preço for muito alto, consumidores trocam facilmente.

// Market Power: relação entre elasticidade e markup
class MarketPower {
  constructor(epsilon, marginalCost) {
    this.epsilon = epsilon;  // Elasticidade (sempre negativo)
    this.MC = marginalCost;
  }

  // Markup: (P - MC) / P
  markup() {
    return -1 / this.epsilon;
  }

  // Preço de monopólio
  monopolyPrice() {
    // (P - MC)/P = -1/ε
    // P - MC = -P/ε
    // P(1 + 1/ε) = MC
    // P = MC / (1 + 1/ε)
    return this.MC / (1 + 1/this.epsilon);
  }

  // Profit margin
  profitMargin() {
    const P = this.monopolyPrice();
    return ((P - this.MC) / P) * 100;
  }
}

// Exemplo 1: Insulina (demanda muito inelástica)
const insulin = new MarketPower(-0.2, 10);  // ε = -0.2, MC = $10
console.log('=== INSULIN (Highly Inelastic) ===');
console.log(`Elasticity: ${insulin.epsilon}`);
console.log(`Markup: ${insulin.markup().toFixed(2)}`);
console.log(`Monopoly Price: $${insulin.monopolyPrice().toFixed(2)}`);
console.log(`Profit Margin: ${insulin.profitMargin().toFixed(1)}%\n`);

// Exemplo 2: Goma de mascar (demanda elástica)
const gum = new MarketPower(-5.0, 0.10);  // ε = -5.0, MC = $0.10
console.log('=== GUM (Elastic) ===');
console.log(`Elasticity: ${gum.epsilon}`);
console.log(`Markup: ${gum.markup().toFixed(2)}`);
console.log(`Monopoly Price: $${gum.monopolyPrice().toFixed(2)}`);
console.log(`Profit Margin: ${gum.profitMargin().toFixed(1)}%\n`);

// Exemplo 3: SaaS (demanda moderadamente elástica)
const saas = new MarketPower(-2.5, 20);  // ε = -2.5, MC = $20
console.log('=== SAAS PRODUCT (Moderate) ===');
console.log(`Elasticity: ${saas.epsilon}`);
console.log(`Markup: ${saas.markup().toFixed(2)}`);
console.log(`Monopoly Price: $${saas.monopolyPrice().toFixed(2)}`);
console.log(`Profit Margin: ${saas.profitMargin().toFixed(1)}%\n`);

/*
OUTPUT:
=== INSULIN (Highly Inelastic) ===
Elasticity: -0.2
Markup: 5.00
Monopoly Price: $12.50
Profit Margin: 20.0%

=== GUM (Elastic) ===
Elasticity: -5.0
Markup: 0.20
Monopoly Price: $0.12
Profit Margin: 20.0%

=== SAAS PRODUCT (Moderate) ===
Elasticity: -2.5
Markup: 0.40
Monopoly Price: $33.33
Profit Margin: 40.0%

LESSON: Monopolistas são disciplinados pela elasticidade de demanda.
Eles só podem cobrar alto quando demanda é inelástica (poucos substitutos).
*/

🎯 Implicação para SaaS

Monopolistas em mercados competitivos (baixa diferenciação) são disciplinados por elasticidade de demanda, não por competição de outras firmas. Se você quer pricing power, precisa de demanda inelástica: lock-in, switching costs, network effects, produtos mission-critical.

Copyright: Monopólios Legais

Um dos monopólios mais comuns na prática: copyright. Governo concede direito exclusivo de vender um produto (livro, música, software) por um período.

Lei de Copyright (EUA)

Nos EUA: 75 anos após a morte do autor, apenas o autor (ou propriedade) pode aprovar produção/venda. Depois disso, entra em domínio público (qualquer um pode produzir).

Exemplo: Huckleberry Finn vs Fahrenheit 451

📖 Huckleberry Finn (Mark Twain)

Autor: Mark Twain (morreu em 1910)

Copyright: Expirado (100+ anos)

Preço: ~$4 (paperback), $0 (Kindle)

Mercado: Competição perfeita. Qualquer editora pode imprimir. Lucros → 0. Preço = custo marginal de impressão.

🔥 Fahrenheit 451 (Ray Bradbury)

Autor: Ray Bradbury (morreu em 2012)

Copyright: Ativo até 2087

Preço: ~$9 (paperback), $9 (Kindle)

Mercado: Monopólio. Apenas editora autorizada pode vender. Lucros > 0. Preço > custo marginal.

Por Que Fahrenheit 451 Não Custa $100?

Se tem monopólio, por que não cobrar $100? Dois motivos:

  1. Elasticidade de demanda: Escolas podem escolher outro livro. Há substitutos (1984, Brave New World, etc).
  2. Pirataria: A $100, muitos alunos apenas baixariam PDF pirata. Copyright só funciona se for enforçado.

Logo, mesmo com monopólio legal, elasticidade de demanda disciplina o preço.

Deadweight Loss da Monopoly

Agora chegamos ao conceito crucial que revela por que monopólios são um market failure. Quando comparamos o equilíbrio competitivo (Ec) com o equilíbrio monopolístico (Em), descobrimos que a monopoly cria ineficiência mesmo sem qualquer intervenção governamental.

Análise de Welfare: Competição vs Monopoly

Equilíbrio Competitivo (Ec):
  • Quantidade: Q = 8 unidades
  • Preço: P = 16 (onde P = MC)
  • Consumer Surplus (CS): A + B + C
  • Producer Surplus (PS): D + E
  • Total Surplus: A + B + C + D + E
Equilíbrio Monopolístico (Em):
  • Quantidade: Q = 6 unidades
  • Preço: P = 18 (onde MR = MC)
  • Consumer Surplus (CS): A apenas
  • Producer Surplus (PS): B + D (ganhou B, perdeu E)
  • Total Surplus: A + B + D
  • Deadweight Loss (DWL): C + E
// Deadweight Loss: Welfare Analysis
class WelfareAnalysis {
  constructor() {
    // Mesma demanda e custo dos exemplos anteriores
    this.demandIntercept = 24;
    this.demandSlope = -1;
    this.fixedCost = 12;
    this.costCoefficient = 1;
  }

  price(Q) {
    return this.demandIntercept + this.demandSlope * Q;
  }

  marginalCost(Q) {
    return 2 * Q;
  }

  // Consumer Surplus: área abaixo da demanda, acima do preço
  consumerSurplus(Q, P) {
    // Triângulo: base × altura / 2
    // Base = Q, Altura = (demandIntercept - P)
    return (Q * (this.demandIntercept - P)) / 2;
  }

  // Producer Surplus: área acima do MC, abaixo do preço
  producerSurplus(Q, P) {
    // Área entre P e MC curve
    // Para MC = 2Q, PS = P*Q - integral(MC)
    // Integral de 2Q de 0 a Q = Q²
    return P * Q - Math.pow(Q, 2);
  }

  totalSurplus(Q, P) {
    return this.consumerSurplus(Q, P) + this.producerSurplus(Q, P);
  }

  // Equilíbrio competitivo: P = MC
  competitiveEquilibrium() {
    // P = 24 - Q, MC = 2Q
    // 24 - Q = 2Q → Q = 8
    const Q_c = 8;
    const P_c = this.price(Q_c);
    const CS_c = this.consumerSurplus(Q_c, P_c);
    const PS_c = this.producerSurplus(Q_c, P_c);
    const TS_c = this.totalSurplus(Q_c, P_c);

    return { Q: Q_c, P: P_c, CS: CS_c, PS: PS_c, TS: TS_c };
  }

  // Equilíbrio monopolístico: MR = MC
  monopolyEquilibrium() {
    // MR = 24 - 2Q, MC = 2Q
    // 24 - 2Q = 2Q → Q = 6
    const Q_m = 6;
    const P_m = this.price(Q_m);
    const CS_m = this.consumerSurplus(Q_m, P_m);
    const PS_m = this.producerSurplus(Q_m, P_m);
    const TS_m = this.totalSurplus(Q_m, P_m);

    return { Q: Q_m, P: P_m, CS: CS_m, PS: PS_m, TS: TS_m };
  }

  // Deadweight Loss
  deadweightLoss() {
    const comp = this.competitiveEquilibrium();
    const mono = this.monopolyEquilibrium();

    const DWL = comp.TS - mono.TS;
    const CS_loss = comp.CS - mono.CS;
    const PS_change = mono.PS - comp.PS;

    return {
      DWL,
      CS_loss,
      PS_change,
      transferFromConsumers: CS_loss - DWL, // Parte que virou PS
      efficiencyLoss: DWL, // C + E
    };
  }

  analyze() {
    const comp = this.competitiveEquilibrium();
    const mono = this.monopolyEquilibrium();
    const dwl = this.deadweightLoss();

    console.log('=== COMPETITIVE EQUILIBRIUM ===');
    console.log(`Quantity: ${comp.Q} units`);
    console.log(`Price: $${comp.P}`);
    console.log(`Consumer Surplus: $${comp.CS.toFixed(2)}`);
    console.log(`Producer Surplus: $${comp.PS.toFixed(2)}`);
    console.log(`Total Surplus: $${comp.TS.toFixed(2)}\n`);

    console.log('=== MONOPOLY EQUILIBRIUM ===');
    console.log(`Quantity: ${mono.Q} units`);
    console.log(`Price: $${mono.P}`);
    console.log(`Consumer Surplus: $${mono.CS.toFixed(2)}`);
    console.log(`Producer Surplus: $${mono.PS.toFixed(2)}`);
    console.log(`Total Surplus: $${mono.TS.toFixed(2)}\n`);

    console.log('=== WELFARE IMPACT ===');
    console.log(`CS Loss: $${dwl.CS_loss.toFixed(2)}`);
    console.log(`  → Transferred to PS: $${dwl.transferFromConsumers.toFixed(2)}`);
    console.log(`  → Lost to DWL: $${(dwl.CS_loss - dwl.transferFromConsumers).toFixed(2)}`);
    console.log(`PS Change: $${dwl.PS_change.toFixed(2)}`);
    console.log(`\n🔺 DEADWEIGHT LOSS: $${dwl.DWL.toFixed(2)}`);
    console.log(`   (${((dwl.DWL / comp.TS) * 100).toFixed(1)}% of competitive surplus)\n`);

    return { comp, mono, dwl };
  }
}

const welfare = new WelfareAnalysis();
welfare.analyze();

/*
OUTPUT:
=== COMPETITIVE EQUILIBRIUM ===
Quantity: 8 units
Price: $16
Consumer Surplus: $32.00
Producer Surplus: $64.00
Total Surplus: $96.00

=== MONOPOLY EQUILIBRIUM ===
Quantity: 6 units
Price: $18
Consumer Surplus: $18.00
Producer Surplus: $72.00
Total Surplus: $90.00

=== WELFARE IMPACT ===
CS Loss: $14.00
  → Transferred to PS: $8.00 (área B)
  → Lost to DWL: $6.00 (área C)
PS Change: $8.00

🔺 DEADWEIGHT LOSS: $6.00
   (6.3% of competitive surplus)

KEY INSIGHTS:
1. Consumidores perdem $14 no total
2. Produtores ganham $8 (área B transferida)
3. $6 é simplesmente PERDIDO (áreas C + E)
4. Há transações que fariam a sociedade melhor mas não acontecem
5. Monopoly cria market failure mesmo sem governo

PARADOXO: Unidades 7 e 8 têm WTP excedendo MC, mas não são vendidas!
*/

Por que isso é Market Failure?

Este é nosso primeiro exemplo de market failure neste curso. Até agora, a única fonte de DWL era intervenção governamental (impostos, price floors/ceilings).

Agora vemos que o próprio mercado, deixado sozinho, pode produzir resultados ineficientes. A monopoly subproduz porque maximizar lucro privado ≠ maximizar surplus social.

Aplicação SaaS

Freemium SaaS sofre do mesmo problema:

  • Custo marginal ≈ $0 para servir usuários adicionais (cloud computing)
  • Socialmente optimal: dar acesso a todos com WTP > $0
  • Realidade: SaaS cobra $X/mês, excluindo usuários com $0 < WTP < $X
  • Solução: Tiers de preço (Free, Pro, Enterprise) capturam mais surplus e reduzem DWL

Discriminação Perfeita de Preços

E se o monopolista pudesse cobrar um preço diferente de cada consumidor? E se pudesse descobrir exatamente qual a willingness to pay (WTP) de cada pessoa e cobrar exatamente aquele valor?

Perfect Price Discrimination (1st Degree)

Definição: Monopolista cobra de cada consumidor exatamente sua WTP individual. Não há um preço único de mercado.

Consumidor por consumidor:

  • Consumidor 1: WTP = $24 → cobra $24
  • Consumidor 2: WTP = $23 → cobra $23
  • Consumidor 3: WTP = $22 → cobra $22
  • ...
  • Consumidor 8: WTP = $16 → cobra $16

Pára quando WTP = MC (igual competição perfeita!)

// Perfect Price Discrimination
class PerfectPriceDiscrimination {
  constructor() {
    this.demandIntercept = 24;
    this.demandSlope = -1;
  }

  // WTP do consumidor n (onde n = 1, 2, 3, ...)
  willingnessToPay(n) {
    return this.demandIntercept - n + 1;
  }

  marginalCost(Q) {
    return 2 * Q;
  }

  // Monopolista vende até WTP = MC
  optimalQuantity() {
    // WTP do consumidor Q: 24 - Q + 1 = 25 - Q
    // MC: 2Q
    // 25 - Q = 2Q → 3Q = 25 → Q ≈ 8.33
    // Como só vendemos unidades inteiras, Q = 8
    return 8;
  }

  // Revenue total vendendo Q unidades
  totalRevenue(Q) {
    let revenue = 0;
    for (let n = 1; n <= Q; n++) {
      revenue += this.willingnessToPay(n);
    }
    return revenue;
  }

  // Total cost
  totalCost(Q) {
    return 12 + Math.pow(Q, 2);
  }

  // Profit
  profit(Q) {
    return this.totalRevenue(Q) - this.totalCost(Q);
  }

  // Consumer Surplus (sempre zero!)
  consumerSurplus(Q) {
    return 0; // Cada um paga exatamente sua WTP
  }

  // Producer Surplus = todo o surplus
  producerSurplus(Q) {
    // PS = Revenue - Total Cost
    return this.profit(Q);
  }

  analyze() {
    const Q_ppd = this.optimalQuantity();
    const TR = this.totalRevenue(Q_ppd);
    const TC = this.totalCost(Q_ppd);
    const profit = this.profit(Q_ppd);
    const CS = this.consumerSurplus(Q_ppd);
    const PS = this.producerSurplus(Q_ppd);
    const TS = CS + PS;

    console.log('=== PERFECT PRICE DISCRIMINATION ===\n');
    console.log(`Quantity Sold: ${Q_ppd} units`);
    console.log(`(Mesma quantidade do equilíbrio competitivo!)\n`);

    console.log('Breakdown por consumidor:');
    for (let n = 1; n <= Q_ppd; n++) {
      const wtp = this.willingnessToPay(n);
      const mc = this.marginalCost(n);
      console.log(`  Consumidor ${n}: WTP = $${wtp}, paga $${wtp}, MC = $${mc.toFixed(2)}`);
    }

    console.log(`\nTotal Revenue: $${TR}`);
    console.log(`Total Cost: $${TC}`);
    console.log(`Profit: $${profit}\n`);

    console.log('=== SURPLUS DISTRIBUTION ===');
    console.log(`Consumer Surplus: $${CS} ❌`);
    console.log(`Producer Surplus: $${PS} ✅`);
    console.log(`Total Surplus: $${TS}\n`);

    console.log('=== COMPARAÇÃO ===');
    console.log('Perfect Competition: CS = $32, PS = $64, TS = $96');
    console.log('Monopoly (single price): CS = $18, PS = $72, TS = $90, DWL = $6');
    console.log(`Perfect Discrimination: CS = $0, PS = $${PS}, TS = $${TS}, DWL = $0\n`);

    return { Q: Q_ppd, TR, TC, profit, CS, PS, TS };
  }
}

const ppd = new PerfectPriceDiscrimination();
ppd.analyze();

/*
OUTPUT:
=== PERFECT PRICE DISCRIMINATION ===

Quantity Sold: 8 units
(Mesma quantidade do equilíbrio competitivo!)

Breakdown por consumidor:
  Consumidor 1: WTP = $24, paga $24, MC = $2.00
  Consumidor 2: WTP = $23, paga $23, MC = $4.00
  Consumidor 3: WTP = $22, paga $22, MC = $6.00
  Consumidor 4: WTP = $21, paga $21, MC = $8.00
  Consumidor 5: WTP = $20, paga $20, MC = $10.00
  Consumidor 6: WTP = $19, paga $19, MC = $12.00
  Consumidor 7: WTP = $18, paga $18, MC = $14.00
  Consumidor 8: WTP = $17, paga $17, MC = $16.00

Total Revenue: $164
Total Cost: $76
Profit: $88

=== SURPLUS DISTRIBUTION ===
Consumer Surplus: $0 ❌
Producer Surplus: $88 ✅
Total Surplus: $88

=== COMPARAÇÃO ===
Perfect Competition: CS = $32, PS = $64, TS = $96
Monopoly (single price): CS = $18, PS = $72, TS = $90, DWL = $6
Perfect Discrimination: CS = $0, PS = $88, TS = $88, DWL = $0

KEY INSIGHTS:
1. Não há DEADWEIGHT LOSS! (quantidade = competição perfeita)
2. Mas Consumer Surplus = $0 (monopolista captura tudo)
3. Efficiency sim, mas fairness zero
4. Monopolista ganha MAIS que com single price ($88 vs $72)
5. Por que? Sem efeito poisoning! Pode vender mais sem baixar preço
*/

O Paradoxo da Discriminação Perfeita

Efficiency vs Fairness:

  • Eficiência restaurada: Q = 8 (igual competição), DWL = $0
  • Justiça destruída: Consumidores não recebem nada
  • Sem poisoning effect: Vender para consumidor 8 não reduz preço para 1-7
  • Monopolista adora: Lucro de $88 vs $72 (single price)

Este é o primeiro dito neste curso de que devemos nos importar com quem recebe o surplus, não apenas com o total.

Realidade: Impossível (quase)

Na prática, ninguém consegue discriminar perfeitamente porque:

  1. Informação imperfeita: Como saber WTP de cada pessoa?
  2. Arbitragem: Consumidor de alto WTP pode revender para baixo WTP
  3. Custos de transação: Negociar preço individual é caro
  4. Legalidade: Algumas jurisdições proíbem discriminação extrema

Então, firmas usam proxies (sinais correlacionados com WTP) para discriminar parcialmente.

Aplicação SaaS

SaaS tenta aproximar discriminação perfeita:

Tiers de Preço:

  • • Free: WTP baixo (estudantes)
  • • Pro $29: WTP médio (freelancers)
  • • Business $99: WTP alto (PMEs)
  • • Enterprise custom: WTP altíssimo

Sinais de WTP:

  • • Tamanho da empresa (# users)
  • • Domínio de email (@company.com)
  • • Uso de features premium
  • • Localização geográfica

Estratégias de Pricing no Mundo Real

Como empresas realmente discriminam preços na prática? Aqui estão três exemplos reais que mostram como firmas usam sabotagem deliberada e limitações artificiais para segmentar mercados e capturar surplus do consumidor.

Case 1: Tesla Model S - Software Limiting

Produto "Premium" ($$$):

  • • Bateria: 75 kWh
  • • Range: 250 milhas
  • • Custo marginal: $0
  • • Preço: Alto

Produto "Básico" ($):

  • • Bateria: 75 kWh (mesma!)
  • • Range: 150 milhas (limitado por software)
  • • Custo marginal: $0
  • • Preço: Baixo

🚨 Revelação (Hurricane Irma, 2017):

Durante evacuações do furacão na Flórida, Tesla remotamente desbloqueou o range completo de 250 milhas para todos os carros "básicos". Isso revelou que a bateria era idêntica - apenas um código limitava artificialmente o range do modelo mais barato.

Lógica econômica: Criar versão "inferior" artificialmente permite capturar consumidores de baixa elasticidade (pagariam alto) E consumidores de alta elasticidade (pagariam baixo), sem poisoning effect.

Case 2: IBM LaserWriter - Deliberate Sabotage

Office Edition ($$$):

  • • Motor: Padrão (rápido)
  • • Velocidade: 10 páginas/min
  • • Target: Empresas (ε baixo)
  • • Preço: Alto

Home Edition ($):

  • • Motor: Padrão + chip slowdown
  • • Velocidade: 5 páginas/min
  • • Target: Consumidores (ε alto)
  • • Preço: Baixo

🔧 Descoberta:

Hackers desmontaram ambos os printers e descobriram que a Home Edition tinha exatamente o mesmo hardware, mas a IBM adicionou um chip que desacelerava artificialmente o motor. A IBM gastou dinheiro extra para tornar o produto pior!

Paradoxo: MC da versão "ruim" é maior (chip adicional), mas preço é menor. Por quê? Porque evitar canibalização de vendas premium vale o custo do chip.

Case 3: Amazon - IP Address Pricing (Tentativa)

A Estratégia:

Amazon tentou variar preços de produtos baseado no endereço IP do comprador. Algoritmo identificava:

  • IP corporativo (ex: Goldman Sachs) → Preço ALTO
  • Código postal rico (ex: Beverly Hills) → Preço MÉDIO-ALTO
  • Código postal pobre → Preço BAIXO
  • Histórico de compras → Ajuste dinâmico

⚠️ Resultado:

Amazon foi pega e teve que parar. Por quê? Não por ser ilegal (não era claramente ilegal), mas por backlash de consumidores.

Pessoas descobriram quando amigos compraram o mesmo item por preços diferentes. Violação da norma de fairness.

✅ Lição de Economia:

  • Eficiência pura: IP pricing seria eficiente (aproxima price discrimination perfeita)
  • Fairness importa: Consumidores se revoltam com discriminação "óbvia"
  • Solução: Discriminar via self-selection (tiers, cupons, timing)

Padrão Comum: Versioning

🚗

Tesla

Mesma bateria, código diferente

🖨️

IBM

Mesmo motor, chip slowdown

📦

Amazon

Mesmo produto, IP diferente

Insight: Custo marginal de criar versão "inferior" é quase zero (às vezes negativo!), mas permite capturar ambos segmentos de mercado sem efeito poisoning.

Aplicação SaaS

SaaS usa versioning extensivamente:

Feature Limiting (Tesla-style):

  • • GitHub: Repos públicos vs privados
  • • Slack: Message history 10k vs unlimited
  • • Zoom: 40min limit vs unlimited

MC de dar acesso: $0

Self-Selection (Amazon-style):

  • • Anual vs mensal (desconto tempo)
  • • Número de seats/users
  • • Support tier (email vs phone)

Cliente escolhe sua elasticidade

Fairness vs Efficiency: O Primeiro Dilema

Até agora neste curso, usamos Total Surplus como única métrica de welfare. Mas esse framework tem um problema fundamental: trata transferências de consumidores para produtores como neutras.

✅ Efficiency (Total Surplus)

Perspectiva tradicional de economia:

  • Métrica: TS = CS + PS
  • Objetivo: Maximizar TS total
  • Indiferente: Quem recebe o surplus
  • Conclusão: Perfect price discrimination é equivalente a competição perfeita (ambos TS = $96)

⚖️ Fairness (Distribuição)

Perspectiva de sociedade real:

  • Métrica: CS vs PS separadamente
  • Objetivo: Equilíbrio justo
  • Importa: Quem fica com o quê
  • Conclusão: Perfect price discrimination (CS=$0) ≠ competição perfeita (CS=$32)

Comparação dos Três Equilíbrios

EstruturaQuantidadePreçoCSPSTSDWL
Perfect Competition8$16$32$64$96$0
Monopoly (single price)6$18$18$72$90$6
Perfect Price Discrimination8varia$0$88$88$0

Paradoxo: Monopoly com single price tem DWL = $6, mas perfect discrimination tem DWL = $0. No entanto, sociedade prefere monopoly (CS = $18) sobre discrimination (CS = $0).

Por que Fairness Importa?

1. Preferências Sociais Não São Utilitaristas

Sociedades não maximizam apenas total utility. Elas se importam com distribuição. $1 para pessoa pobre ≠ $1 para bilionário em termos de welfare social.

2. Backlash de Consumidores

Como vimos com Amazon IP pricing, consumidores se revoltam contra discriminação óbvia, mesmo que seja eficiente. Normas de fairness têm poder real.

3. Incentivos de Longo Prazo

Se monopolistas capturam todo surplus, isso pode reduzir inovação de consumidores, investimento em produtos complementares, etc.

Conclusão do MIT Lecture:

"Isso é um dito que devemos nos importar com quem recebe o surplus, não apenas com o total. Não podemos ser completamente indiferentes entre consumidores tendo $32 e produtores tendo $64 vs consumidores tendo $0 e produtores tendo $88."

Resumo: Monopólio e Discriminação de Preços

Conceitos-Chave da Monopoly

  • Price Makers: Monopolistas setam preços, não são price takers
  • Poisoning Effect: MR < P porque vender mais requer baixar preço em todas unidades
  • Profit Max: MR = MC, não P = MC
  • Market Power: Markup = -1/ε (inversamente proporcional à elasticidade)
  • Market Failure: Monopoly cria DWL mesmo sem governo

Discriminação de Preços

  • 1st Degree (Perfeita): Cobra WTP individual de cada pessoa (teórico)
  • 2nd Degree (Self-Selection): Tiers de produto (Free/Pro/Enterprise)
  • 3rd Degree (Segmentation): Preços diferentes por grupo (estudante vs empresa)
  • Versioning: Criar versões artificialmente piores (Tesla, IBM)
  • Fairness Constraint: Discriminação óbvia gera backlash (Amazon)

Aplicações Práticas para SaaS

Pricing Tiers

  • • Free: Captura baixo WTP
  • • Pro: Freelancers/SMBs
  • • Enterprise: Custom pricing
  • • Reduz DWL vs single price

Feature Limiting

  • • MC ≈ $0 para dar acesso
  • • Limitar artificialmente (Slack history)
  • • Self-selection via features
  • • Versioning sem backlash

Usage-Based

  • • AWS: Pay per GB/hour
  • • Twilio: Pay per API call
  • • Aproxima 1st degree
  • • Alinha preço com value

✓ Checkpoint: Você entendeu se...

  • Consegue explicar por que MR < P em monopólio
  • Sabe derivar Q* e P* dado demanda e MC
  • Entende por que markup = -1/ε
  • Pode calcular DWL de monopoly
  • Explica diferença entre 1st, 2nd, 3rd degree
  • Identifica versioning em produtos reais
  • Compreende trade-off efficiency vs fairness
  • Aplica conceitos em pricing de SaaS

Próxima aula

Winner-Takes-All