# Walmart Business 360 v1.0 — findings seleccionados

## Executive Summary

**Pregunta empresarial:** ¿Cómo se traducen los errores de forecast de demanda en exposición operativa y de inventario bajo políticas de stock explícitas, y qué decisiones cambian cuando se consideran costos asimétricos?

**Headline v1.0:** Bajo la política de inventario predeclarada `L3_A0.90_I1.0`, Candidate C redujo el coste total normalizado y el `exposure index` en `15.609%` frente a Seasonal Naive S7, pero aumentó las `lost sales` en `8.183%`. La comparación pertenece únicamente a `d_1914–d_1941`; expresa un trade-off de un proxy validation-only, no una recomendación operativa.

**Secondary finding 1:** Seasonal Naive S7 ganó la evaluación oficial agregada en la ventana separada `d_1942–d_1969`, con WRMSSE `0.8470173528345969`, frente a `1.7520099534183922` para last-value y `2.255259588955322` para Candidate C. La reproducción es local y poscompetencia; no hubo tuning, selección ni reentrenamiento después del score.

**Secondary finding 2:** En el diagnóstico fijo de `d_1914–d_1941`, Candidate C presentó el menor coste normalizado en cuatro de seis ratios, mientras last-value pasó a ser menos costoso en `5:1` y `10:1`. El cambio de ranking demuestra sensibilidad a la asimetría asumida, no que alguno de esos ratios represente el coste real de Walmart.

Estas son la única headline cuantificada y las dos únicas findings secundarias seleccionadas para la presentación web reviewer-approved en `[50]`. SEC y FRED permanecen contexto descriptivo. No se mezclan ventanas ni se oculta el resultado oficial. La evidencia analítica fuente y `[45]`–`[50]` están reviewer-approved; las páginas y disclosures de `[51]`–`[55]` quedan PASS pendiente de revisión, con `[56]=not_permitted`.

## Implicación y siguiente revisión

La evidencia respalda una narrativa de decisión basada en trade-offs: mejorar un proxy de exposición no equivale a ganar la evaluación oficial ni a mejorar uniformemente el servicio. La siguiente acción permitida es exclusivamente la revisión externa de la presentación `[51]`–`[55]`; la verificación completa de `[56]` no está autorizada.

## Preguntas abiertas

- ¿Qué ratio de coste y qué política serían defendibles con datos operativos reales de inventario, servicio y shortage cost?
- ¿Se mantiene el trade-off fuera de la ventana validation-only y bajo demanda no censurada?

## Caveats y supuestos que cambian la interpretación

- Los costes son normalizados y no monetarios; no son ahorro, working capital ni costes internos de Walmart.
- M5 registra ventas observadas, que pueden censurar la demanda.
- Inventario, órdenes, lead times y política son simulados.
- La evaluación oficial usa `d_1942–d_1969` y no se combina numéricamente con el headline de `d_1914–d_1941`.
- No hay claims causales, de optimalidad, despliegue, inversión o predicción futura.

# [36] Hallazgos de la capa de decisión e inventario

## Alcance y pregunta empresarial

La pregunta es cómo cambian los resultados de decisión e inventario al comparar tres forecasts bajo costes asimétricos y una política de inventario predeclarada. El alcance es exclusivamente `validation-only`, sobre `d_1914–d_1941` (`H=28`), sin evaluación oficial ni acceso a targets posteriores a `d_1941`.

Los costes de este informe son **normalizados y no monetarios**. Los resultados son evidencia analítica para revisión: no autorizan una decisión operativa, un despliegue ni una inferencia causal.

## Finding 36-01 — Sensibilidad del ranking de forecast al ratio de costes

**Number:** `36-01`

**Level:** `CORE`

**Origin:** `[34]` — diagnóstico de forecast fijo calculado a nivel `item-store-day` antes de la agregación; resultado presentado a nivel total de la ventana de validación.

**Status:** `validated`

**Finding:** En el diagnóstico de forecasts fijos, `candidate_c` presenta el menor `cost_per_actual_unit` normalizado en cuatro de los seis ratios evaluados. El ranking cambia a favor de `last_value_naive` cuando el coste de subestimar alcanza `5:1` y `10:1`. Este resultado es distinto del experimento secundario de recalibración cuantílica y no debe mezclarse con él.

**Magnitude:** Las 18 combinaciones corresponden a `3 forecasts × 6 ratios`. El ranking fijo observado es:

| Ratio under:over | candidate_c | last_value_naive | seasonal_naive_s7_recursive | Menor costo |
|---|---:|---:|---:|---|
| 1:1 | 0.685 | 0.952 | 0.862 | candidate_c |
| 1:2 | 0.823 | 1.493 | 1.256 | candidate_c |
| 1:5 | 1.237 | 3.119 | 2.439 | candidate_c |
| 2:1 | 1.233 | 1.361 | 1.330 | candidate_c |
| 5:1 | 2.875 | 2.591 | 2.734 | last_value_naive |
| 10:1 | 5.611 | 4.640 | 5.073 | last_value_naive |

Como evidencia secundaria y separada, la recalibración cuantílica redujo el coste normalizado frente al forecast fijo en `57.119%` para `candidate_c` con `10:1`, `44.498%` para `last_value_naive` con `1:5` y `48.134%` para `seasonal_naive_s7_recursive` con `10:1`. También hubo excepciones: `last_value_naive` con `2:1` aumentó `1.382%` y `seasonal_naive_s7_recursive` con `1:1` aumentó `0.791%`. La mayor brecha de cobertura fue `46.496 pp`, para `last_value_naive` con `1:5`.

**Business implication:** El forecast preferido depende de la asimetría de costes asumida. `candidate_c` domina los ratios menos inclinados hacia la subestimación, mientras que `last_value_naive` resulta menos costoso en `5:1` y `10:1`. Antes de usar este ranking, Walmart tendría que justificar empíricamente el ratio de costes relevante; este análisis no demuestra que alguno de los seis ratios sea el correcto ni autoriza una decisión operativa.

**Evidence:**

- `outputs/decision/decision_loss_by_forecast_ratio.csv` — diagnóstico fijo; SHA-256 `908c52ea6f385ca481eb6330d7241aa6ef81951828eed3b906dd7adc4ddb87fb`.
- `outputs/decision/decision_loss_calibration.json` — recalibración cuantílica separada; SHA-256 `ea13f997b6019e638122ce39a212dba4bdb2078e67ac259041c79aeacf09dd6b`.
- `outputs/decision/decision_loss_summary.json` — contrato agregado de 18 filas; SHA-256 `cf331f595eca648f813527a0144ecec8c50e85b3f146009e7e1e13f976e443a7`.

**Code:** `src/decisions/asymmetric_loss.py`, `src/decisions/validation_decision_layer.py` y `src/provenance/point34_36_trust_root.py`. Las pruebas contractuales están en `tests/test_decision_loss.py` y `tests/test_execution_contract.py`.

**Reproduce:** Verificar únicamente la evidencia gobernada ya existente con `validate_attempt_3_pass_evidence(Path(".").resolve())`, definido en `src/provenance/point34_36_trust_root.py`. Este paso es read-only y no regenera forecasts, recibos ni outputs.

**Limitations:** La ventana es `validation-only` (`d_1914–d_1941`) y no incluye evaluación oficial. M5 registra ventas observadas, potencialmente censuradas respecto de la demanda. Los ratios son escenarios normalizados, no costes monetarios confirmados de Walmart. No se demuestra causalidad, optimalidad, un cuantil universal ni aptitud para despliegue.

## Finding 36-02 — Trade-off de la política primaria de inventario

**Number:** `36-02`

**Level:** `CORE`

**Origin:** `[35]` — política primaria `L3_A0.90_I1.0`, agregado `total`, ventana completa `H=28`; las salidas también conservan la ventana interior `1…H-L` y agregados `store`/`category`.

**Status:** `validated`

**Finding:** Bajo la política primaria predeclarada, `candidate_c` reduce el coste total normalizado, el exposure index y el holding cost normalizado frente a `seasonal_naive_s7_recursive`, pero aumenta lost sales. Por tanto, `candidate_c` no es uniformemente superior: reduce exposición e inventario retenido bajo el proxy, a costa de menor servicio observado.

**Magnitude:** Los valores del agregado total son:

| Forecast | Fulfilled units | Lost sales | Holding cost normalizado | Shortage cost normalizado | Costo total normalizado | Exposure index |
|---|---:|---:|---:|---:|---:|---:|
| candidate_c | 1,124,544.3 | 107,219.7 | 4,213,173.9 | 214,439.4 | 4,427,613.2 | 3.595 |
| last_value_naive | 1,109,885.0 | 121,879.0 | 6,400,098.0 | 243,758.0 | 6,643,856.0 | 5.394 |
| seasonal_naive_s7_recursive | 1,132,654.0 | 99,110.0 | 5,048,331.0 | 198,220.0 | 5,246,551.0 | 4.259 |

Frente a `seasonal_naive_s7_recursive`, `candidate_c` presenta coste total normalizado y exposure index `15.609%` menores, holding cost normalizado `16.543%` menor y lost sales `8.183%` mayores. Secundariamente, `last_value_naive` presenta coste total normalizado/exposure index `26.633%` mayores, holding cost normalizado `26.777%` mayor y lost sales `22.973%` mayores que S7.

El artefacto completo contiene 1,134 filas agregadas (`3 forecasts × 27 escenarios × 14 agregados`) en niveles `total`, `store` y `category`, sin persistir filas `item-store`. La cobertura de precio es `100%` sobre 91,470 combinaciones `forecast-item-store`, equivalentes a 30,490 series `item-store` por forecast.

**Business implication:** Elegir `candidate_c` bajo esta política implicaría aceptar más lost sales a cambio de menor inventario retenido y menor exposición normalizada. La decisión requiere tolerancias empresariales explícitas de servicio y capital; el menor coste total normalizado no basta para declarar superioridad en todas las dimensiones.

**Evidence:**

- `outputs/inventory/inventory_policy_by_scenario.csv` — escenario primario y agregados; SHA-256 `4ad43fa435585754d2ccf61cfc22682079a05177a60395f054d4f2e75dcd89f6`.
- `outputs/inventory/inventory_policy_summary.json` — contrato agregado de 1,134 filas; SHA-256 `d32e051632271b99fd34bcf3667a138eb357d09c0391ba33e3092c66b16e19b9`.
- `outputs/inventory/inventory_policy_coverage.json` — cobertura de precio y frontera `d_1941`; SHA-256 `270247582f83815615ced945beadec35cd3cb72cd3d82c53faae99005b0ad6fb`.

**Code:** `src/decisions/inventory_policy.py`, `src/decisions/validation_decision_layer.py` y `src/provenance/point34_36_trust_root.py`. Las pruebas contractuales están en `tests/test_inventory_policy.py`, `tests/test_decision_loss.py` y `tests/test_execution_contract.py`.

**Reproduce:** Verificar únicamente la evidencia gobernada ya existente con `validate_attempt_3_pass_evidence(Path(".").resolve())`, definido en `src/provenance/point34_36_trust_root.py`. Este paso es read-only y no ejecuta la simulación de inventario ni crea nuevos outputs.

**Limitations:** M5 contiene ventas observadas y no demanda no censurada. El inventario, las órdenes, el stock inicial y la política son simulados; no representan restricciones operativas reales de Walmart. Los costes son normalizados y no monetarios. No hay evaluación oficial ni claims causales, de optimalidad o de despliegue.

## Limitaciones comunes y lectura prudente

- La evidencia está limitada a `d_1914–d_1941`; no se accedió a evaluación oficial ni a `d_1942+`.
- La demanda observada puede estar censurada por disponibilidad, porque M5 aporta ventas y no demanda no censurada.
- No existen inventario, órdenes o restricciones operativas reales de Walmart en estos cálculos; la política y el stock inicial son supuestos simulados.
- Los resultados son proxies analíticos con costes normalizados, no monetarios.
- SEC/FRED aportan contexto gobernado, pero no explican empíricamente este horizonte.
- Ningún resultado sustenta causalidad, optimalidad, un cuantil universal, despliegue o ejecución operativa.

## Trazabilidad gobernada

La ejecución revisada corresponde al commit `8226331294bdcb501db372a16d721c6d20265938`; la autorización state-only corresponde al commit `8a7b746146eb709a92694dcc5280f17430fc43c4`; la evidencia utilizada es `attempt_0003`.

- Marker: `outputs/validation/decision_layer_attempts/attempt_0003/validation_values_access_started.json` — SHA-256 `077ad5239d4969bf6191086998eaa3ee21fce07496273dd61fab49b97c1ff657`.
- Manifest: `outputs/validation/decision_layer_attempts/attempt_0003/manifest.json` — SHA-256 `7a096f22e5118cd4c1f8dba62f630848da3dfabe74ae44f4dcce164e6693d5b8`.
- Receipt de attempt 3: `outputs/validation/decision_layer_attempts/attempt_0003/receipt.json` — SHA-256 `2b147d1b9af70b7796a6c9bb1d04b64ea092cf70ab607188648d795465e173ae`.
- Receipt activo byte-identical: `outputs/validation/decision_layer_receipt.json` — SHA-256 `2b147d1b9af70b7796a6c9bb1d04b64ea092cf70ab607188648d795465e173ae`.
- `outputs/decision/decision_loss_summary.json` — SHA-256 `cf331f595eca648f813527a0144ecec8c50e85b3f146009e7e1e13f976e443a7`.
- `outputs/decision/decision_loss_by_forecast_ratio.csv` — SHA-256 `908c52ea6f385ca481eb6330d7241aa6ef81951828eed3b906dd7adc4ddb87fb`.
- `outputs/decision/decision_loss_calibration.json` — SHA-256 `ea13f997b6019e638122ce39a212dba4bdb2078e67ac259041c79aeacf09dd6b`.
- `outputs/inventory/inventory_policy_summary.json` — SHA-256 `d32e051632271b99fd34bcf3667a138eb357d09c0391ba33e3092c66b16e19b9`.
- `outputs/inventory/inventory_policy_by_scenario.csv` — SHA-256 `4ad43fa435585754d2ccf61cfc22682079a05177a60395f054d4f2e75dcd89f6`.
- `outputs/inventory/inventory_policy_coverage.json` — SHA-256 `270247582f83815615ced945beadec35cd3cb72cd3d82c53faae99005b0ad6fb`.

El receipt conserva `reviewer_status=pending`: la aprobación técnica de `[34]–[35]` y `[36]` es externa y no reescribe evidencia inmutable. En el cierre histórico de ese bloque, el lifecycle era `pass_reviewer_approved_point_36_reviewer_approved`, `[36]` estaba `reviewer_approved` y `[43]` todavía no estaba permitido.

# [43] Power BI Core agregado — PASS reviewer-approved

## Alcance

El entregable Power BI utiliza exclusivamente 15 tablas agregadas y versionadas bajo `powerbi/data/`. El modelo Import contiene 12 relaciones de dirección única y 46 medidas DAX. No se abrió `data/raw`, DuckDB, la evaluación oficial ni Power BI Service durante ese bloque. `[44]` fue completado y aprobado externamente en su bloque posterior; su contexto descriptivo se documenta más abajo.

## Evidencia nativa

- **Executive:** 9 visuales; cuatro cards, slicer de forecast, bar chart WRMSSE y waterfall PVM nativo.
- **FP&A & Decision:** 10 visuales; slicers de ratio/forecast, tres cards, matrix con formato condicional y dos charts de sensibilidad.
- **Sales & Operations:** 11 visuales; slicers de forecast/escenario, tres cards, drill State→Store, categoría, exposure y tabla agregada.
- **Corporate Finance:** 12 visuales; cards, slicer fiscal y charts conectados a 2022–2026, conforme al inventario nativo aprobado.

Los 42 visuales son nativos; no existe ningún `visualType=image`. Cada página mide 1920×1080. El slicer de forecast filtró cards, charts y tabla; el drill cambió de State a Store y regresó a State. El PBIX pasó refresh, guardado, cierre/reapertura, segundo refresh y guardado final sin visuales rotos.

## Export y límites

El PDF de cuatro páginas y sus vistas previas se exportaron después del segundo refresh desde el PBIX interactivo corregido. `powerbi/artifact_receipt.json` conserva los hashes, tamaños, inventario de páginas, referencias DAX y flags de seguridad.

Este dashboard resume evidencia local y agregada. WRMSSE es una reproducción local poscompetencia; los costes de decisión e inventario son normalizados, no monetarios; la estimación de retail M5 no es revenue consolidado de Walmart; y el contexto SEC es descriptivo. No se formula un claim causal, de optimalidad, despliegue, inversión ni predicción futura. El receipt inmutable conserva `reviewer_status=pending`; la aprobación externa está registrada en el lifecycle final de `[43]`. Ese cierre no autorizó por sí mismo `[44]` ni ningún punto posterior.

# [44] Contexto FRED mínimo — PASS reviewer-approved

El contexto macro usa únicamente CPI, desempleo, Fed Funds y retail sales para la fecha congelada `2016-05-01`. Su rol es descriptivo y contextual: no explica empíricamente el horizonte M5, no define regímenes y no sustenta causalidad. El manifest, `outputs/web/macro_context.json` y el receipt están anclados por el lifecycle reviewer-approved de `[44]`; la evidencia inmutable mantiene `reviewer_status=pending` porque la aprobación se registra externamente.
