A Supply Shifter Partially Identifies the Supply Slope

TheoryGuru applications

Load Economicreasoning package only if it is not already loaded

If[Length@Names["PLTools`*"]<10,
Get["http://economicreasoning.com"]]

Notes

Interpret the vector variables (quantity,price,z,(Subscript[u, s]),(Subscript[u, d])) as demeaned.

In the Wolfram Language, quantity.price refers to the tensor DOT PRODUCT, NOT scalar multiplication.  For TheoryGuru purposes, tensor means vector, so that the result of quantity.price is a scalar.

Setup

Supply-demand system

(Subscript[u, s])=quantity-(Subscript[β, s]) price-γ z;
(Subscript[u, d])=quantity-(Subscript[β, d]) price;

SlopeAssumptions={(Subscript[β, s])>0,(Subscript[β, d])<0};

Nontrivial={(Subscript[u, s]).(Subscript[u, s])>0,(Subscript[u, d]).(Subscript[u, d])>0,z.z>0,price.price>0,quantity.quantity>0,γ≠0};

IV properties

zproperties={z.(Subscript[u, s])==0,z.(Subscript[u, d])==0,((((z.price))^2)/((z.z)(price.price)))<1,((((z.quantity))^2)/((z.z)(quantity.quantity)))<1};

γbounds=0≤L<γ<H;

Define candidate bounds

DefineCandidates={(Subscript[β, L])==((L z.z-quantity.z)/(-price.z)),(Subscript[β, H])==((H z.z-quantity.z)/(-price.z))};

Results

Demand slope is point identified

TheoryGuru[{zproperties,Nontrivial},(Subscript[β, d])==((quantity.z)/(price.z))]

Supply shifter moves price and quantity in opposite directions

TheoryGuru[{zproperties,Nontrivial,SlopeAssumptions},
SameSign[-price.z,γ]
∧
SameSign[quantity.z,γ]]

Derive the supply slope’s identified set

idset=TheoryPossibilities[{zproperties,Nontrivial,SlopeAssumptions,γbounds},
{(Subscript[β, s]),quantity.z,price.z,z.z,L,H},
True]

Equivalent way of writing idset

TheoryGuru[{zproperties,Nontrivial,SlopeAssumptions,γbounds,DefineCandidates},
0≤(Subscript[β, L])<(Subscript[β, s])<(Subscript[β, H])∨
(Subscript[β, L])<0<(Subscript[β, s])<(Subscript[β, H])]

TheoryOverlap[{zproperties,Nontrivial,SlopeAssumptions,γbounds,DefineCandidates},
idset,
0≤(Subscript[β, L])<(Subscript[β, s])<(Subscript[β, H])∨
(Subscript[β, L])<0<(Subscript[β, s])<(Subscript[β, H])]

Variable interpretations

Let the γ bounds be in units of (Subscript[β, s])

γbounds2=0≤L (Subscript[β, s])<γ<H (Subscript[β, s]);

DefineCandidates2={(Subscript[β, L])==((quantity.z)/(price.z+H z.z)),(Subscript[β, H])==((quantity.z)/(price.z+L z.z))};

idset2=TheoryPossibilities[{zproperties,Nontrivial,SlopeAssumptions,γbounds2},
{(Subscript[β, s]),quantity.z,price.z,z.z,L,H},
True]

Equivalent way of writing idset2

TheoryOverlap[{zproperties,Nontrivial,SlopeAssumptions,γbounds2,DefineCandidates2},
idset2,
0≤(Subscript[β, L])<(Subscript[β, s])<(Subscript[β, H])
∨
(Subscript[β, H])<0<(Subscript[β, L])<(Subscript[β, s])]