Open methodology · deterministic pipeline
Procurement acceleration model
A 0–90 day screening index for unusual defense procurement, industrial demand, acquisition policy, and critical-input pressure. Not a conflict probability or contract forecast.
1. Composite
Five independent official-source components are normalized to 0–100:
S = 0.30 T + 0.25 U + 0.20 N + 0.15 R + 0.10 M + B
| Component | Weight | Source |
|---|---|---|
| EU defense notices (T) | 30% | TED Search API |
| U.S. industrial awards (U) | 25% | USAspending |
| NATO demand language (N) | 20% | NATO sitemap |
| Acquisition policy (R) | 15% | Federal Register |
| Critical materials (M) | 10% | FRED |
Unavailable components are excluded and remaining weights renormalized. A validated component can be retained for at most 72 hours and is visibly marked.
2. Robust velocity
TED, NATO, and Federal Register signals use current 14-day activity expressed as a weekly equivalent versus 12 preceding weeks.
z = (x − median(history)) / (1.4826 × MAD)
density = min(scale × x, 55)
anomaly = min(18 × max(z,0), 45)
score = 0.55 × density + 0.45 × anomaly
If MAD is zero, baseline standard deviation is used; if both are zero, z is zero. TED selection uses CPV 35300000, 35400000, 35600000, and 35700000. NATO titles are deterministically weighted for procurement, production, industry, munitions, capabilities, investment, contracts, air defense, missiles, and drones. Federal Register rules and proposed rules receive 1.5 weight; other DARS documents receive 1.
3. U.S. industrial awards
USAspending transactions are limited to Department of Defense contracts and eight aircraft, missile, spacecraft, and ammunition manufacturing NAICS codes. Because reporting can lag, time windows anchor to the latest reported action date and the entire component is freshness-discounted.
freshness = clamp(1 − reporting lag days / 120, 0, 1)
magnitude = clamp((log₁₀(max(weekly obligations,1)) − 6) / 3 × 55, 0, 100)
score = freshness × (0.55 × magnitude + 0.45 × min(18 × max(z,0),45))
This prevents old award data from being represented as a current signal. Negative obligations are treated as de-obligations and contribute zero to acceleration magnitude.
4. Critical materials
FRED global copper (PCOPPUSDM) and nickel (PNICKUSDM) monthly returns are robust-z standardized against 30 prior returns.
pressure = clamp((|z| − 0.5) / 2.5 × 100, 0, 100)
M = 0.55 × copper pressure + 0.45 × nickel pressure
5. Concurrence and bands
A +5 bonus requires an official demand/policy component (TED, NATO, or Federal Register) ≥45 and an industrial/input component (USAspending or materials) ≥40.
| 0–24.9 | Baseline |
| 25–44.9 | Watch |
| 45–64.9 | Elevated |
| 65–79.9 | High |
| 80–100 | Severe |
6. Reproduce
No API key, account, paid service, or generative AI is required.
git clone https://github.com/MonarchCastleTech/defense-procurement.git cd defense-procurement python -m pip install -r requirements.txt python -m pytest -q python pipeline/defense_procurement_pipeline.py python -m http.server 8000
GitHub Actions repeats tests, collection, evidence commit, and Pages deployment every six hours.
7. Limitations
Procurement notices are not awards; obligations can be modified or de-obligated; USAspending has reporting lag; official publication volume reflects communications and rulemaking practice; metals are globally confounded. The model screens acceleration pressure. It does not infer intent, predict war, estimate contract probability, or replace primary-document review.
