Oligopoly

Hal Varian
January 1992

Cournot equilibria with linear demands

Let's draw some pictures of Cournot equilibrium with linear demands.  We start with the following inverse demand functions

p1[x1_,x2_] := 10 - b1 x1 - c x2
p2[x1_,x2_] := 10 - b2 x2 - c x1

The profit functions become

profit1[x1_,x2_] := Evaluate[p1[x1,x2]*x1]
profit2[x1_,x2_] := Evaluate[p2[x1,x2]*x2]

The reaction curves are determined by

solution1=Solve[D[profit1[x1,x2],x1]==0,x1][[1]]
solution2=Solve[D[profit2[x1,x2],x2]==0,x2][[1]]
r1[x2_] := Evaluate[x1/.solution1]
r2[x1_] := Evaluate[x2/.solution2]

If we fix the parameters, we can plot these isoprofit contours.  We will set c=b1, so that the two goods are perfect substitutes.

b1=b2=c=1
isoprofitLines=ContourPlot[profit1[x1,x2],
{x1,0,7},{x2,0,7},ContourShading->False]

We can also plot the reaction curves.  Here's a neat way to do it using ParametricPlot.

reactionCurves=ParametricPlot[{{r1[t],t},{t,r2[t]}},{t,0,7}]
Show[isoprofitLines,reactionCurves]

Stackelberg equilibrium

We derived the reaction curve for firm 2 above.  We can calculate the Stackelberg equilibrium by plugging this reaction curve into firm 1's profit function and maximizing that.

stackProfit1[x1_] := Evaluate[profit1[x1,x2]/.solution2]
stackProfit1[x1]

solutionStack=Solve[D[stackProfit1[x1],x1]==0,x1][[1]]
stackX1=x1/.solutionStack
stackX2=r2[x1]/.solutionStack

Bertrand equilibrium

Do Nash with upward sloping reaction functions...