Недавно наткнулся на X на довольно интересную статью.
Автор рассказывает, как за эти годы он постепенно раскрутил свой «маховик»: три колеса — денежный поток, основные активы, альфа — взаимно питают друг друга. Если докопаться до сути, всё сводится к одной фразе: сначала найди способ выжить, живи достаточно долго, а потом уже говори о сложном проценте.
Автор проработал эту систему вручную, опираясь на личный опыт и рыночное чутьё. Но после прочтения пришла в голову мысль: по сути, это набор дисциплин, а дисциплина — это как раз то, что человеку труднее всего соблюдать, а программе — легче всего. Можно ли воспроизвести это с точки зрения количественного подхода?
Идея воспроизведения не в том, чтобы изобрести что-то новое с нуля, а в том, чтобы порыться в закромах: у нас уже есть готовые вещи, которые мы делали и запускали раньше — стратегия DCA (доллар-стоимостное усреднение), стратегия пролонгации (раскатки), движок выбора монет (harness). Какая из них по своему естественному поведению соответствует требованиям того или иного колеса? Если совпадает — берём, подставляем, а затем соединяем их в замкнутый цикл с помощью потоков капитала.
Основная часть этой статьи — объяснить, «почему выбраны именно эти три, в чём логика каждой, и как они совпали с соответствующим колесом».
| Исходная концепция | Требуемое поведение | Соответствующая стратегия |
|---|---|---|
| Денежный поток | Не быть вынужденным продавать при экстремальных движениях | Механизм резервной линии |
| Основные активы | Только покупать, не продавать, быть другом времени | Стратегия DCA |
| Альфа | Минимальная стоимость с максимальной доходностью, прибыль перетекает в основу | Движок выбора монет для поиска целей + стратегия пролонгации для торговли |
Колесо второе: Основные активы ← Стратегия DCA
Что требуется по замыслу
Автор определяет основные активы как те, что служат для сложного процента, для дружбы со временем, которые не будут принудительно проданы даже при экстремальных движениях. Они не для «торговли», они для «держать и ждать». Единственное скрытое действие — непрерывная покупка, никогда не продавать по своей инициативе.
Что такое DCA
DCA — сокращение от Dollar Cost Averaging (доллар-стоимостное усреднение). Логика предельно проста: через равные промежутки времени (например, каждые 7 дней) покупать фиксированную сумму актива независимо от текущей цены.
Его настоящая сила проявляется на падающем рынке: те же 200 долларов позволяют купить больше долей, когда цена низкая, и меньше — когда высокая. В долгосрочной перспективе средняя стоимость автоматически выравнивается до разумного уровня. Не нужно определять пики и впадины, не нужно выбирать время — нужно просто последовательно исполнять.
Более того, DCA по своей конструкции не имеет активного действия продажи — он по своей сути только покупает и держит. Это делает его механизмом «только вход, никакого выхода, медленное накопление».
Почему именно он: эквивалентность поведения
«Быть другом времени» в переводе на инструкции для машины — это «купить в срок, никогда не продавать». Это поведенчески эквивалентно всему, что остаётся от DCA после удаления логики продажи. Не требуется никаких дополнительных проектирований — просто удалите стоп-лосс или тейк-профит из DCA, и он станет реализацией колеса основных активов.
Соответствующий код:
javascript
// Каждые N дней фиксированная покупка основного актива, только покупка без продажи
if (now - lastDca >= DcaIntervalDays * 86400000) {
var amount = sizeByCash(CoreSymbol, DcaAmount, CoreLeverage, price);
marketOrder(CoreSymbol, "buy", amount);
coreInvested += DcaAmount; // записываем накопленную стоимость, никакого вычитания
}
Во всей стратегии нет логики продажи основного актива — это сделано намеренно, что соответствует условию «не быть вынужденным продавать при экстремальных движениях».
Колесо первое: Денежный поток ← Механизм резервной линии
Что требуется по замыслу
Автор ставит денежный поток на первое место, но его смысл не в том, чтобы разбогатеть, а в том, чтобы «не быть вынужденным выйти из игры в тот момент, когда нужно садиться». Проще говоря: иметь стабильный приток денег, чтобы даже при обвале рынка и значительном сокращении бумажного капитала не нужно было продавать активы для поддержания жизни — переждать, дождаться сложного процента.
Это предпосылка для работы всей системы. Без этой гарантии, даже если основные активы выбраны идеально, их придётся резать на падении, и всё будет напрасно.
Как это эквивалентно в количественном подходе
Денежный поток по своей сути находится вне счета — зарплата, подработка, доход от IPO. Код не может создать доход из воздуха.
Но код может воспроизвести его ключевой эффект: никогда не быть вынужденным продавать основные активы. Делается это путём установки резервной линии на счёте — на счету всегда сохраняется определённая доля буферного капитала, который нельзя трогать при любых операциях. Сама периодичность DCA в сочетании с этой линией имитирует состояние «непрерывного притока денег, без сбоев».
В реальной торговле достаточность этой линии фактически зависит от стабильности вашего реального внешнего денежного потока. Это звено является наиболее косвенным из трёх — мы воспроизводим его эффект, а не его суть.
javascript
// Перед каждым ордером проверяем: остаток после вычета суммы ордера не должен быть ниже резервной линии
var reserve = equity * ReserveFloorRatio; // например, резервировать 10% от капитала
if (balance - DcaAmount < reserve) return; // если касается линии — пропускаем, сохраняем последний буфер
Колесо третье: Альфа ← Движок выбора монет + Стратегия пролонгации
Колесо Альфа самое сложное, его нужно разобрать на две части: откуда берутся цели и как торговать после их получения. Каждая из этих двух задач соответствует одной из двух стратегий.
Что требуется по замыслу
Автор говорит, что смысл Альфы — «минимальной стоимостью получить максимальную доходность», и подчёркивает: заработанные деньги нельзя тратить, их нужно полностью перекачивать в основные активы для увеличения базы.
Два ключевых слова: «минимальная стоимость» — означает, что предел убытка по каждой сделке должен быть жёстко ограничен, нельзя допускать серьёзных потерь из-за одной ошибки; «максимальная доходность» — означает, что когда сделка идёт в правильном направлении, нужно дать прибыли убежать как можно дальше, а не снимать её при малейшей прибыли. Это естественная асимметричная структура: в плохом случае потери малы, в хорошем — прибыль велика.
Верхняя часть: Движок выбора монет (harness) — найти правильные цели
На рынке криптовалют сотни и тысячи бессрочных контрактов. Если случайно выбрать один и применить стратегию, результат с высокой вероятностью будет пустой тратой времени или даже убытком. Движок выбора монет решает проблему «на каких монетах торговать».
Первый уровень — фильтр по объёму торгов
Все бессрочные контракты USDT сортируются по объёму торгов в долларах (цена × объём) по убыванию, сохраняются первые 120.
Почему первым фильтром используется объём? Монеты с большим объёмом дают два преимущества: во-первых, достаточная ликвидность, что снижает проскальзывание и издержки на спреде; во-вторых, в них участвует достаточно много игроков, что облегчает формирование улавливаемых трендов. Монеты с малым объёмом легко подвержены манипуляциям, и даже хорошая стратегия на них неэффективна.
Второй уровень — оценка по бэктесту скользящих средних
Для каждой прошедшей монеты запускается исторический бэктест с несколькими комбинациями параметров скользящих средних (например, MA5/20, MA10/30, MA20/60). Для каждой комбинации вычисляются ключевые показатели: процент побед (доля прибыльных сделок), соотношение прибыли к убытку (средняя прибыль / средний убыток), максимальная просадка, количество сигналов. Затем результаты взвешиваются в единую оценку.
Этот шаг нужен, чтобы определить, «действительно ли стратегия на скользящих средних исторически работает на этой монете». Не каждая монета имеет чёткие тренды: некоторые долго находятся в боковике, сигналы скользящих средних на них — ложные пробои. Такие монеты отсеиваются заранее, чтобы не тратить ресурсы.
Третий уровень — бонус за потенциал всплеска
К оценке добавляются два динамических фактора:
- Процентиль волатильности: текущий ATR (средний истинный диапазон — показатель волатильности) находится в некотором процентиле от исторических данных. Чем ближе к высоким значениям, тем более высокая волатильность относительно истории, и выше вероятность сильных движений.
- Коэффициент всплеска объёма: средний объём за последние 5 свечей ÷ средний объём за последние 50 свечей. Если это значение значительно больше 1, это означает, что в последнее время объём аномально вырос по сравнению с прошлым, что может указывать на приток капитала — ранний сигнал «потенциального всплеска».
Эти два фактора накладываются, чтобы помимо статической исторической эффективности отдавать предпочтение тем инструментам, которые «в текущий момент демонстрируют аномалии».
В итоге формируется белый список, обычно из 3–5 монет с наивысшей суммарной оценкой на текущем этапе.
javascript
// Движок выбора монет: фильтр по объёму → бэктест → факторы всплеска → белый список
var pool = tickers
.filter(t => t.Symbol.endsWith("USDT.swap"))
.sort(byQuoteVolumeDesc)
.slice(0, TopVolumeN);
for (var coin of pool) {
var volPct = calcVolPct(records); // исторический процентиль волатильности
var surge = calcVolumeSurge(records); // коэффициент всплеска объёма
var bt = bestBacktestScore(records, maParamsList); // общая оценка бэктеста скользящих средних
var score = bt * 0.56 + volPct * VolSurgeBonus + surge * VolSurgeBonus;
if (score >= threshold) whitelist.push(coin);
}
Нижняя часть: Стратегия пролонгации — малый вход, большой выход
После получения белого списка нужен метод торговли. Здесь используется ранее написанная нами стратегия пролонгации (раскатки), чей механизм хорошо согласуется с асимметричными требованиями Альфы.
Что такое стратегия пролонгации
Это фьючерсная трендовая стратегия, основанная на пересечении скользящих средних.
Сначала о скользящих средних: взвешенное среднее цен закрытия последних N свечей — это EMA (экспоненциальная скользящая средняя). EMA придаёт больший вес последним ценам, реагирует быстрее обычной MA. Сигналы пересечения: короткая EMA (например, EMA5) пересекает длинную EMA (например, EMA10) снизу вверх — это «золотое пересечение», указывающее на то, что краткосрочный тренд сильнее долгосрочного, сигнал на покупку; обратная ситуация — «смертельное пересечение», сигнал на продажу.
«Пролонгация» означает: после закрытия прибыльной позиции, если направление скользящей средней сохраняется (тренд продолжается), сразу открывается новая позиция, продолжая следовать за трендом. На сильном тренде этот метод позволяет прокручивать прибыль снова и снова, накапливая её, а не забирать после одной волны.
Маленькая рогатка: механизм асимметричного риска с жёстким стоп-лоссом.
javascript
// Логика стоп-лосса: при убытке 10% выход по стопу (не 50%)
var stopLossPrice = pos.EntryPrice * (1 - direction * StopLossRate);
if (direction * (price - stopLossPrice) < 0) { close(pos); }
Общий смысл: дирижёр → маховик → весь цикл
После того как три колеса (три стратегии) подобраны и сопоставлены с исходными концепциями, остаётся одна ключевая работа: собрать их вместе, чтобы они работали согласованно, как одно целое, а не три независимые стратегии.
Ключевая логика управления — поток прибыли: прибыль, полученная от колеса альфы, не должна накапливаться на счёте альфы, а должна направляться в колёса основных активов и денежного потока. Этот шаг превращает разрозненные компоненты в замкнутый цикл.
Проще говоря: выигрываешь — переводи прибыль в базу, чтобы сложный процент работал на более крупную сумму; проигрываешь — защищай базу резервной линией, чтобы не потерять полностью.
Три колеса — это не три отдельных портфеля, а три органа одного механизма. Без передачи прибыли это просто три изолированные стратегии, которые могут даже мешать друг другу. Только когда прибыль передаётся, можно говорить о «разгонке маховика».
Что дальше
После того как выбраны стратегии и механизм передачи прибыли, остаётся только реализовать их в коде и провести обратное тестирование.
Следующая статья — это процесс написания кода: конкретная архитектура управления, как спланировать канал передачи прибыли, как построить полную версию кода стратегии. План:
Каждая сделка имеет жесткий стоп-лосс: если цена движется против позиции на заданную величину (например, -8%), сделка принудительно закрывается. Этот стоп-лосс ограничивает максимальный убыток по каждой сделке — независимо от того, насколько плох рынок, убыток по одной сделке не превысит это значение. Это и есть механизм «минимальной стоимости».
Почему это важно: соответствие асимметричной структуре
Alpha требует «минимальная и ограниченная стоимость + максимально возможная прибыль» — это асимметричная структура доходности. Стратегия переката (roll-over) по своей природе обладает такой структурой:
- Жесткий стоп-лосс = «цена билета» за каждый вход: в случае неудачи теряешь не больше этого, дальше не уйдешь.
- Скользящий тейк-профит + непрерывное возобновление позиции = если направление угадано, даешь прибыли бежать за трендом, теоретически без фиксированного потолка.
Эти два элемента — по сути разные описания одной и той же структуры. Конкретный код:
javascript
// Ограничение стоимости: при достижении жесткого стопа немедленный выход — это цена билета за каждый вход
if (pnlPct <= -AlphaStopPct) close("Жесткий стоп");
// Позволяем прибыли бежать: чем выше пик, тем больше допустимая просадка, даем крупным выигрышам достаточно пространства для дыхания
var giveback = Math.max(15, maxPnl * 0.3);
if (maxPnl - pnlPct >= giveback) close("Скользящий тейк-профит");
// Если тренд все еще сохраняется после тейк-профита, продолжаем держать позицию — реинвестируем прибыль
if (shouldRoll(records, direction)) openAlpha(direction, price);
Органическая интеграция: возвращаем прибыль Alpha в ядро
Движок выбора монет находит активы, стратегия переката генерирует доход — но этого недостаточно. Вернемся к исходной идее: истинная ценность Alpha — «перекачивать капитал в основной актив». Поэтому нужна линия движения средств: прибыль, заработанная Alpha, однонаправленно выкупает основной актив; в случае убытка основной капитал ни в коем случае не трогается.
javascript
// Накопленная реализованная прибыль Alpha достигает определенного порога — выкупаем основной актив
if (alphaPnlBank >= AlphaSweepMin) {
var amt = sizeByCash(CoreSymbol, alphaPnlBank, 1, price);
marketOrder(CoreSymbol, "buy", amt); // Прибыль направляется в ядро, увеличивая базу капитала
coreInvested += alphaPnlBank;
alphaPnlBank = 0;
}
Именно эта линия превращает три независимые старые стратегии из «работающих по отдельности» в «одно колесо, взаимно питающее друг друга»: DCA постоянно кормит ядро, движок выбора монет отбирает кандидатов, перекат с малыми ставками идет на крупное, прибыль возвращается в ядро, ядро становится больше, а требуемый множитель — меньше.
Что количественное (quant) здесь на самом деле делает
Резюмирую одной фразой: ценность репликации не в том, чтобы «стать умнее», а в том, чтобы «стать более дисциплинированным».
Система из оригинального текста сложна не из-за логики, а из-за того, что человеку слишком трудно ее выполнять: при падении чешутся руки продать, при большом росте — FOMO-докупка, при малом убытке — хочется остановиться, при срочной нужде в деньгах — вынужденно вырезают активы, которые надо было держать. Эти ошибки — не от непонимания, а от эмоций.
Код не будет вынужденно продавать (резервная линия страхует), не будет FOMO (действует только по белому списку и сигналам), не будет останавливать циклы (даже если Alpha сливает малую стоимость — просто ждет следующей сделки, ядро не трогает). Мы не сделали эту теорию более мощной — мы просто передали самые нечеловеческие ее части равнодушному к эмоциям исполнителю.
Это лишь неглубокий эксперимент
Нужно четко сказать: это далеко не финал, и одно звено явно является реализацией другого пути.
В оригинале настоящий Alpha — лотереи, пресейлы, ранние структурные возможности — это игра с малых ставок на большие деньги за счет информации и ресурсов. А перекат + скользящие средние как выбор монет — это другая форма реализации той же идеи: опора на трендовое движение для получения дохода. Пути разные, но внутренняя логика полностью совпадает. В боковом рынке эта трендовая стратегия неизбежно будет сталкиваться с чередой мелких стоп-лоссов; она дополняет оригинальные возможности, вместе составляя доходность Alpha. Действительно редкие возможности все равно требуют человеческого суждения, и после их реализации прибыль вручную направляется по той же линии обратно в ядро.
Кроме того, красивые результаты бэктеста не гарантируют прибыль в реальной торговле. Комиссии, ставки финансирования, проскальзывания — в бэктесте их легко упустить, а на реальном рынке они понемногу съедают маржу. Код соблюдает дисциплину, но он не умеет интуитивно нажимать на тормоз, когда нужно быть консервативным.
Так что следующий шаг — не торопиться заводить крупные средства, а сначала долго гонять на симуляторе и с малыми объемами: проверять, действительно ли колеса взаимно питают друг друга, приносит ли часть Alpha плюс или просто тратит время впустую. А потом на реальных данных — корректировать круг за кругом.
Фраза из оригинала применима и к оттачиванию этой системы: можно очень медленно, но нельзя останавливаться.
(Выше — лишь запись одной идеи, не является инвестиционной рекомендацией.)
Оригинальная ссылка: Моя система маховика от нуля до миллионов: денежный поток · основной актив · Alpha
Исходный код стратегии: Количественная система маховика
- 1




