A firm's revenues is defined as $R= p \times q$. We know that inverse demand is $p = a - b q$ where $a,b>0$. Therofore $R$ is a function of $q$ or R(q).
We are mostly interested in marginal analysis. Therefore, we compute how revenues changes, or
\begin{align} \Delta R = \Delta q \times p + \Delta p \times q \end{align}The equation above tell us that revenues changes via q and p! Now, given that we are interesed in figuring out how our change of production affects the change of revenue, we divide everything by $\Delta q$
\begin{align} \frac{\Delta R}{\Delta q } = p + \frac{\Delta p}{\Delta q} \times q \end{align}Given our demand function, we know that the slope or $\frac{\Delta p}{\Delta q}= -b$,
\begin{align} \frac{\Delta R}{\Delta q } = p - b \times q = a - 2bq \end{align}*Assuming a linear demand function, then the slope of MR is twice as the demand*
we will see that when $\Delta q >0 $, MR is positive when $|\epsilon| = |\frac{\Delta \% q }{\Delta \% p }| >1$. The idea is that you will increase revenues if and only if the change of prices ($\Delta p$) is NOT greater than the change of production ($\Delta q$). More formally, we can use our expression before
\begin{align} \frac{\Delta R}{\Delta q } = p + \frac{\Delta p}{\Delta q} \times q = p \left ( 1 - \frac{1}{|\epsilon|}\right) \end{align}Note that $MR = 0$ when $\epsilon = 0$. That is, when the (percentage) change of prices is the same as the (percentage) change of quantity, then the revenues do not change! Perhaps a graph can help to illustrate the relationship between revenues and elasticities.
## Call libraries
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
fig1, ax = plt.subplots()
q = np.arange(0.,101, 1)
pd = 200 -2*q
ax.plot(q,pd)
plt.ylabel('price')
plt.xlabel('quantity')
plt.text(50, 100, r'A')
fig2, ax2 = plt.subplots()
ax2.plot(q,pd*q)
plt.text(50, 5000, r'A')
plt.ylabel('revenues')
plt.xlabel('quantity')
<matplotlib.text.Text at 0x10b567e10>
Note that at the left of A (q=50), the revenues are increasing, but a decreasing rate. This is due to the effect of cutting prices for the units the firm was selling before. The only way to convince people to buy more of the product is by cutting prices. Therefore, every extra unit the firm wants to sell has a negative effect on revenues. This negative effect becomes more important as the firm produces more units. Thus, at some point, the revenues decrease.
Therefore, assuming the change of costs is due to the change of variable costs.
Sometimes, it is handy to work in average terms (or unit costs). That is if for example the total costs are 1000 and the firm produces 200 units, then in average the cost is 5 or the unit cost is 5. This does not imply that the extra cost ($\Delta C$) to produce every single unit was 5. 5 is just the average cost!
Note that AFC is decreasing on q. AVC will depend on the shape of MC
For example is MC is constant then AVC is constant. If MC is increasing (decreasing), then AVC is increasing (decreasing).
Perhaps a graph can help to grasp the different shapes of costs
fig3, ax = plt.subplots()
q = np.arange(0.,101, 1)
FC = 200
VC = 20*q
VC1 = q**2
MC1 = 2*q
ax.plot(q,FC/q,label='AFC')
ax.plot(q,VC/q,label='AVC = MC')
ax.plot(q, (FC+VC)/q,label='AC')
plt.xlabel('quantity')
plt.legend()
fig4, ax = plt.subplots()
ax.plot(q,FC/q,label='AFC')
ax.plot(q,MC1,label='MC')
ax.plot(q,VC1/q,label='AVC')
ax.plot(q, (FC+VC1)/q,label='AC')
plt.xlabel('quantity')
plt.legend()
/Users/jrabanal/nota/lib/python2.7/site-packages/ipykernel_launcher.py:7: RuntimeWarning: divide by zero encountered in divide import sys /Users/jrabanal/nota/lib/python2.7/site-packages/ipykernel_launcher.py:8: RuntimeWarning: invalid value encountered in divide /Users/jrabanal/nota/lib/python2.7/site-packages/ipykernel_launcher.py:9: RuntimeWarning: divide by zero encountered in divide if __name__ == '__main__': /Users/jrabanal/nota/lib/python2.7/site-packages/ipykernel_launcher.py:14: RuntimeWarning: divide by zero encountered in divide /Users/jrabanal/nota/lib/python2.7/site-packages/ipykernel_launcher.py:16: RuntimeWarning: invalid value encountered in divide app.launch_new_instance() /Users/jrabanal/nota/lib/python2.7/site-packages/ipykernel_launcher.py:17: RuntimeWarning: divide by zero encountered in divide
<matplotlib.legend.Legend at 0x10b8a5cd0>
Note that if $ \Delta \pi >0$ then the firm is making money and make sense to increase production! Similarly, if $ \Delta \pi <0$, then the firm is losing money and the firm should cut production. A firm is indiffirent when $\Delta REV = \Delta COST$, or MR = MC
\begin{align} \frac{ \Delta REV}{\Delta q } = \frac{ \Delta COST} {\Delta q } \end{align}The optimal price that firm sets is when $p=200 - 2\times 45 = 110$ and the firms profits are $(110-20)\times 45= 4050$
In this example, we assume that there were not fixed costs. Our analysis of optimal production does not change but we need to make sure that the firm is making money. Otherwise the firm should stop operating. For example if the fixed cost are 500, then profits shrinks to 3550.
\begin{align} 200-2q = 20\rightarrow q = 90 \end{align}
fig6, ax = plt.subplots()
q = np.arange(0.,101, 1)
pd = 200 -2*q
VC = 20*q
ax.plot(q,pd,label='demand')
ax.plot(q,VC/q,label='MC')
ax.plot(q,pd-2*q,label='MR')
conds = pd-2*q<=20
ax.fill_between(q,pd,20,where=conds)
ax.set_ylim(0, 200)
ax.set_xlim(0, 95)
plt.ylabel('price')
plt.xlabel('quantity')
plt.legend()
/Users/jrabanal/nota/lib/python2.7/site-packages/ipykernel_launcher.py:6: RuntimeWarning: invalid value encountered in divide
<matplotlib.legend.Legend at 0x10ba897d0>
fig7, ax = plt.subplots()
q = np.arange(0.,101, 1)
pd = 200 -2*q
VC = 20*q
ax.plot(q,pd,label='demand')
ax.plot(q,VC/q,label='MC')
ax.plot(q,pd-2*q,label='MR')
ax.plot(q,1000/q+VC/q,label='AC')
ax.set_ylim(0, 200)
ax.set_xlim(0, 95)
plt.ylabel('price')
plt.xlabel('quantity')
plt.legend()
/Users/jrabanal/nota/lib/python2.7/site-packages/ipykernel_launcher.py:6: RuntimeWarning: invalid value encountered in divide /Users/jrabanal/nota/lib/python2.7/site-packages/ipykernel_launcher.py:8: RuntimeWarning: divide by zero encountered in divide /Users/jrabanal/nota/lib/python2.7/site-packages/ipykernel_launcher.py:8: RuntimeWarning: invalid value encountered in divide
<matplotlib.legend.Legend at 0x10bbe1b10>
A the competitive equilibrium (q=90) we observe that the unit cost is higher that the price that a competitive firm is selling. The firm then shuts down and the only way to have a market is to have fewer producers in the market. A monopolist is still making money. In this case, $(110 - AC) * 45$. Recall that before the $AC=MC= 20$ now $AC = 1000/q + 20= 1000/45+20=42$ Therefore profits are $(110-42)*45= 3060.
A regulator perhaps want to have a situation in which the producer breaks even. This translates in having a price ceiling of $P=AC$. That is,
Solving the quadratic formulat we get $q\approx 84$ Therefore the price that regulator wants to set is $200- 2*84$ (note that AC also crosses P at $q\approx 6$ but this generates lower welfare)
np.roots([2,-180,1000])
array([ 84.05124838, 5.94875162])
from IPython.core.display import HTML
def css_styling():
styles = open("custom.css", "r").read()
return HTML(styles)
css_styling()