Почему цена Bitcoin «сломалась»: разбор аномалий 2022–2026 с WhyTrend

от автора

Увидел провал на графике → открыл Google или Twitter → полдня собираешь версии «почему». Знакомо? Детектор аномалий сам по себе даёт только точки на оси времени, а вопрос «почему» как был ручным, так и остаётся.

В этот раз я прогнал WhyTrend не на паре аккуратных точек из Google Trends, а на полном ряде BTC за 4.5 года — и заодно на двух разных LLM. Результат оказался неожиданным: модель меньшего размера дала в три раза больше настоящих объяснений, чем более крупная. Расскажу, что случилось и почему.

Что запускали

Данные — дневные close BTC/USDT, 1680 точек без единого пропуска, с 1 января 2022 по 7 августа 2026. Ключевое слово одно — Bitcoin, окно вокруг каждой найденной точки — ±5 дней. Детектор — Ruptures (PELT, penalty=10). Ranker — BM25, топ-8.

pipeline = (    Pipeline(window_days=5)    .add_source(CSVSource("btc_usd_daily.csv", keyword="Bitcoin"))    .add_detector(RupturesDetector(algorithm="pelt", model="rbf", penalty=10.0))    .add_collector(HackerNewsCollector(max_results=15))    .add_ranker(BM25Ranker(top_k=8))    .add_explainer(OllamaExplainer(model=MODEL, timeout=180.0)))

Источник контекста — Hacker News, и тут есть причина, почему не более очевидный Google News: у Algolia (поиск по HN) есть фильтр по дате создания поста. Живой Google News живёт настоящим моментом, а для вопроса «что писали в мае 2022 года» он почти бесполезен — архивного среза с фильтром по дате там просто нет.

CLI (whytrend analyze ...) пока в разработке, roadmap v0.5 — сейчас работа идёт через Python API и такие вот скрипты-примеры, этого достаточно, чтобы пощупать поиск аномалий на своих данных.

Два слоя аномалий

Отдельным side-pass’ом прогнал ещё и Z-score по дневным доходностям (threshold=3.5) — это не смена режима рынка, а просто резкие дни:

Дата

Тип

Return

Score

2022-06-13

drop

−15.38%

0.829

2022-02-28

spike

+14.49%

0.775

2022-11-09

drop

−14.15%

0.763

Всего таких дней вышло 23. Полезно как индикатор рыночного шума, но если скормить все 23 в LLM — получите роман и счёт за электричество вместо аналитики. 2022-11-09, кстати, легко узнаётся — это окно краха FTX.

Главный слой кейса — не удары, а смены режима. Ruptures нашёл 8 changepoint’ов:

2024-11-11  close=88,648   score=0.1962026-01-30  close=84,260   score=0.1422024-02-25  close=51,729   score=0.0942025-05-10  close=104,810  score=0.0792025-11-11  close=103,059  score=0.0752023-03-17  close=27,395   score=0.0592022-05-11  close=29,104   score=0.0582023-11-07  close=35,399   score=0.024

Масштаб удобный: не тысяча алертов, а карта переломов, которую можно наложить на известную историю рынка — крах Terra/Luna в мае 2022, банковский стресс весны 2023, ETF-ралли 2024 года. Именно эти 8 точек ушли в пайплайн объяснения — на них всё и разыгралось дальше.

Первый прогон — и коты из Монголии

Первый раз гонял на Qwen 32B. Пайплайн отработал честно, но в JSON-отчёте нашлась деталь, которую нельзя обделить вниманием: у шести из восьми событий сработал fallback — после ReadTimeout у Ollama. Пайплайн не упал, что уже хорошо — вместо этого подставил эвристику «возможно, связано с top evidence». Но именно отсюда взялись объяснения вроде:

The changepoint in ‘Bitcoin’ may be related to «Stray Cats and Bitcoin: A Costly Incident at a Bitcoin Mine in Mongolia» from hacker_news.

Confidence у этого объяснения — 1.00. И это важно понимать правильно: не «модель на 100% уверена», а артефакт запасного пути. Когда LLM не отвечает вовремя, fallback берёт первый документ по BM25-рейтингу и молча подставляет его как причину — без реального рассуждения. Статья про бездомных котов на майнинг-ферме в Монголии никак не объясняет перелом тренда цены, она просто содержала слово «Bitcoin» и оказалась в top evidence.

Такая же история — «Bitcoin Genetic Code Paper», «Bitcoin Private Key Finder»: всё с тем же confidence=1.00, всё тем же механизмом. Корреляция в окне не равна причине, а таймаут локальной 32B-модели на восьми последовательных вызовах — рабочий риск, а не редкое исключение.

Там, где модель реально успевала ответить, картина другая. По 7 ноября 2023 года — единственный случай на 32B, где confidence не 1.00 и явно не fallback (0.60):

The detected changepoint in Bitcoin’s price on November 7, 2023, may be attributed to market speculation or a short squeeze, given the recent peak near $37K.

Top cause — «Bitcoin Tops $37K for First Time Since May 2022». Это уже похоже на настоящую аналитику. Но два таких случая из восьми — маловато, чтобы статья звучала убедительно.

Второй прогон: модель поменьше из того же семейства

Прежде чем переписывать выводы, решил проверить очевидную гипотезу: что если дело не в качестве модели, а просто в том, что 32B на восьми последовательных вызовах регулярно не укладывается в timeout? Прогнал тот же пайплайн, тот же CSV — только qwen2.5-coder:14b вместо 32b. Это не та же модель с урезанным квантованием, а отдельный, меньший по числу параметров чекпоинт того же семейства Qwen2.5-Coder — обе версии Ollama раздаёт уже квантованными по умолчанию (обычно Q4_K_M), так что сравнение честное — это разные модели, а не одна и та же с разной точностью весов.

Qwen 32B

Qwen 14B

Время прогона

~5 мин

~3 мин

Настоящих объяснений

2 из 8

6 из 8

Fallback

6 из 8

2 из 8

Тут сразу напрашивается вопрос: если timeout=180с, а fallback словили 6 из 8 событий, откуда всего 5, а не 18 минут(6×180с)? Explainer в Pipeline вызывается для всех событий через asyncio.gather, не по очереди — wall-clock время близко к самому долгому вызову (плюс сбор контекста), а не к сумме всех.

Не ожидал такого исхода. 14B оказалась не просто быстрее — она надёжнее в разы, потому что реже упирается в timeout. Похоже, для этой конкретной задачи (короткий структурированный ответ по уже отранжированным документам) более тяжёлая модель не даёт выигрыша в качестве, зато чаще не успевает ответить вовремя — а не успела значит fallback.

Вот все 8 событий из 14B-прогона целиком:

Дата

Confidence

Что нашла модель

Результат

2024-11-11

1.00

«Bitcoin Genetic Code Paper»

fallback

2026-01-30

0.50

Один крупный игрок удерживает цену ниже $90K

реальный вывод

2024-02-25

0.80

Негативный сентимент + регуляторное давление (3 причины)

реальный вывод

2025-05-10

0.90

Keynote Сэйлора про корпоративный Bitcoin

реальный вывод

2025-11-11

0.80

Изъятия Bitcoin государствами + обвинения в хаке на $13B

реальный вывод

2023-03-17

0.85

Банковская неопределённость + крипто-ралли

реальный вывод

2022-05-11

0.80

Общий рыночный сентимент, распродажи (окно краха Terra)

реальный вывод

2023-11-07

1.00

«Bitcoin vs. Medical School»

fallback

Забавная деталь: 7 ноября 2023 года — та самая точка, где на 32B модель дала единственный убедительный неfallback-ответ про short squeeze — на 14B неожиданно ушла в fallback с котами-подобной случайностью про «Bitcoin vs. Medical School». То есть улучшение не строго монотонное: 14B в среднем надёжнее, но не гарантирует успеха на каждой конкретной точке, где не подвела 32B.

А вот как это выглядит не в пересказе, а в самом отчёте — два реальных фрагмента, ссылки и confidence как есть, без причёсывания:

### Explanation 3- Confidence: 0.80The detected changepoint in Bitcoin value on 2024-02-25 may beinfluenced by a combination of negative sentiment and regulatoryconcerns.#### Causes1. Bitcoin Is Mostly Worthless (1.00)   Source: hacker_news   URL: https://ajit.dhiwal.com/bitcoin-is-the-snake-oil-of-our-generation-2544a1984ce92. Exodus Bitcoin Wallet: $490k swindle (0.82)   Source: hacker_news   URL: https://popey.com/blog/2024/02/exodus-bitcoin-wallet-490k-swindle/3. European Central Bank argues against Bitcoin ETF (0.50)   Source: hacker_news   URL: https://www.ecb.europa.eu/press/blog/date/2024/html/ecb.blog20240222~0929f86e23.en.html

Три независимых источника, три разных веса — модель не просто нашла один заголовок с нужным словом, а честно сопоставила несколько версий с разной степенью уверенности в каждой. Второй пример — на 11 ноября 2025 года, там источники и вовсе спорят между собой по тональности:

### Explanation 5- Confidence: 0.80The detected changepoint in Bitcoin value on 2025-11-11 may beinfluenced by recent news about governments seizing more Bitcointhan gold and accusations of a US involvement in a $13 billionBitcoin hack.#### Causes1. Governments Seized More Bitcoin Than Gold (0.85)   Source: hacker_news   URL: https://illya.sh/thoughts/more-bitcoin-has-been-seized-than-gold2. China Accuses US of Orchestrating $13B Bitcoin Hack (0.78)   Source: hacker_news   URL: https://www.bloomberg.com/news/articles/2025-11-11/china-accuses-us-of-orchestrating-13-billion-bitcoin-hack

Обе причины реальные, обе про 11 ноября 2025 года, но говорят о разном — геополитика вокруг изъятий Bitcoin государствами и обвинения в хакерской атаке. Модель не выбрала одну версию произвольно, а показала обе с весами, оставив решение о том, какая важнее, за читателем отчёта — то есть ровно то, для чего вообще нужен слой ranking перед LLM, а не просто «покажи топ-1 документ».

Что это значит на практике

Не «магию», а конкретную экономию на конкретном шаге. Карта смен режима за четыре с половиной года собирается за один прогон, а не за вечер кликанья по TradingView. Черновик гипотез со ссылками — даже шумный, с ложными срабатываниями вроде котов из Монголии — это уже точка старта расследования, а не чистый лист.

И отдельно — честный failure mode вместо тихого выдуманного нарратива без evidence. Таймаут → fallback на top evidence, а не сочинённая моделью история, которая выглядит правдоподобно, но ничем не подкреплена. WhyTrend не защищает от ложных срабатываний автоматически, но честно показывает, где сработал fallback — отличать его от настоящего вывода пока приходится по confidence и здравому смыслу, но сам факт, что это видно, уже немало.

Практический вывод для тех, кто будет повторять: не гнаться за самой крупной локальной моделью. В этом кейсе 14B оказалась разумным балансом — быстрее и стабильнее 32B, без заметной потери в качестве. Поднимать timeout выше 180 секунд имеет смысл, только если всё же нужна именно 32B и её не жалко ждать дольше. Или вообще использовать не локальною модель, а свой ключ для доступа к нейросетевому API одного из известных провайдеров(такая возможность тоже поддерживается).

Что дальше по проекту

В roadmap — CLI для тех, кому не хочется встраивать фреймворк кодом и гибридный ranker с фильтром «correlation_only / likely_cause» — чтобы меньше случайных котов попадало в executive summary без явной пометки, что это не настоящая причина.

Как повторить у себя

Все что нужно — лежит в отдельной ветке репозитория:

git clone https://github.com/AlexProvatorov/WhyTrendcd WhyTrendgit checkout demo/btc-case-2022-2026uv sync --extra ruptures# Ollama должна слушать localhost:11434uv run python examples/btc_case_study_2022_2026.py \  --llm ollama \  --ollama-model qwen2.5-coder:14b

Отчёты появятся в examples/output/ — оба формата, markdown и JSON.

Исходный код — на GitHub. Если у вас есть идея, как отличать честный fallback от настоящего вывода модели ещё до чтения confidence вручную — это как раз то, что стоит добавить в roadmap следующим, и pull request тут будет особенно кстати.

Спасибо, что дочитали.

ссылка на оригинал статьи https://habr.com/ru/articles/1069150/