# Market Equilibria¶

We will now explore the relationship between price and quantity of oranges produced between 1924 and 1938. Since the data [Hoo41] is from the 1920s and 1930s, it is important to remember that the prices are much lower than what they would be today because of inflation, competition, innovations, and other factors. For example, in 1924, a ton of oranges would have costed $6.63; that same amount in 2019 is$100.78.

fruitprice = Table.read_table('fruitprice.csv')
fruitprice

1924 8.04 18489 8.86 6582 4.96 41880 6.63 21258 27.22
1925 5.67 21919 7.27 5526 4.87 38772 9.19 15426 28.03
1926 5.44 29328 6.68 5742 3.35 46516 7.2 24762 28.89
1927 7.15 17082 8.09 5758 5.7 32500 8.63 22766 29.14
1928 5.81 20708 7.41 6000 4.13 46820 10.71 18766 29.34
1929 7.6 13071 10.86 3504 6.7 36990 6.36 35702 29.97
1930 5.06 22068 6.23 7998 6.35 29680 10.5 23718 28.68
1931 5.4 19255 6.86 5638 3.91 50940 5.81 39263 26.35
1932 4.06 17293 6.09 7364 4.57 27642 4.71 38553 21.98
1933 4.78 11063 5.86 8136 3.57 35560 4.6 36540 22.26

... (5 rows omitted)

## Finding the Equilibrium¶

An important concept in econmics is the market equilibrium. This is the point at which the demand and supply curves meet and represents the “optimal” level of production and price in that market.

Definition

The market equilibrium is the price and quantity at which the demand and supply curves intersect. The price and resulting transaction quantity at the equilibrium is what we would predict to observe in the market.

Let’s walk through how to the market equilibrium using the market for oranges as an example.

### Data Preprocessing¶

Because we are only examining the relationship between prices and quantity for oranges, we can create a new table with the relevant columns: Year, Orange Price, and Orange Unloads. Here, Orange Price is measured in dollars, while Orange Unloads is measured in tons.

oranges_raw = fruitprice.select("Year", "Orange Price", "Orange Unloads")
oranges_raw

1924 6.63 21258
1925 9.19 15426
1926 7.2 24762
1927 8.63 22766
1928 10.71 18766
1929 6.36 35702
1930 10.5 23718
1931 5.81 39263
1932 4.71 38553
1933 4.6 36540

... (5 rows omitted)

Next, we will rename our columns. In this case, let’s rename Orange Unloads to Quantity and Orange Price to Price for brevity and understandability.

oranges = oranges_raw.relabel("Orange Unloads", "Quantity").relabel("Orange Price", "Price")
oranges

Year Price Quantity
1924 6.63 21258
1925 9.19 15426
1926 7.2 24762
1927 8.63 22766
1928 10.71 18766
1929 6.36 35702
1930 10.5 23718
1931 5.81 39263
1932 4.71 38553
1933 4.6 36540

... (5 rows omitted)

### Visualize the Relationship¶

Let’s first take a look to see what the relationship between price and quantity is. We would expect to see a downward-sloping relationship between price and quantity; if a product’s price increases, consumers will purchase less, and if a product’s price decreases, then consumers will purchase more.

We will create a scatterplot between the points.

oranges.scatter("Quantity", "Price", width=5, height=5)
plt.title("Demand Curve for Oranges", fontsize = 16);


The visualization shows a negative relationship between quantity and price, which is in line with our expectations: as the price increases, fewer consumers will purchase oranges, so the quantity demanded will decrease. This corresponds to a leftward movement along the demand curve. Alternatively, as the price decreases, the quantity sold will increase because consumers want to maximize their purchasing power and buy more oranges; this is shown by a rightward movement along the curve.

### Fit a Polynomial¶

We will now quantify our demand curve using NumPy’s np.polyfit function. Recall that np.polyfit returns an array of size 2, where the first element is the slope and the second is the $$y$$-intercept.

For this exercise, we will be expressing demand and supply as quantities in terms of price.

np.polyfit(oranges.column("Price"), oranges.column("Quantity"), 1)

array([-3432.84670093, 53625.8748401 ])


### Find the Quantity Equilibrium¶

Similarly, the quantity equilibrium is the quantity of the good that consumers desire to purchase is equivalent to the quantity of the good that producers supply; there is no shortage or surplus of the good at this quantity.

demand.subs(P, P_star)
supply.subs(P, P_star)

$\displaystyle 29966.5721131095$

This means that the number of tons of oranges that consumers want to purchase and producers want to provide in this market is about 29,967 tons of oranges.

### Visualize the Market Equilibrium¶

Now that we have our demand and supply curves and price and quantity equilibria, we can visualize them on a graph to see what they look like.

There are 2 pre-made functions we will use: plot_equation and plot_intercept.

• plot_equation: It takes in the equation we made previously (either demand or supply) and visualizes the equations between the different prices we give it

• plot_intercept: It takes in two different equations (demand and supply), finds the point at which the two intersect, and creates a scatter plot of the result

def plot_equation(equation, price_start, price_end, label=None):
plot_prices = [price_start, price_end]
plot_quantities = [equation.subs(list(equation.free_symbols)[0], c) for c in plot_prices]
plt.plot(plot_quantities, plot_prices, label=label)

def plot_intercept(eq1, eq2):
ex = sympy.solve(eq1-eq2)[0]
why = eq1.subs(list(eq1.free_symbols)[0], ex)
plt.scatter([why], [ex], zorder=10, color="tab:orange")
return (ex, why)


We can leverage these functions and the equations we made earlier to create a graph that shows the market equilibrium.

At the same price level (the former equilibrium price), there is a shortage of Green Tea. The amount demanded by consumers exceeds that supplied by producers: $$Q_D > Q_S$$. This is a seller’s market, as the excess quantity demanded gives producers leverage (or market power) over consumers. They are able to increase the price of Green Tea to clear the shortage. As prices increase, consumers who were willing and able to purchase tea at the previous equilibrium price would leave the market, reducing quantity demanded. $$Q_S$$ and $$Q_D$$ move up along their respective curves until the new equilibrium is achieved where $$Q_S = Q_D$$.
This dual effect of increasing $$Q_S$$ and $$Q_D$$ is sometimes referred to as the “invisible hand”. Sans government intervention, it clears out the shortage or surplus in the market, resulting in the eventual convergence to a new equilibrium level of quantity $$Q^*$$ and price $$P^*$$.