Skip to content

Latest commit

History

24 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Glory — живая модель мировой экономики

Мировая экономика как направленный граф на трёхмерном глобусе: 249 узлов (страны, компании, проливы) · 15 041 ребро (торговля, банковские требования, энергия, чипы, критические поставки) · ~2.2 млн наблюдений с 1999 года · 10 источников данных — всё бесплатное и официальное.

Валютные пары — приложения к глобусу: скоринг всех 45 кроссов G10 с честным бэктестом на 20 лет. Шоки — симулируются и валидируются на естественных экспериментах (Россия-2022, Иран-2012/2018, Венесуэла-2019, COVID).

Дисклеймер. Это исследовательский инструмент, а не инвестиционная рекомендация. Валютная модель не проходила walk-forward на живых данных; edge скромный и может исчезнуть. Ничто здесь не является финансовым советом.

Что умеет

Глобус (http://127.0.0.1:8000 после запуска):

  • 7 линз: торговые потоки · реальные ставки · инфляция · дисбалансы · созданная ценность (R&D) · энергия и чипы · финансы (доля USD в банковском фондировании — карта рычага вторичных санкций)
  • гравитационная линза: наведи на любую страну — вспыхивают её личные потоки (экспорт/импорт) и панель движения средств
  • ◆ стратегические активы: TSMC, ASML, SpaceX, Aramco, Газпром, NVIDIA, Samsung, Foxconn — компании как точки отказа мировой экономики
  • ⚓ 28 проливов и каналов с живыми транзитами судов (AIS, лаг ~5 дней): обвал Ормуза виден за месяцы до торговой статистики
  • 🛰 288 спутников, движущихся по настоящим орбитам (SGP4 в браузере)
  • 📋 аналитическая сводка: rule-based нарратив о происходящем
  • 💱 скоринг валютных пар G10 с разложением по факторам
  • 💥 режим шока: кликни страну — волна расходится по измеренным рёбрам (итеративный Леонтьев); мульти-шоки типа «Залив −50%» через API

Как считается шок (glory/model/shock.py, ~40 строк): итеративный Леонтьев по измеренным рёбрам — удар_i = passthrough·Σ_j удар_j·(поток_ji + поток_ij)·12/ВВП_i, с НЕЛИНЕЙНЫМИ потолками min(удар, внешняя торговля/ВВП, 100%) — без них перевалочные хабы «теряют» сотни процентов ВВП. Это не плавная диффузия из учебника: потолки насыщают каскад. Для финансовых рёбер — отдельный движок (fincascade.py): пороговый каскад Furfine (банковская система держит до буфера, потом падает целиком). Для траекторий с адаптацией людей — цикл A↔B (loop.py).

Симуляция шоков — два слоя (принцип: экономика — это отношения людей, и люди адаптируются к стимулам, а не к потокам):

  • слой A «физика»: распространение по рёбрам, валидирован на России-2022 — экспозиция ранжируется верно; на COVID честно показал границу (короткие шоки спроса определяет товарный состав, не глубина интеграции)
  • слой B «адаптация»: классификатор режима принуждения (тарифы/санкции), каналы страха — финансовая ставка в системе коалиции (урок Ирана-2018) и торговая зависимость. Экзамены на 4 эпизодах: направление не хуже baseline, ранжирование Spearman +0.2…+0.5. В прод пока НЕ допущен — критерии в scripts/validate_v2_sanctions.py
  • журнал испытаний: 6 гипотез слоя B проверено, все опровержения зафиксированы (включая «двухрежимные хабы» — проверена и откачена)

Наука под капотом:

  • слои уверенности H/P/S: каждое наблюдение несёт confidence и происхождение
  • зеркальная статистика для нерепортящих (Тайвань, Россия) — с пониженной уверенностью и явной пометкой
  • ALFRED-винтажи для US, лаги публикации для остальных — защита от подглядывания в будущее в бэктестах
  • журнал испытаний model_trials с дефляцией Sharpe по числу проб — защита от подгонки под историю

Модель v2 (текущая рабочая): реверсия реальной ставки в G10. Бэктест 2005–2025: hit-rate 53–56%, IC +0.10 (12 мес), Sharpe 0.44 при пороге шума 0.12. История испытаний — в model_trials.

Запуск

pip install fastapi uvicorn requests
setx GLORY_FRED_KEY "твой_ключ"# fred.stlouisfed.org/docs/api/api_key.html
setx GLORY_COMTRADE_KEY "твой_ключ"# comtradedeveloper.un.org (Free APIs)# первичный сбор данных (несколько часов, всё идемпотентно):
python scripts/expand_globe.py # ядро: 44 страны, полный граф
python scripts/expand_world.py all # весь мир: 212 узлов
python scripts/add_assets.py # компании + Тайвань (зеркала)
python scripts/add_logistics.py # проливы + спутники
python scripts/add_financial.py # банковские требования BIS LBS
python -c "from glory.store import db; from glory.ingest.sources import comtrade, ecb_fx, bis; c=db.get_conn(); comtrade.collect(c); ecb_fx.collect(c); bis.collect_reer(c, ['EU','US','JP','GB','CH','AU','CA','NZ','SE','NO'])"
uvicorn glory.api.main:app # → http://127.0.0.1:8000

Структура

glory/
catalog.py узлы ядра, индикаторы, ресурсные/ядерные множества
assets.py стратегические активы (кураторские данные + источники)
store/ SQLite: схема + все записи через upsert с confidence
ingest/sources/ ECB, FRED/ALFRED, IMF (IMTS+CPI), BIS, WB, Comtrade,
PortWatch, CelesTrak, ECB FX
model/
features.py признаки валютных зон (z-скоры, лаги публикации)
scoring.py скоринг пар (веса = испытание №2 журнала)
narrative.py rule-based аналитика для сводки
api/main.py FastAPI: snapshot, flows, narrative, fx/scores, satellites
scripts/ сборщики данных + бэктесты (кэш: прогон за секунды)
ui/index.html глобус (globe.gl), весь UI один файл
db/glory.db НЕ в git (~350 МБ, пересобирается скриптами)

Источники данных и их условия

БД не распространяется с кодом — не только из-за размера (~350 МБ), но и потому что условия источников не позволяют массовую редистрибуцию сырых данных. Всё пересобирается скриптами выше за один вечер.

ИсточникЧто даётКлюч
IMF SDMX (IMTS, CPI)двусторонняя торговля, инфляциянет
World Bank APIВВП, население, координаты, индикаторынет
FRED / ALFREDмакро США с винтажамибесплатный
ECB SDWкурсы, ставки еврозонынет
BIS Stats (CBPOL, EER, LBS)ставки ЦБ, REER, банковские требованиянет
UN Comtradeэнергия HS27, чипы HS8542бесплатный
IMF PortWatchтранзиты через проливы (AIS)нет
CelesTrakспутники (SATCAT, TLE)нет

При использовании данных в публикациях цитируй первоисточники — они это требуют, и они это заслужили.

Правила научной честности (DESIGN.md §5)

  1. Лучше дыра, чем ложь (пример: нефть «в Тайвань» оказалась свалкой конфиденциальных направлений ОПЕК — удалена)
  2. Каждое испытание модели → model_trials; порог значимости растёт с числом проб (дефлирование Sharpe)
  3. Скоринг линейный, малопараметрический; каждый сигнал объясним
  4. Зеркальные данные всегда помечены и весят меньше прямых
  5. S-слой — аномалии, не «объёмы теневых потоков»
  6. Скор — не сигнал к сделке; edge скромный, размер позиции обязан это уважать

About

Living model of the world economy: graph on a 3D globe, 2.2M observations, shock simulation validated on natural experiments

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages