Supply Shift New Equilibrium Calculator
This supply shift new equilibrium calculator finds how a market’s equilibrium price and quantity change when a linear supply curve moves horizontally while linear demand stays fixed.
Run — free
Enter the demand intercept and slope, the original supply intercept and slope, and the size of the supply shift. The calculator reports the original equilibrium, the shifted supply intercept, the new equilibrium, and the differences between them, making the direction and magnitude of the market adjustment explicit.
Describe the original demand and supply curves
Start by expressing demand as Qd = demand_intercept − demand_slope × price and supply as Qs = supply_intercept + supply_slope × price. The demand slope is entered as a positive absolute value even though price has a negative effect on quantity demanded in the equation. The supply slope must be nonnegative, representing an upward-sloping or perfectly vertical-in-quantity relationship in this quantity-as-a-function-of-price form. Intercepts are quantities at a price of zero and may be negative when a fitted line crosses the quantity axis outside the economically observed range. Keep all price and quantity units consistent. For example, if quantity is measured in thousands of units and price is dollars per unit, both intercepts and the supply shift must use thousands of units, while both slopes must represent thousands of units per dollar. The calculator first sets original quantity demanded equal to original quantity supplied. This establishes a baseline, so the effect reported later is attributable only to the specified parallel supply movement rather than to an unnoticed change in demand or slope convention.
Represent the parallel supply shift correctly
Enter the supply shift as a quantity added to supply at every price. A positive value shifts the curve to the right: producers supply more at each price, so the new supply intercept equals the original intercept plus the shift. A negative value shifts it to the left and reduces supply at each price. Because the movement is parallel, the supply slope does not change. This distinction matters. A change in slope represents a rotation of the curve and requires a different model; it cannot be summarized by one constant horizontal displacement. With demand held fixed, the calculator solves demand_intercept − demand_slope × price = supply_intercept + supply_shift + supply_slope × price. It then substitutes the resulting price into demand to obtain the shared equilibrium quantity. A rightward supply shift normally lowers equilibrium price and raises equilibrium quantity, while a leftward shift normally raises price and lowers quantity. A zero shift deliberately returns the baseline equilibrium and reports no directional movement, which is useful for checking data pipelines and spreadsheet formulas.
Interpret the result and check economic plausibility
The output separates the initial equilibrium from the new equilibrium and includes signed changes. A negative price change means the equilibrium price fell; a positive quantity change means equilibrium output rose. The shifted supply intercept is also returned so you can reconstruct the new curve or document the assumption used in a report. The arithmetic solves the linear equations exactly and rounds only the displayed numeric results to twelve decimal places for stable output. It does not impose price floors, capacity constraints, taxes, rationing, nonlinear behavior, or a requirement that price and quantity be positive. Consequently, a sufficiently large shift can produce a mathematically valid negative price or quantity. Treat that as a warning that the linear curves are being extrapolated beyond a meaningful market range, not automatically as a software error. Before using the estimate for a decision, confirm that both curves were fitted over a relevant interval, that the shift uses the same quantity unit as the intercepts, and that no simultaneous demand shift occurred. Automated requests cost $0.002; the deterministic calculation uses no network data or hidden assumptions.
What you can do with it
Estimate the effect of a production subsidy
Model an assumed rightward supply shift and compare the resulting market price and traded quantity with the original equilibrium.
Analyze a supply disruption
Enter a negative shift for lost capacity or disrupted imports and quantify the implied rise in price and fall in quantity.
Check economics coursework
Verify algebra for parallel supply-shift exercises while keeping the original and new equilibria visible in one structured result.
FAQ
What equations does the calculator use?
It uses Qd = demand_intercept − demand_slope × price and Qs = supply_intercept + supply_slope × price, then adds supply_shift to the supply intercept.
Should the demand slope be entered as negative?
No. Enter its positive absolute value. The calculator applies the minus sign in the demand equation.
What does a positive supply shift mean?
It means supply increases by that quantity at every price, moving the supply curve right without changing its slope.
Can the calculator handle a leftward supply shift?
Yes. Use a negative supply_shift value to reduce the quantity supplied at every price.
Why did I get a negative equilibrium price or quantity?
The linear equations can produce negative values when extrapolated far enough. Check units, signs, shift size, and whether the curves remain economically meaningful in that range.
How much does an API calculation cost?
Each API request costs $0.002. The calculation is deterministic and does not call external services.
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/supply-shift-new-equilibrium \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"demand_intercept":120,"demand_slope":2,"supply_intercept":20,"supply_slope":3,"supply_shift":25}'const res = await fetch("https://api.kit.forhosting.com/econ/supply-shift-new-equilibrium", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"demand_intercept": 120,
"demand_slope": 2,
"supply_intercept": 20,
"supply_slope": 3,
"supply_shift": 25
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/econ/supply-shift-new-equilibrium",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"demand_intercept": 120,
"demand_slope": 2,
"supply_intercept": 20,
"supply_slope": 3,
"supply_shift": 25
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/econ/supply-shift-new-equilibrium", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"demand_intercept":120,"demand_slope":2,"supply_intercept":20,"supply_slope":3,"supply_shift":25}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"demand_intercept":120,"demand_slope":2,"supply_intercept":20,"supply_slope":3,"supply_shift":25}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/econ/supply-shift-new-equilibrium", 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": 120,
"demand_slope": 2,
"supply_intercept": 20,
"supply_slope": 3,
"supply_shift": 25
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "econ.supply_shift_new_equilibrium",
"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. |