价格管制
低于均衡价格的价格上限,或高于均衡价格的价格下限,会产生约束:市场无法结清,成交量等于管制价格下需求量与供给量中较小者。
PriceControlScenario(control_type, control_price)
PriceControlType.CEILING | PriceControlType.FLOOR
位于 control_price 的上限(CEILING)或下限(FLOOR),位于 principle_viz.core.controls。
evaluate_price_control(
demand,
supply,
scenario
)
管制是否改变市场结果。
实际成交量。
买方支付的价格:有约束时为管制价格,否则为均衡价格。
卖方收到的价格:有约束时为管制价格,否则为均衡价格。
上限下的超额需求(其余情况为零)。
下限下的超额供给(其余情况为零)。
未管制的市场。
管制下的市场,返回 PriceControlResult:
from principle_viz import evaluate_price_control
from principle_viz.core.controls import (
PriceControlScenario,
PriceControlType,
)
scenario = PriceControlScenario(PriceControlType.CEILING, 4.0)
ceiling = evaluate_price_control(demand, supply, scenario)
print(
ceiling.is_binding,
ceiling.traded_quantity,
ceiling.shortage,
)
# True 2.0 4.0
上限高于均衡价格(例如 7)时,is_binding 为 False。
MarketFigure.add_price_control(
result,
*,
gap_brace="line"
)
画出管制线并命名为 "Price ceiling" 或 "Price floor",在价格轴上标出 \(p_c\)。有约束时另标出 \(Q_d\) 与 \(Q_s\),并以括号标示差额:上限下方为 "Shortage",下限上方为 "Surplus"。gap_brace="axis" 改在数量轴下方标示(参见有约束的价格上限。、有约束的价格下限。)。
outcome_from_control() 将结果转为市场结果,可交给福利的福利函数(参见上限为 3.5 时的福利。):
from principle_viz.welfare.surplus import (
compare_surplus,
outcome_from_control,
outcome_from_equilibrium,
)
eq = solve_equilibrium(demand, supply)
baseline = outcome_from_equilibrium(eq)
controlled = outcome_from_control(ceiling)
delta = compare_surplus(demand, supply, baseline, controlled)
fig.add_price_control(ceiling)
fig.add_welfare(delta.policy)
价格上限下,无谓损失为未成交的交易利益;部分剩余由卖方转移给买方。