Price Floor Surplus Calculator
A binding price floor holds the market price above equilibrium, encouraging sellers to offer more while buyers demand less.
Run — free
This calculator measures the resulting surplus from linear demand and supply equations. Enter the intercept and positive slope magnitude for each curve, then provide the regulated minimum price. The result identifies the competitive equilibrium, evaluates quantity demanded and quantity supplied at the floor, and reports exactly how many units of excess supply the policy creates.
Enter linear demand and supply curves consistently
The calculator uses the demand equation Qd = a - bP and the supply equation Qs = c + dP. Enter a as the demand intercept and b as the positive magnitude of the downward demand slope. Enter c as the supply intercept and d as the positive upward supply slope. The supply intercept may be negative, which is common when a supply curve crosses the price axis above zero, but both slope inputs must be strictly positive. All quantities should use the same unit, such as tonnes per month, apartments, or thousands of labor hours, while every price value must use the same currency and time basis. Do not enter a negative sign for the demand slope: subtraction is already built into the stated equation. Before relying on the answer, check that the equations describe the relevant market range. A linear model can predict impossible negative quantities far from observed prices, so this tool rejects a floor that produces a negative quantity on either curve rather than presenting that extrapolation as an economic result.
Understand why the floor creates excess supply
First, the calculator solves the competitive equilibrium by setting quantity demanded equal to quantity supplied. For the stated equations, the equilibrium price is (a - c) divided by (b + d), and the equilibrium quantity is either curve evaluated at that price. A price floor is binding only when it lies strictly above this equilibrium price. At the higher regulated price, consumers move upward along the demand curve and purchase fewer units, while producers move upward along the supply curve and offer more units. The surplus is therefore quantity supplied minus quantity demanded at the floor. This is excess supply, not producer surplus, consumer surplus, budget cost, or total welfare. Those concepts measure areas or expenditures, whereas this result measures a quantity gap. If the entered floor is equal to or below equilibrium, the regulation does not constrain the market in this simple model, so the calculator returns an input error instead of calling a zero or negative gap a price-floor surplus. That distinction keeps the result aligned with the policy question.
Interpret the result and test policy scenarios
Read quantity demanded as the amount buyers are willing to purchase at the regulated price and quantity supplied as the amount sellers are willing to offer. Their difference is the inventory, output, labor, or other market quantity that cannot be matched through ordinary exchange at that price. The equilibrium fields provide a baseline for explaining how far the intervention moves the market. You can repeat the calculation with alternative floors to compare policy scenarios, provided each candidate remains above equilibrium and within the credible range of the curves. In many textbook markets, a larger floor creates a larger surplus because demand falls and supply rises as price increases. Real institutions may change that outcome: governments can purchase excess output, production quotas can limit supply, search frictions can prevent matching, and expectations can shift either curve. Treat this calculation as the direct comparative-static implication of the two supplied linear equations. It does not estimate welfare loss, government purchasing expense, storage costs, tax effects, rationing, black-market activity, or dynamic responses unless those effects have already been incorporated into the curves you enter.
What you can do with it
Evaluate an agricultural support price
Estimate how much crop output would remain unsold when a guaranteed minimum price is set above the competitive equilibrium.
Analyze a minimum wage model
Treat labor supplied and labor demanded as linear curves to quantify the modeled excess supply of labor at a binding wage floor.
Check economics coursework
Verify equilibrium quantities and the resulting surplus for a textbook price-floor exercise without confusing excess supply with welfare surplus.
FAQ
What does the surplus result represent?
It is the number of units by which quantity supplied exceeds quantity demanded at the binding floor price.
Is this the same as producer surplus?
No. This calculator reports an excess-supply quantity. Producer surplus is an area representing gains to sellers and requires a different calculation.
Why must the price floor exceed equilibrium?
A floor at or below the competitive equilibrium does not constrain the market, so it is not binding and does not cause the modeled excess supply.
Should the demand slope be entered as a negative number?
No. Enter a positive slope magnitude b because the calculator uses Qd = a - bP.
Can the supply intercept be negative?
Yes. A negative supply intercept is valid when the economically relevant portion of the curve still produces nonnegative equilibrium and floor quantities.
What does one calculation cost?
The API price is $0.002 per request. The calculation is deterministic and does not use a network service or predictive model.
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/econ/price-floor-surplus \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"demand_intercept":100,"demand_slope":2,"supply_intercept":10,"supply_slope":1,"price_floor":40}'const res = await fetch("https://api.kit.forhosting.com/econ/price-floor-surplus", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"demand_intercept": 100,
"demand_slope": 2,
"supply_intercept": 10,
"supply_slope": 1,
"price_floor": 40
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/econ/price-floor-surplus",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"demand_intercept": 100,
"demand_slope": 2,
"supply_intercept": 10,
"supply_slope": 1,
"price_floor": 40
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/econ/price-floor-surplus", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"demand_intercept":100,"demand_slope":2,"supply_intercept":10,"supply_slope":1,"price_floor":40}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"demand_intercept":100,"demand_slope":2,"supply_intercept":10,"supply_slope":1,"price_floor":40}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/econ/price-floor-surplus", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"demand_intercept": 100,
"demand_slope": 2,
"supply_intercept": 10,
"supply_slope": 1,
"price_floor": 40
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "econ.price_floor_surplus",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |