ECON 321 Assignment 21: Dealers versus Intermediaries

Buyer and Seller Type Distributions

costDistribution= UniformDistribution[{0,1}]

valueDistribution= UniformDistribution[{0,1}]

Dealer Model

Stage 2 Demand from Buyers and Sellers

Buyers who actually buy must have value greater than price p:

nbDealer = 1-CDF[valueDistribution,p]//Simplify[#,0<p<1] &

Sellers who sell must have costs lower than wholesale price p-P:

nsDealer=CDF[costDistribution,p-P]//Simplify[#,0<(p-P)<1] &

Stage 1 Dealer Profit Maximum

Dealers maximize profits which are the transaction fee P times the total amount of transactions. The dealer also sets the retail price p.

profitDealer=P*nbDealer*nsDealer

FOCpDealer=D[profitDealer,p]==0

FOCPDealer=D[profitDealer,P]==0

pstarsDealer=Solve[{FOCpDealer,FOCPDealer},{p,P}]

We’ll use the second solution. The equilibrium outcomes from the point of view of sellers are

{pSellerDealer,qSellerDealer}={p/.pstarsDealer[[2]],nbDealer/.pstarsDealer[[2]]}

profitSellerDealer=(pSellerDealer-P-c)qSellerDealer /.pstarsDealer[[2]]

indiffSellerDealer=nsDealer/.pstarsDealer[[2]]

Platform Model, Sellers Set Price

Stage 3 Demand from Buyers

Buyers who actually buy must have value greater than price p:

nbPlatform = 1-CDF[valueDistribution,p]//Simplify[#,0<p<1] &

Stage 2 Pricing by Sellers

Sellers profit maximize by setting p, with transaction fee P given at this stage. Sellers each have a different cost c.

profitSellerPlatform=(p-c-P)*nbPlatform

FOCSellerPlatform=D[profitSellerPlatform,p]==0

pstarSellerPlatform=Solve[FOCSellerPlatform,p]//Flatten//First

qstarSellerPlatform=nbPlatform/.pstarSellerPlatform

profitstarSellerPlatform=profitSellerPlatform/.pstarSellerPlatform

Only sellers who make a profit enter the market. These are sellers with low enough c:

indiffSeller=Solve[profitstarSellerPlatform==0,c,Reals]//Flatten

The total quantity sold on the platform is the qstar of each seller integrated over the different seller types who are active in the market.

qs=Integrate[qstarSellerPlatform,{c,0,c/.indiffSeller}]//Simplify

Stage 1 Platform Profit Maximum

Platform profits are are again the transaction fee P times the total number of transactions

profitPlatform=P*qs

FOCPPlatform=D[profitPlatform,P]==0

PstarPlatform=Solve[FOCPPlatform,P]//Flatten

We need to find which one of these is the actual maximum

Plot[profitPlatform,{P,0,1.2}]

So it’s the first solution. Now, again we can find the outcomes from the point of view of the sellers.

pSellerPlatform=p/.pstarSellerPlatform/.PstarPlatform[[1]]

qSellerPlatform=qstarSellerPlatform/.PstarPlatform[[1]]

profitSellerPlatform=(pSellerPlatform-P-c)qSellerPlatform /.PstarPlatform[[1]]

indiffSellerPlatform=c/.indiffSeller/.PstarPlatform[[1]]

Comparison of Models from Sellers’ Perspective

{profitSellerDealer,profitstarSellerPlatform/.PstarPlatform}

Plot[{profitSellerDealer,profitSellerPlatform},{c,0,1},PlotLabels->Automatic,GridLines->{{indiffSellerDealer,indiffSellerPlatform},{}},PlotRange->{{0,1},{-.05,.15}},PlotTheme->"Monochrome"]

Plot[{pSellerDealer,c,c+P/.pstarsDealer[[2]]},{c,0,1},PlotLabels->Automatic,GridLines->{{indiffSellerDealer},{}},AxesLabel->Automatic,PlotTheme->"Monochrome"]

Plot[{pSellerPlatform,c,c+P/.PstarPlatform},{c,0,1},PlotLabels->Automatic,GridLines->{{indiffSellerPlatform},{}},AxesLabel->Automatic,PlotTheme->"Monochrome"]

Comparison of Models from Intermediary’s Perspective

{profitstarDealer[[2]],profitstarPlatform}

The intermediary makes the same amount either way. But this is not a general result, it’s specific to the uniform distribution. Here’s why: the quantity transacted works out the same either way:

Plot[{qSellerDealer,qSellerPlatform},{c,0,1},PlotLabels->Automatic,GridLines->{{indiffSellerDealer,indiffSellerPlatform},{}},PlotRange->{{0,1},{0,0.5}},PlotTheme->"Monochrome"]

Set up a Differentiated Bertrand Problem with n Firms

n=5;

Assume a=90000 for all firms and d=0.9 for all firms. Leave the b’s and c’s free to vary by firm.

demands=Table[90000- (Subscript[b, i]) (Subscript[p, i])+ .9 (Sum[(Subscript[p, j]),{j,1,n}] - (Subscript[p, i])),{i,1,n}]

profits=Table[((Subscript[p, i])-(Subscript[c, i]))demands[[i]],{i,1,n}]

FOCs=Table[D[profits[[i]],(Subscript[p, i])]==0,{i,1,n}]

ps=Table[(Subscript[p, i]),{i,1,n}]

Here are the very complicated pstars and qstars

pstars=Solve[FOCs,ps]//Flatten;

qstars=demands/.pstars;

Here are the real prices, real quantities, and parameters we want to find

realPrices={(Subscript[p, 1])-> 4642,(Subscript[p, 2])-> 4640,(Subscript[p, 3])-> 2500.02,(Subscript[p, 4])-> 3042.96,(Subscript[p, 5])-> 2137.23}

realQuantities={40773,42026,11820,7880,6567}

paramstofind={Table[{(Subscript[b, i]),(Subscript[c, i])},{i,1,n}]}//Flatten

Now we plug the real prices into the demand functions and the FOCs. This gives us very simple systems of equations to back out the parameters.

demands/.realPrices

bparams=Solve[(demands/.realPrices)==realQuantities,paramstofind]//Flatten

FOCs/.realPrices

Solve[FOCs/.realPrices,paramstofind]//Simplify

cparams=Solve[FOCs/.realPrices/.bparams,paramstofind]//Flatten

That’s it! Now that we’ve found our parameters, let’s just make sure that these really are the parameters that generate the pstars and qstars we are looking for.

pstars/.bparams/.cparams

qstars/.bparams/.cparams