惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The GitHub Blog
The GitHub Blog
博客园 - 三生石上(FineUI控件)
V
V2EX
博客园 - 司徒正美
小众软件
小众软件
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Tailwind CSS Blog
Last Week in AI
Last Week in AI
雷峰网
雷峰网
月光博客
月光博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Apple Machine Learning Research
Apple Machine Learning Research
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
S
SegmentFault 最新的问题
美团技术团队
Hugging Face - Blog
Hugging Face - Blog
WordPress大学
WordPress大学
宝玉的分享
宝玉的分享
爱范儿
爱范儿
博客园 - 聂微东
量子位
J
Java Code Geeks
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Vercel News
Vercel News

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания
Математика больших чисел: из игры с нулевой суммой в игру...
Петр Трипольский · 2026-06-01 · via Все публикации подряд на Хабре

Математика больших чисел: из игры с нулевой суммой в игру с растущей суммой

Средний

4 мин

11K

Исходный код, разобранный в статье, опубликован в этом репозитории.

Любая торговая стратегия в бесконечной временной перспективе стремится к нулевому матожиданию сделки: ничего не заработали, заплатили комиссию бирже. Можно предположить, что это связано с утечкой информации, стратегию применяют другие участники рынка и забирают ликвидность. Но дело в другом: это фундаментальный закон больших чисел. Объем рынка подлежит прогнозу, а значит это конечная сумма. При игре с конечной суммой капитал на рынке постоянен и только мигрирует между участниками: твой заработок — это чей-то убыток.

luxalgo.com

luxalgo.com

Посмотрите на график: рост дохода портфеля сначала растет, потом упирается в плато без выраженного движения вверх или вниз. Ближайшая аналогия: предмет, подброшенный вверх, при балансе ускорения и гравитации останавливается в точке, а потом падает вниз.

Игра с конечной суммой

Любая эффективная quant-стратегия — это эксплойт неэффективности рынка. Как только эксплойтом пользуются все — неэффективность исчезает, потому что её ровно и создавало то, что её никто не арбитражил. Рынок приходит в равновесие. А равновесие для участника означает простую вещь: математическое ожидание сделки становится нулём минус комиссия биржи. Не «маленькая прибыль», а строго отрицательное число.

Побег в игру с растущей суммой

Выход из этой ловушки один: смотреть на то, что приносит в систему деньги извне, а не перераспределяет уже имеющиеся. Можно подумать, что это бухгалтерские отчёты компаний или фондов, но нет: публикация бухгалтерии не гарантирует детерминированное поведение участников рынка. Математически гарантия растущей суммы игры — прямая рекомендация на публику, если её размер стремится к бесконечности.

Едем в рай на чужом горбу

Ранее я разбирал stop hunting паттерн по сбору ликвидности: участникам рынка публикуют пост с паническими настроениями для массовой распродажи, как следствие актив можно единовременно выкупить дешевле. Но заработать так же можно и на эйфории.

Metric

Value

Total trades

22

Wins / Losses

15 / 7

Winrate

68%

Mean trade PNL

+2.374%

Std dev per trade

7.676%

Sharpe Ratio (per-trade)

+0.302

Телеграм-канал публикует сигналы, они удачные в 68% случаев. Рядовой вкладчик не будет смотреть дальше. А это ловушка: риск-менеджмент вовсе не страхует от сценария чёрного лебедя.

Риски:

  1. Высокая волатильность относительно средней прибыли

    Средняя сделка +2.37%, но стандартное отклонение ±7.86%. Один-два сильных убытка легко съедают прибыль десятка мелких выигрышей, а winrate при этом остаётся «красивым».

  2. Низкий Sharpe = слабая компенсация риска

    Sharpe 0.3 говорит о том, что прибыль недостаточно велика по сравнению с принимаемым риском. Хороший трейдинг стремится к Sharpe > 1.0.

Это другой паттерн использования ликвидности толпы: pump and dump. Проверим гипотезу, выбрав только те сигналы, когда цена актива за предыдущие N часов уже росла.

Metric

Value

Total trades

11

Wins / Losses

11 / 0

Winrate

100%

Mean trade PNL

+6.972%

Std dev per trade

8.642%

Sharpe Ratio (per-trade)

+0.807

Что улучшилось:

  1. Sharpe Ratio вырос в 2.67 раза (0.302 → 0.807)

    Теперь прибыль гораздо лучше компенсирует принимаемый риск.

  2. Средняя сделка стала почти в 3 раза прибыльнее (+2.37% → +6.97%)

    Ушли просадки портфеля: меньше убыточных сделкок

Рост цены за последние N часов это эмпирический критерий. Я знал куда смотреть заранее, но анализ матрицы постов рекомендательного характера я не делал. Если взять топ 100 каналов, используя время публикации и направление рекомендации можно вычислить одного автора за несколькими анонимными аккаунтами. Далее, с привязкой к одному автору, можно узнать, сколько еще каналов он потенциально способен использовать для продолжения пампа

Как на этом заработать

Используя self enforcement runtime, парсер и высокопроизводительный бектест можно актуализировать эмпирические критерии входа автоматически. Парсер канала вытаскивает из текста направление, зону входа, цели и стоп простыми regex-правилами:

const SIGNAL_FORMAT: ParseFormat<SignalFields> = {
    symbol: {
        pattern: /#([A-Z0-9]+)\/USDT/,
        group: 1,
    },
    direction: {
        pattern: /(ШОРТ|ЛОНГ)/i,
        transform: (raw) => (raw.toUpperCase() === "ШОРТ" ? "short" : "long"),
    },
    entry: {
        pattern: /зоне\s+\$?([\d.,]+)\s*[-–—]\s*(?:\$?[\d.,]+\s*[-–—]\s*)?\$?([\d.,]+)(?=\s)/i,
        transform: (_, m) => ({ from: num(m[1]), to: num(m[2]) }),
    },
    targets: {
        pattern: /Закрыть(?:\s+ордер)?\s+по(?:\s+цене)?\s+\$?([\d.,]+)/gi,
        transform: (_, m) => num(m[1]),
        multi: true,
    },
    stoploss: {
        pattern: /СТОП-?ЛОСС:\s*\$?([\d.,]+)/i,
        transform: (_, m) => num(m[1]),
    },
};

Высокопроизводительный бектест высчитывает метрики по pre-publication данным

const PRE_CANDLES_LIMIT = 1440; // 24h 1m свечей для baseline

// окно getCandles(.., 1440) покрывает ровно сутки ДО публикации сигнала
const preCandles = await getCandles(symbol, "1m", PRE_CANDLES_LIMIT);

// momentum24h — общее изменение цены за 24h до публикации.
// Положительный = памп уже идёт; отрицательный = рынок падает.
const momentum24hPct =
  ((preCandles[preCandles.length - 1].close - preCandles[0].open) /
    preCandles[0].open) * 100;

Logger.log("pre-publication data", { momentum24hPct })

ИИ-агент программирует фильтры, меняя их как код на каждую актуализацию.

const SHORT_MIN_AVG_RANGE_PCT = 0.07;
const LONG_MIN_MOMENTUM_24H_PCT = -1;

// Фильтр 1: SHORT на "спящем" активе (avgRange < 0.07% за сутки, как TRX) —
// тонкая ликвидность, идеальная мишень для stop-hunt. Это случай liquidity
// harvesting: следовать сигналу нельзя.
if (signal.direction === "short" && avgRangePct < SHORT_MIN_AVG_RANGE_PCT) {
  return null;
}

// Фильтр 2: LONG, когда цена за сутки упала больше чем на 1% — "ловля ножей".
// Притока капитала нет, есть падение; подписчиков заводят против тренда.
if (signal.direction === "long" && momentum24hPct < LONG_MIN_MOMENTUM_24H_PCT) {
  return null;
}

Фильтр 1 ловит скам-режим liquidity harvesting (нулевой приток, манипуляция стопами) и говорит «не входи». Фильтр 2 ловит отсутствие фундаментального притока (рынок падает, никакого пампа нет) и тоже говорит «не входи». Остаётся ровно то, ради чего всё затевалось: сигналы, под которыми реальный приток капитала.

Итог

Памп через Telegram — это не баг рынка, который арбитрируется и исчезнет. Это поведение толпы, которое воспроизводится каждый раз, когда у автора есть аудитория. Пока есть подписчики — есть и приток. А значит, есть и фундаментальный фактор, к которому неприменима арифметика равновесия: это игра с растущей суммой.

Спасибо за внимание