🇬🇧 English · 🇪🇸 Español
Contabilidad a precios de productor y de comprador en el modelo de comercio
La contabilidad a precios de productor y de comprador ("consistente") es la única
que ofrece el modelo de comercio; accounting="consistent" es el valor por
defecto y cualquier otro valor lanza ValueError. Este ejemplo se ejecuta tal
cual sobre la tabla de dos países equilibrada a mano que usa la comprobación de
referencia descrita más abajo:
import numpy as np
from puremacro.trade import calibrate_trade_model, solve_trade_equilibrium
# Two countries (A, B), one good, final uses C and I, values in one currency unit.
Z = np.array([[10., 12.], [8., 14.]]) # intermediate sales
F = np.array([[30., 8., 20., 20.], [15., 15., 50., 18.]]) # final sales to A-C, A-I, B-C, B-I
production_tax = np.array([4., 6.])
final_tax = np.array([2., 1., 3., 2.])
value_added = Z.sum(1) + F.sum(1) - Z.sum(0) - production_tax
data = np.vstack([np.hstack([Z, F]), np.r_[production_tax, final_tax],
np.r_[2*value_added/3, np.zeros(4)], np.r_[value_added/3, np.zeros(4)]])
calibration = calibrate_trade_model(data, ns=1, nc=2, nfd=2, country_codes=["A", "B"],
sector_codes=["GOOD"])
# Tariff MULTIPLIERS (1 + rate), indexed (origin node, use, destination country):
# A charges 20% on imports from B, B charges 10% on imports from A.
intermediate_tariff_multipliers = np.ones((2, 1, 2))
intermediate_tariff_multipliers[1, 0, 0] = 1.2
intermediate_tariff_multipliers[0, 0, 1] = 1.1
final_tariff_multipliers = np.ones((2, 2, 2))
final_tariff_multipliers[1, :, 0] = 1.2
final_tariff_multipliers[0, :, 1] = 1.1
result = solve_trade_equilibrium(
calibration,
tau=intermediate_tariff_multipliers,
tau_fd=final_tariff_multipliers,
accounting="consistent",
tol=1e-9, # absolute, in the table's value units
)
assert result.converged
print(result.metadata["account_residuals"])
tol acota residuos absolutos en las unidades de valor de la calibración. El
piso alcanzable es aproximadamente 1e-16 veces el mayor valor de producción:
tol=1e-9 es adecuado para la tabla anterior (valores en decenas), mientras que
el fixture OECD congelado de 3 regiones x 3 sectores en millones de USD
(producción de hasta 6.4e7) se estanca cerca de 5e-8; use allí de 1e-5 a
1e-7 y reescale la tolerancia al cambiar la unidad monetaria. La contabilidad
consistente requiere una calibración con coeficientes de uso final y
participaciones de gasto no negativos: una tabla con celdas de uso final
negativas, o con un país cuya participación de inversión se vuelve negativa tras
el cierre del ahorro externo, se rechaza con un ValueError. La tabla OCDE
incluida (load_icio_data()), la ingesta nativa con
package_mrio_to_calibration_result y el fixture OECD congelado cumplen el
requisito.
La contabilidad usa el calendario arancelario completo, costes de factores homogéneos y el cierre explícito descrito más abajo, y registra las convenciones efectivas en los metadatos.
Precios, cantidades e ingresos fiscales
Sea i el país/sector de origen, j el nodo productor de destino, k una categoría de uso final y c un país de destino. Los precios son relativos a los precios de productor de referencia, que valen uno. En este modelo no hay márgenes iceberg ni de distribución; requerirían ecuaciones separadas de recursos y de valoración.
| Concepto | Definición |
|---|---|
| Precio de productor/en frontera | p_i |
| Precio de comprador intermedio | p_i τ^Z_ij |
| Coste del compuesto final antes del impuesto local | Q_kc = Σ_i a^F_ikc p_i τ^F_ikc |
| Precio de comprador del compuesto final | P_kc = Q_kc / (1 − δ_kc) |
| Valor bilateral a precios de productor | p_i × cantidad entregada |
| Arancel a la importación | (τ − 1) × p_i × cantidad entregada |
Los aranceles usan el precio del bien exportado tanto para las entregas intermedias como para las finales. Los paga una vez el comprador y se devuelven una vez al país importador. El impuesto final local se aplica al gasto con aranceles incluidos. Las entradas domésticas del calendario de aranceles deben valer uno. Se admiten importaciones subvencionadas mediante multiplicadores positivos menores que uno.
Para un gasto de uso final E_kc, las entregas son
Así, valor a precios de productor + aranceles + impuesto final local es igual al
gasto de comprador en cada categoría/país. La calibración de δ es el impuesto
final de la fuente dividido por las compras finales efectivas de la fuente
incluido ese impuesto. El ahorro financiero se excluye de ese denominador.
El tax_fd almacenado en la calibración tiene otro denominador, por lo que la
participación se recupera de la tabla de calibración (o se reconstruye a partir
de los coeficientes presupuestarios de referencia cuando la tabla no está
disponible).
La producción combina requerimientos de insumos calibrados (aprovisionamiento Leontief o CES) con valor añadido Cobb–Douglas. El coste unitario del valor añadido es
v_j = (r_c / α_j)^α_j (w_c / (1 − α_j))^(1 − α_j) / β_j
(1 − t_j) p_j = v_j + intermediate purchaser cost per unit
production-tax receipt = t_j p_j Y_j
L_j = (1 − α_j) v_j Y_j / w_c
K_j = α_j v_j Y_j / r_c
Estas ecuaciones son homogéneas en los precios nominales. Una carga calibrada como participación del ingreso por ventas debe recaudar t_j p_j Y_j, no t_j Y_j. La fila TLS bruta original de la OCDE agrega impuestos y subvenciones a los productos; modelar su importe en la columna de producción como esta carga sobre el ingreso por ventas es un supuesto explícito de calibración. La fuente no identifica un calendario bilateral completo de impuestos a los productos o de IVA. Este modo ofrece un modelo reducido coherente, no la afirmación de que esas instituciones fiscales se hayan identificado de forma independiente.
Estas distinciones siguen los principios estándar de contabilidad de precios y fiscal: valoración a precios de comprador frente a precios básicos en las cuentas nacionales de la ONU e ingresos por producción/aranceles y un numerario en el ejemplo CGE estándar de GAMS. Esas fuentes motivan las convenciones; la referencia cuantitativa aquí es la derivación separada de dos países descrita más abajo, no una replicación de ese modelo de GAMS.
Presupuestos, ahorro externo y numerario
Todos los impuestos domésticos y aranceles entran en los ingresos públicos G_c. En el cierre de suma fija soportado, la transferencia resuelta T_c es igual a G_c. La renta de los hogares es I_c = w_c L_c + r_c K_c + T_c. Las participaciones de gasto calibradas θ la reparten, deduciendo el ahorro externo B_c de la inversión:
E_kc = θ_kc I_c − 1[k = investment] B_c
Σ_k E_kc + B_c = I_c
B_c = baseline foreign saving, fixed in numeraire units
Σ_c B_c = 0
La inversión es la categoría de índice 1, o de índice 0 en un modelo con una
sola categoría. La ingesta nativa de la OCDE asigna primero los seis usos finales
a C/I/Cx. El gasto final debe ser no negativo en una solución aceptada. El modo
consistente rechaza cualquier celda de uso final negativa. En la tabla nativa de
la OCDE de 2019, I = GFCF + INVNT tiene 90 celdas negativas aunque el total de I
de cada país es positivo; el recuento por categoría se registra en
calib.metadata["negative_final_demand_cells"]. Una tabla así necesita antes
agregación o un modelo explícito de existencias. Los cargadores de FIGARO,
EXIOBASE, WIOD y Eora condensan sus usos finales en C (consumo final), I
(formación bruta de capital fijo) y Cx (variación de existencias y objetos
valiosos, y las exportaciones de EXIOBASE); a diferencia del mapeo de la OCDE,
su Cx no son compras de los residentes en el exterior. El mapeo está en
metadata["final_use_mapping"].
Fijar el ahorro externo es una decisión sustantiva de cierre. Permitir que todos los saldos externos sean endógenos mientras se imponen los presupuestos nacionales deja sin especificar decisiones independientes de transferencias entre países. El modo coherente sustituye esa redundancia por los saldos externos de referencia. El precio de productor del primer país/sector se fija en uno. Su ecuación redundante de vaciado de bienes se omite del sistema numérico cuadrado y después se comprueba de forma independiente antes de que pueda declararse la convergencia. Las exportaciones menos importaciones realizadas también deben recuperar B_c en cada país, incluido el último.
Como B_c se fija por defecto en unidades del numerario
(foreign_saving_units="numeraire"), el equilibrio no es homogéneo de grado cero
en precios nominales cuando el ahorro externo es distinto de cero: introducir la
misma tabla con otro país en primer lugar cambia la asignación real y la VE/VC
hicksiana (en la tabla de referencia de bienestar de dos países, la VE del país A
es -27.55% del consumo de referencia con A primero y -45.99% con B primero). Pase
foreign_saving_units="world_income" para fijar el ahorro de referencia de cada
país como proporción del ingreso factorial mundial,
B_c = (B_c^0 / Σ_d (L_d + K_d)) Σ_d (w_d L_d + r_d K_d); el sistema es entonces
homogéneo de grado cero y los resultados no dependen del orden de los países (el
mismo ejemplo da -36.95% con cualquier orden). El valor por defecto no cambia.
Para tablas de tamaño completo use
solve_trade_equilibrium(method="equilibrated_newton"), que reescala ecuaciones
e incógnitas antes de cada paso de Newton; si falla,
metadata["near_singular_country"] indica el país cuya dirección del jacobiano
se ha vuelto singular.
El PIB a coste de factores es igual a la renta de los factores. El PIB a precios
de mercado añade impuestos domésticos y aranceles; debe ser igual al gasto final
de comprador más las exportaciones netas valoradas a precios de productor/en
frontera. Los presupuestos de hogares y gobierno y todas las ecuaciones físicas
de equilibrio quedan expuestos en metadata["account_residuals"]. El éxito del
solver por sí solo no puede certificar la convergencia cuando esas ecuaciones
físicas fallan o la demanda es inviable.
Reporte y alcance del solver
p_sol es el precio de productor efectivamente resuelto. p_fd es Q;
Pfd_final es P. c_fd es la cantidad compuesta efectiva tras asignar el
ahorro externo. El comercio bilateral, las importaciones y las exportaciones
usan valores a precios de productor. Los metadatos exponen matrices separadas de
valor a precios de productor y de comprador, ingresos por impuestos domésticos y
aranceles.
data_model_vf contiene valores de transacción a precios de productor, ingresos
por impuestos locales y pagos nominales a los factores. data_tariff_vf incluye
además los aranceles: las columnas de producción suman el ingreso por ventas a
precios de productor y las columnas de uso final suman el gasto de comprador.
Estas tablas contienen valores nominales en todos sus elementos.
El cpi reportado es un índice de Laspeyres de precios de comprador con cesta
fija dividido por el salario relativo a la referencia. metadata["nominal_cpi"]
conserva el índice sin deflactar. Una referencia suministrada también debe usar
contabilidad consistente. Es un índice, no bienestar hicksiano ni una derivación
de la función de gasto.
El modo soporta NumPy, aprovisionamiento intermedio Leontief/CES y devoluciones
de suma fija. Newton, LU disperso, Krylov, Broyden, híbrido/LM de SciPy y la
continuación completa de Keller resuelven las mismas ecuaciones. Los solvers
Newton, LU disperso, Krylov, Broyden y Keller se detienen solo cuando los residuos
resueltos y las ecuaciones físicas comprobadas de forma independiente (la ecuación
de bienes omitida y los saldos externos realizados) cumplen tol, de modo que un
estado aceptado por el solver no se rechaza después con la misma tolerancia; sus
jacobianos por diferencias finitas escalan el paso de las incógnitas de
transferencias y saldo externo, expresadas en unidades de valor, con su magnitud,
por lo que la resolución no depende de la unidad monetaria. Híbrido/LM de SciPy
usan su propio criterio de parada y se auditan después. Una petición de
method="condensed" usa Newton completo y registra effective_method="newton".
El modo cuasi-condensado, otros esquemas de reciclaje fiscal, los backends
acelerados y las penalizaciones por capacidad lanzan explícitamente
NotImplementedError, a la espera de sus propias derivaciones económicas.
Comprobación independiente con dos países
El script de referencia usa una tabla de transacciones equilibrada a mano con dos países, un sector productor, dos usos finales, ahorro externo distinto de cero, impuestos locales y aranceles heterogéneos. Deriva la referencia directamente de la tabla, sin llamar dentro del oráculo a las rutinas de calibración, residuos o equilibrio general de puremacro.
Con un sector por país, el vaciado de factores fija las producciones. Para cada precio de productor relativo candidato, las cantidades intermedias quedan fijadas por los insumos Leontief. Sea h_kc la participación del gasto final de comprador que retorna como impuesto local más arancel. El oráculo resuelve la renta algebraicamente:
Después vacía un mercado de bienes con una raíz escalar de Brent. El otro mercado de bienes se comprueba por separado. Esto proporciona precios, pagos a factores, entregas e ingresos fiscales independientes en la referencia y bajo un choque arancelario no uniforme. Las pruebas también comprueban la homogeneidad nominal, el rango completo del jacobiano tras el cierre, todos los libros presupuestarios, el escalado de moneda y la agregación conservativa de la OCDE.
El código de referencia reproduce la comprobación. La interfaz de bienestar hicksiano de consumo proporciona VE/VC derivadas y una atribución por extremos.