neuroalpha 0.3.14 → 0.3.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,156 +1,97 @@
1
- # Рынок как язык — как пользоваться
2
-
3
- > Только виртуальные деньги. Программа проверяет идею и не является советом, куда вкладывать.
4
-
5
- ## Идея
6
-
7
- Языковая модель читает текст и предсказывает **следующее слово**. Здесь рынок читается так же:
8
-
9
- | В языковой модели | На рынке |
10
- |---|---|
11
- | Слово | Акция (около 100 акций индекса широкого рынка МосБиржи) |
12
- | Смысл слова | **Место акции на карте рынка**: рядом стоят акции, которые обычно движутся вместе |
13
- | Предыдущий текст | Что происходило со всеми акциями за последние часы |
14
- | Следующее слово | **Какие акции в ближайшие часы будут сильнее или слабее рынка** |
15
-
16
- Когда в одну точку карты «падают» деньги, волна расходится к соседям, и отставший сосед может догнать.
17
- Бывает и обратное: акция, резко ушедшая от соседей, возвращается. Модель учится различать эти случаи сама.
18
-
19
- ## Экран
20
-
21
- - **Слева — Стратег**, ИИ-исследователь и помощник. В нижней карточке ввода можно писать текстом или нажать **микрофон (`🎙`) для голосового ввода**, там же переключаются режим работы (`💬 Обсуждение`, `✋ С согласия`, `⚡ Автопилот`) и модель ИИ. Номера прогонов (`№234`) в ответах Стратега кликабельны и сразу открывают нужный прогон справа.
22
- - **Справа — четыре вкладки в едином стиле OpenCode:** Эксперименты, Торговля, Карта и журнал, Настройки.
23
- - Границу между панелями можно **перетащить мышью**, двойной щелчок возвращает исходную ширину.
24
- - В правом верхнем углу: индикатор связи, переключатель **светлой и тёмной темы (`☀ / ☾`)** и кнопка **?** — эта справка.
25
-
26
- ## Эксперименты
27
-
28
- Кнопка **«Исследовать»** проверяет стратегию на двух годах истории честно, шаг за шагом: стратегия учится на прошлых месяцах,
29
- прогнозирует следующий месяц, которого не видела, затем окно сдвигается. Занимает около минуты, первый раз — несколько минут на загрузку цен.
30
- Цены акций скорректированы на дивиденды: падение цены в день отсечки не считается убытком, а сам дивиденд идёт в результат; даты отсечки сверяются с реальным падением цены.
31
-
32
- После этого вы увидите:
33
- - **выпадающий список прогонов во всю ширину** сверху и под ним строку действий с выбранным прогоном: **✎ Назвать**, **✓ Применить эти настройки (N)** (появляется только если настройки выбранного прогона отличаются от ваших текущих), **Проверить устойчивость**, **▶ В торговлю**, **💬 Разобрать**, **⇄ Сравнить**, **Удалить**;
34
- - **вывод одной фразой:** зарабатывает ли стратегия, помогает ли карта рынка, какой порог выхода выбрало **самообучение правил** и какие убыточные бумаги оно автоматически отправило в карантин;
35
- - **четыре числа:** итог стратегии после комиссий, рынок за то же время, число сделок, худшее падение счёта;
36
- - строка **«Покупки · Продажи»** — вклад тех и других в итог (появляется, когда включены продажи);
37
- - **блок устойчивости:** вердикт («Устойчиво» / «Средняя устойчивость» / «Сильно зависит от случая»), медиана и разброс итога по сдвигам входа. Кнопка **«Проверить устойчивость»** прогоняет 5 сдвигов периода (−8…+8 дней) и показывает, насколько итог зависит от случайного выбора момента;
38
- - **график:** счёт стратегий против рынка;
39
- - переключатель **Весь период / Настройки / Контрольный**. Главное — **контрольный** период: на нём настройки не подбирались;
40
- - блок **«Сравнение стратегий и на что смотрит стратегия»:**
41
- - три стратегии — от простейшей («своя инерция») до «внимания через карту»; с галочкой «Добавить трансформер (медленно)» — четвёртая, нейросеть с вниманием между акциями. Это медленно, хотя месяцы обучаются одновременно на нескольких ядрах (по желанию — на видеокарте, см. «Дополнительно»);
42
- - «совпадение прогноза с фактом» (0,03 и выше на рынке уже ценно);
43
- - итог с комиссиями и без: если без комиссий плюс, а с ними минус, значит сигнал есть, но его съедают издержки;
44
- - «головы внимания»: зелёный — соседи тянут акцию за собой, красный — акция возвращается после перекоса; с галочкой «Учитывать нефть, валюту, облигации» добавляется полоса «Нефть, валюта, облигации» — насколько нефть, юань, доллар, золото и облигации тянут акции за собой;
45
- - блок **«Сделки»**.
46
-
47
- Кнопка **▶ В торговлю** запускает виртуальный счёт с замороженными настройками этого прогона. Кнопки **💬 Разобрать со Стратегом** и **⇄ Сравнить…** отправляют Стратегу запрос на разбор или сравнение прогонов. Прошлые прогоны выбираются в списке слева от кнопки, **«Удалить»** удаляет выбранный, **«⟲ Настройки прогона»** делает текущие настройки такими же, как в нём.
48
-
49
- **Как читать результат.** Итог в рублях — самая шумная часть картины, особенно когда «Сколько акций держать» = 1:
50
- одинаковые настройки с разницей всего в пару новых свечей давали от −21% до +38% — это случайность, а не свойство стратегии.
51
- Надёжнее смотреть на «совпадение прогноза с фактом»: если оно устойчиво выше нуля, стратегия действительно видит рынок.
52
- Перспективные находки проверяйте кнопкой «Проверить устойчивость» и при 3–5 акциях — несколько акций в портфеле гасят случайную удачу одной.
53
-
54
- ## Торговля
55
-
56
- - **Прогноз:** какие акции стратегия считает сильнее или слабее рынка в ближайшие часы и **под чьим влиянием**.
57
- Пример: «TATNP +0,33%, под влиянием LKOH, TATN, ROSN». «Купить» — если ожидание окупает комиссии с запасом;
58
- когда разрешены продажи (настройка «Направление торговли»), появляется и метка «продать». Значок ● рядом с акцией —
59
- свежие новости о ней: зелёный — хорошие, красный — плохие, серый — нейтральные; наведение мыши показывает суть и источник.
60
- - **Новости:** раз в 10 минут программа собирает новости и раскрытия компаний,
61
- а ИИ определяет, каких акций они касаются и хорошие они или плохие. Новости помогают только в прогнозе и торговле,
62
- в исследованиях на истории они не участвуют: старых новостей не существует, а ИИ знает сегодняшние и «подсмотрел бы ответ» — проверка стала бы нечестной.
63
- - **Виртуальные счета:** можно держать несколько счетов одновременно (до 5). Каждый запускается либо кнопкой «+ Новый виртуальный счёт»
64
- (с текущими настройками), либо кнопкой **▶ В торговлю** из удачного прогона — тогда настройки счёта **замораживаются**
65
- (дальнейшие эксперименты их не сбивают). Счёт, запущенный из прогона, показывает **ориентир истории**: сколько стратегия
66
- зарабатывала в среднем за прошедшее время по этому прогону и допустимый коридор; выход за нижнюю границу подсвечивается.
67
- Покупка идёт по цене открытия следующей свечи; после каждого торгового дня Стратег пишет короткий разбор. Это **единственная по-настоящему честная проверка**:
68
- стратегия торгует на данных, которых раньше не видела. Судить о результате можно через 1–3 месяца.
69
- - **Брокерские счета (Т-Банк, Финам, Алор, БКС):** подключаются в **«Настройки → Брокерские счета»** по токену API.
70
- Режимы: **«Только чтение»** (портфель и сверка), **«Подтверждение заявок»** (программа считает пакет лимитных заявок
71
- в целых лотах Мосбиржи, вы нажимаете «Исполнить заявки») и **«Автомат»**. У каждого счёта — жёсткие предохранители:
72
- лимит суммы на стратегию, дневной стоп по просадке и пропуск первых и последних 10 минут сессии.
73
- Токены хранятся только в локальной базе на этом компьютере. Начинайте с режима «Только чтение» или песочницы брокера.
74
-
75
- ## Карта и журнал
76
-
77
- Каждая точка — акция. Близко — значит акции обычно движутся вместе, цвет — найденная группа.
78
- Стратегия строит карту только по движениям цен, без справочника отраслей, и всё равно находит, например, нефтяников, электросети,
79
- обычные и привилегированные акции одной компании. Ползунок показывает, как карта менялась по месяцам.
80
- Последняя позиция «Сейчас» (после прогноза) раскрашивает точки прогнозом. Нажмите на акцию, чтобы увидеть соседей.
81
-
82
- Переключатель **«По поведению / По описанию»** показывает две разные карты. «По поведению» — описанная выше.
83
- «По описанию» — по тому, что за бизнес у компании: ИИ составляет описания компаний — 20 устойчивых признаков
84
- (экспортёр, банк, стабильные дивиденды, зависимость от нефти или ставки…), и акции расставляются по сходству описаний.
85
- В описания попадают только давние факты, без новостей и прогнозов — историю стратегии они не портят; обновляются описания
86
- раз в 30 дней, кнопка «Составить описания компаний (ИИ)» создаёт их впервые. Настройка «Вес описаний компаний на карте»
87
- решает, насколько описания примешиваются к основной карте, по которой работает сама стратегия.
88
-
89
- Ниже карты — **журнал проверенных гипотез**: память Стратега. После каждого эксперимента он записывает, что проверял и что вышло.
90
-
91
- ## Стратег
92
-
93
- **Модель ИИ** выбирается списком в шапке чата; подключения (свои, GigaChat, Ollama и любые OpenAI-совместимые) добавляются и настраиваются в **«Настройки → Модели ИИ»**. Если модель не умеет пользоваться инструментами, Стратег только беседует.
94
-
95
- **Режимы** (переключатель над чатом):
96
- - **Только обсуждение** — анализирует и отвечает, ничего не запускает.
97
- - **С моего согласия** — предлагает исследования и изменения настроек, вы нажимаете «Подтвердить» или «Отклонить».
98
- - **Автопилот** — сам проводит серию исследований (до указанного числа) и присылает отчёт.
99
-
100
- Что можно спросить:
101
- - «Объясни идею простыми словами»;
102
- - «Исследуй модель и объясни результат»;
103
- - «Что модель ждёт в ближайшие часы?»;
104
- - «Проверь, лучше ли горизонт 2 часа»;
105
- - «Кто соседи у Сбербанка на карте?»;
106
- - «Какие свежие новости по Сбербанку?»
107
-
108
- **Журнал гипотез** — память Стратега. После каждого эксперимента он записывает, что проверял и что вышло,
109
- и не повторяет уже проваленное. Неверную запись можно удалить.
110
-
111
- **Защита от самообмана:** Стратег подбирает настройки только по периоду настройки, контрольный период открывает
112
- не больше 3 раз за разговор и сравнивает только с исследованием на тех же настройках. Комиссии менять ему запрещено.
113
-
114
- Блок «Размышления» над ответом — ход мысли модели, он свёрнут, нажмите, чтобы раскрыть. Модель часто думает по-английски, но отвечает по-русски.
115
-
116
- ## Настройки
117
-
118
- Настройки оформлены в едином стиле OpenCode с боковым меню и поиском. Чтобы не перегружать пользователя профессиональными ручками, в разделе **«Общие»** оставлены **всего 6 простых настроек**, а все тонкие параметры вынесены в **«Дополнительно»** (там же находится очистка истории экспериментов; значение по умолчанию `0` удаляет все завершённые прогоны).
119
-
120
- | Настройка | Смысл |
121
- |---|---|
122
- | Самообучение правил торговли (Авто) | Включено по умолчанию: стратегия сама подбирает порог выхода под вашу комиссию (не пересиживает угасающие сделки) и автоматически ставит на карантин убыточные «акции-убийцы» |
123
- | Горизонт прогноза | На сколько часов вперёд стратегия предсказывает и примерно столько держит акции. Можно дробно, с точностью до 10 минут (например, 1,5) |
124
- | Порог выгоды на вход | Покупать (или продавать), только если ожидаемое движение больше стоимости сделки × порог. Без порога комиссии съедают весь доход |
125
- | Порог на выход (доля от входа) | До какой доли порога входа может ослабнуть прогноз, прежде чем закрыть позицию (0,5 — ниже половины порога; 0 — держать, пока прогноз в нашу сторону) |
126
- | Минимальное удержание, часов | Не закрывать позицию раньше этого времени при обычном ослаблении прогноза. Снижает число сделок и комиссий |
127
- | Сколько акций держать | Сколько лучших по прогнозу акций держать одновременно (при продажах — и столько же на продажу) |
128
- | Распределение суммы между акциями | «Поровну» — одинаково; «Обратно размаху акции» — спокойным бумагам больше, волатильным — меньше (снижает просадку) |
129
- | Направление торговли | «Только в рост (без шорта)» — классическая покупка акций и продажа купленного с прибылью (работает на любом счёте и ИИС); «В рост и в падение (с шортом)» — дополнительно зарабатывает на падающих акциях за счёт коротких продаж (требуется маржинальная торговля; если на брокерском счёте она выключена, система автоматически переключает счёт в режим «Только в рост») |
130
- | Фильтр падающего рынка | Не открывать новые покупки, когда индекс Мосбиржи одновременно ниже уровня 2 часов назад и уровня торгового дня назад |
131
- | Плата за заём акций, % годовых | Сколько брокер берёт за заём акций для продажи без покупки. Начисляется за всё время, пока продажа открыта (20% годовых — около 0,05% за сутки) |
132
- | Окно обучения | На скольких последних днях стратегия учится |
133
- | Период исследования | Сколько истории проверять |
134
- | Размер эмбеддинга | Сколько «скрытых свойств» описывают каждую акцию на карте |
135
- | Учитывать нефть, валюту, облигации | Стратегия дополнительно смотрит на движение нефти Brent, юаня, доллара, золота и индекса гособлигаций: чувствительные к ним акции получают поправку к прогнозу |
136
- | Вес описаний компаний на карте | 0 — карта строится только по поведению акций, 1 — только по описаниям бизнеса, которые заранее составляет ИИ; значения между — смесь того и другого |
137
- | Какая стратегия торгует | Обычно «Внимание через карту»; возможен и «Трансформер» — нейросеть с вниманием между акциями |
138
- | Добавить трансформер (медленно) | Добавляет в сравнение четвёртую стратегию — трансформер. Он учится заново в каждом окне, поэтому исследование заметно дольше (месяцы обучаются одновременно на нескольких ядрах) |
139
- | Эпох обучения трансформера | Сколько раз трансформер проходит по данным окна обучения (по умолчанию 8). Больше — дольше; обучение само останавливается, если становится хуже |
140
- | Обучать трансформер на видеокарте | Экспериментально: через встроенный в браузер Chrome / Edge движок. Если видеокарта недоступна, обучение идёт на процессоре. Результат может чуть отличаться в последних знаках |
141
- | Учитывать новости в торговле | В виртуальной торговле не открывать сделку против важной свежей новости (сбор новостей идёт в фоне всегда) |
142
-
143
- **Брокерские счета** (Т-Банк, Финам, Алор, БКС): добавляются по токену API с номером счёта/портфеля, режимом работы («Только чтение» / «Подтверждение заявок» / «Автомат») и предохранителями: лимит суммы на стратегию (₽), дневной стоп по просадке (%), защитный отступ лимитной заявки (%) и пропуск первых и последних 10 минут сессии. Можно привязать счёт к номеру удачного прогона — тогда заявки считаются по его замороженным настройкам. Токены хранятся только в локальной базе.
144
-
145
- ## Запуск
146
-
147
- - **VS Code:** откройте папку и нажмите **F5**, браузер откроется сам.
148
- - **Консоль:** `npm.cmd start`, затем откройте http://localhost:3000.
149
- - **На новом компьютере:** сначала один раз `npm.cmd install` и создайте файл `.env` по образцу `.env.example`.
150
-
151
- ## Если что-то не так
152
-
153
- - **Красная точка** — сервер не запущен. Запустите его, страница подключится сама.
154
- - **«Порт 3000 занят»** — программа уже запущена в другом окне.
155
- - **Стратег долго молчит** — раскройте «Размышления»: если текст прибавляется, модель думает. Остановить — кнопка **■**.
156
- - **Жёлтая точка** — ИИ не подключён: не выбрана модель или нет ключа (**Настройки → Модели ИИ**). Исследования и прогноз работают, Стратег нет.
1
+ # Платформа «НейроАльфа» — инструкция пользователя
2
+
3
+ > Облачная аналитическая PaaS-платформа алгоритмической торговли на рынке акций Московской биржи (`MOEX`). Платформа является программно-техническим средством (калькулятором статистических закономерностей и интерфейсом автоматизации) и не является индивидуальной инвестиционной рекомендацией (ФЗ № 39-ФЗ).
4
+
5
+ ---
6
+
7
+ ## 1. Главная идея: «Рынок как язык»
8
+
9
+ Языковая модель читает текст и предсказывает **следующее слово**. В «НейроАльфе» биржевой рынок читается по тем же законам:
10
+
11
+ | В языковой модели (LLM) | В платформе «НейроАльфа» |
12
+ |---|---|
13
+ | Слово | Акция (~100 самых ликвидных бумаг индекса широкого рынка Мосбиржи `MOEXBMI`) |
14
+ | Смысл слова (эмбеддинг) | **Место акции на многомерной карте рынка** (спектральная размерность автоматически калибруется на каждом шаге по теореме Марченко–Пастура) |
15
+ | Предыдущий контекст | Очищенные от индекса `IMOEX` движения цен и почасовые аномалии объёмов всех 100 акций за последние часы (`1ч`, `3ч`, `день`) |
16
+ | Следующее слово | **Какие акции в ближайшие 1,5–3,5 часа будут сильнее или слабее рынка** и под чьим влиянием |
17
+
18
+ Когда в одну точку рынка приходят крупные покупки или продажи, волна расходится к связанным бумагам, и временно отставшая акция догоняет своих соседей по карте. В других случаях бумага, совершившая одиночный рывок без поддержки сектора, возвращается к среднему. 12 голов внимания модели автоматически различают эти ситуации.
19
+
20
+ ---
21
+
22
+ ## 2. Как устроено рабочее окно
23
+
24
+ Экран разделён на две части (границу между ними можно перетаскивать мышью, а кнопку чата в шапке — сворачивать/разворачивать):
25
+
26
+ - **Слева — ИИ-агент «Стратег»**: ваш персональный аналитик и помощник. Понимает текст и голосовой ввод (`🎙`). Умеет выводить пошаговую инструкцию по подключению любого из 9 брокеров, находить ваши субсчета по токену и подключать их прямо из диалога, разбирать текущий живой прогноз, новости Мосбиржи и состояние ваших брокерских счетов.
27
+ - **Справа — единое рабочее окно с левым меню навигации (`#main-nav`)**, в котором сразу при входе открывается раздел **«Брокерские счета»**:
28
+ 1. **Торговля:**
29
+ - **Брокерские счета** — управление всеми подключёнными счетами (боевыми и тестовыми).
30
+ 2. **Аналитика рынка:**
31
+ - **Прогноз сейчас** — живой радар ожиданий по 100 акциям Мосбиржи.
32
+ - **Новости рынка** — свежие новости и раскрытия компаний с оценкой влияния ИИ.
33
+ 3. **Управление и настройки:**
34
+ - **Эксперименты** *(виден и доступен эксклюзивно в режиме «Хозяин»)* — исторические Walk-Forward исследования модели.
35
+ - **Издержки и новости** — настройка брокерской комиссии, проскальзывания, ставки за шорт и новостного фильтра.
36
+ - **Подписка и уведомления** — выбор тарифа и привязка ботов **Telegram / MAX**.
37
+ - **Модели ИИ** — подключение и выбор языковых моделей для Стратега.
38
+
39
+ ---
40
+
41
+ ## 3. Брокерские счета и режимы торговли
42
+
43
+ В разделе **«Брокерские счета»** нажмите кнопку **`+ Добавить счёт`** в правом верхнем углу (или нажмите **`🤖 Помочь с подключением`**, чтобы счёт подключил ИИ-Стратег).
44
+
45
+ ### Поддерживаемые брокеры (9 коннекторов):
46
+ - **Прямое облачное подключение по токену REST API:** Т-Банк (`T-Invest API`), Финам (`Finam Trade API`), БКС Мир инвестиций (`Trade API`), Алор Брокер (`OpenAPI v2`), Цифра брокер (`Tradernet API`), ITI Capital (`OpenAPI`).
47
+ - **Режим подтверждения заявок в Telegram / MAX или через мост QUIK:** СберИнвестиции (Сбербанк), ВТБ Мои Инвестиции, Альфа-Инвестиции.
48
+
49
+ ### Как протестировать работу без риска для денег:
50
+ В настройках любого брокерского счёта (`⚙`) предусмотрены два безопасных инструмента проверки:
51
+ 1. Тумблер **«Тестовый режим (песочница брокера — виртуальные деньги без риска)»** — переключает счёт на тестовый контур брокера (`sandbox`).
52
+ 2. Режим работы **«Только чтение (тестовый мониторинг и сверка)»** — платформа синхронизирует ваш реальный портфель и рассчитывает пакеты заявок по прогнозу, но никогда не отправляет их в стакан.
53
+
54
+ ### Как устроена карточка подключённого счёта:
55
+ - Каждая карточка счёта **сворачивается и разворачивается** кликом по шапке. В свёрнутой шапке всегда видны: баланс, свободные рубли, число бумаг, дневное изменение (`₽` и `%`), кнопка быстрого управления **`⏸ Пауза / ▶ Запустить`**, кнопка обновления **`↻`** и кнопка настроек **`⚙`** (открывает настройки прямо внутри карточки этого счёта).
56
+ - Внутри развёрнутой карточки работают **4 вкладки**:
57
+ 1. **`📦 Состав портфеля`** — таблица всех бумаг на счёте с указанием количества акций и лотов, **доли владения в капитале компании (`%` от общего выпуска эмитента `ISSUESIZE`)**, цены входа и текущей цены, стоимости позиции, дохода и живого прогноза ИИ по каждой бумаге.
58
+ 2. **`⚡ Торговля и заявки`** — сводка режима стратегии, список активных заявок в стакане брокера (с кнопками снятия одной или всех заявок) и подготовленный пакет лимитных заявок с кнопками **«✓ Исполнить заявки»** / **«✕ Отклонить»**.
59
+ 3. **`📈 График дохода`** — кривая капитала счёта по времени.
60
+ 4. **`📜 История счёта`** — полная брокерская выписка операций с фильтрами (`Покупка`, `Продажа`, `Комиссия`, `Дивиденды`) и автоматическим расчётом **результата закрытых сделок за каждый торговый день в рублях и процентах (`%`)**.
61
+
62
+ ### Три режима обращения со старыми акциями на счёте (`Начальный портфель`):
63
+ - **«Изолированный карман» (`isolate`, по умолчанию):** старые бумаги, которые уже лежали на счёте до подключения, фиксируются в `baselineQty` и никогда не продаются роботом (состояние можно в любой момент зафиксировать или снять кнопкой в портфеле).
64
+ - **«Плавный переход» (`smooth`):** робот постепенно расчищает слабые старые бумаги с отрицательным прогнозом ИИ и высвобождает из них рублёвый кэш как под новые покупки, так и под новые шорты.
65
+ - **«Полное управление» (`takeover`):** робот сразу выставляет лимитные заявки на продажу всех старых нецелевых акций (кроме защищённых облигаций, фондов и бумаг вне словаря Мосбиржи), освобождая 100% кэша под сигналы стратегии.
66
+
67
+ ---
68
+
69
+ ## 4. Прогноз сейчас и пороги входа
70
+
71
+ В разделе **«Прогноз сейчас»** каждые **45 секунд** по живым котировкам Мосбиржи обновляются две таблицы: **«Сильнее рынка»** (кандидаты в покупку) и **«Слабее рынка»** (кандидаты в шорт).
72
+
73
+ - **Порог выгоды на вход (`2,5×` от полных издержек на круг):** чтобы не тратить деньги на комиссии и рыночный шум, сделка открывается только тогда, когда ожидаемый импульс акции в 2,5 раза превышает удвоенную сумму комиссии и проскальзывания (например, при издержках `0,05%` базовый порог составляет **`+0,25%`**).
74
+ - **Авто-балансировка по тренду индекса:** когда индекс Мосбиржи растёт (выше своей 20-дневной средней), покупки идут по базовому порогу (`+0,25%`), а вход в контртрендовый шорт ужесточается в `1,25×` (`-0,313%`). На падающем рынке система автоматически облегчает шорты и ужесточает покупки.
75
+ - **Удержание позиции:** первые 65 минут после открытия действует мягкий порог удержания (`0,35×`), дающий сделке развиться, после чего включается плотный порог фиксации прибыли (`0,95×`).
76
+
77
+ ---
78
+
79
+ ## 5. Тарифные планы SaaS и режим «Хозяин»
80
+
81
+ Ядро стратегии работает полностью автоматически (`Окно обучения = 90 дней`, `Размерность карты = 0 Авто по Марченко–Пастуру`, `Dynamic Top-K = 0`, `Conviction Sizing`). На пользовательских тарифах мощность слота и направление торговли регулируются в соответствии с выбранным планом:
82
+
83
+ - **Тариф «Инвестор» (`3 900 ₽ / мес`):**
84
+ - Задавленная целевая доходность стратегии: **до 60% годовых**;
85
+ - Торговля **только от покупки («Только в рост, без шорта»)**;
86
+ - **1 брокерский счёт** со стартовым лимитом капитала **до 1 000 000 ₽** (+ 100% реинвестирование всей заработанной стратегией прибыли).
87
+ - **Тариф «Профи» (`9 900 ₽ / мес`):**
88
+ - Задавленная целевая доходность стратегии: **до 120% годовых**;
89
+ - Торговля **в рост и в падение (с шортами)**;
90
+ - **До 5 брокерских счетов** со стартовым лимитом **до 1 000 000 ₽** на каждом (+ 100% реинвестирование всей заработанной прибыли).
91
+ - **Тариф «VIP» (по индивидуальному согласованию):**
92
+ - Задавленная целевая доходность стратегии: **до 240% годовых**;
93
+ - Торговля **в рост и в падение (с шортами)** с повышенной концентрацией слота;
94
+ - Количество брокерских счетов и начальная сумма торговли определяются **по индивидуальному согласованию**.
95
+ - **Режим «Хозяин» (`owner` — для владельца / администратора платформы):**
96
+ - **Без ограничений** по годовой доходности (полный форсаж ядра **>400% годовых**, внутричасовой перехват `H/5` каждые 30 минут + динамическая концентрация слота `Conviction Sizing` до 75% капитала), числу счетов и сумме капитала;
97
+ - Эксклюзивный доступ к разделу **«Эксперименты»**.
@@ -1,6 +1,6 @@
1
1
  # Устройство и математические принципы платформы «НейроАльфа»
2
2
 
3
- > Подробное руководство простым языком: как работает концепция «Рынок как язык», откуда берётся устойчивая доходность >40% годовых, как устроены все механики самообучения, учёт цикличности и параметры системы.
3
+ > Подробное руководство простым языком: как работает концепция «Рынок как язык», откуда берётся устойчивая доходность >400% годовых (CAGR 419,6% на эталонном 1000-дневном окне), как устроена спектральная авто-калибровка Марченко–Пастура, все механики самообучения, учёт цикличности и параметры системы.
4
4
 
5
5
  ---
6
6
 
@@ -79,7 +79,7 @@
79
79
  2. **Ступень 1 — «Кто за кем ходит» (`leadlag`):**
80
80
  Линейная модель $N \times 2N$ без карты рынка: пытается предсказать каждую акцию по движениям всех остальных акций с автоматическим подбором регуляризации $\lambda$ на последних 20% окна обучения.
81
81
  3. **Ступень 2 — «Внимание через карту» (`attention` — Основная рабочая модель):**
82
- * Сначала из матрицы корреляций остаточных движений методом вращений Якоби (`eigenSym`) извлекаются главные собственные векторы — **эмбеддинги акций** (размерность `modelEmbedDim`, по умолчанию 11).
82
+ * Сначала из матрицы корреляций остаточных движений методом вращений Якоби (`eigenSym`) извлекаются главные собственные векторы — **эмбеддинги акций**. В эталонном автоматическом режиме (`modelEmbedDim = 0`) число истинных рыночных факторов на каждом шаге определяется автоматически по **теореме Марченко–Пастура** из теории случайных матриц (с оценкой шумовой дисперсии $\hat{\sigma}^2_{\text{noise}}$ по нижним 60% спектра: $\lambda_+ = \hat{\sigma}^2_{\text{noise}} \cdot (1 + \sqrt{N / T_{\text{eff}}})^2$).
83
83
  * По косинусной близости эмбеддингов $\cos(e_i, e_j)$ строятся матрицы внимания с двумя температурами: **«широкое внимание» ($\beta = 4$, весь сектор)** и **«узкое внимание» ($\beta = 12$, только ближайшие 2–3 соседа)**.
84
84
  * 12 голов внимания (2 вида признаков: цена и денежный поток с почасовой нормировкой объёма × 3 масштаба времени × 2 ширины внимания) + 3 собственных масштаба объединяются гребневой регрессией.
85
85
 
@@ -111,61 +111,45 @@ $$\text{Edge}_i = \hat{y}_i \cdot \sigma_i \cdot \sqrt{H}$$
111
111
  * В режиме `Покупки и продажи (longshort)` с включённым самообучением система автоматически **повышает входной фильтр для покупок (`×1.25`)** и **облегчает вход для коротких продаж (`×0.90`)** на падающем рынке (и наоборот — на растущем рынке).
112
112
  * Именно эта механика позволяет стратегии стабильно зарабатывать и в растущие месяцы, и на затяжном падении индекса Мосбиржи (например, +253.9% за период, где сам индекс упал на −21%).
113
113
 
114
- ### 5.5. Динамическое распределение капитала по слотам и силе сигнала (`Conviction Slot Sizing`)
115
- При настройке `modelTopK = 2` в режиме `longshort` доступно до 2 слотов на покупку и до 2 слотов на продажу. Если в текущий момент на рынке есть только 1–2 сильных сигнала, капитал не делится мелкими долями `1/4`, оставляя половину денег лежать мёртвым грузом, а выделяет базовый слот до `35%` счёта и дополнительно масштабирует его пропорционально силе сигнала (`Conviction Sizing`: в диапазоне `0.85×…1.20×` от отношения ожидаемого движения к порогу входа `need`), с жёстким контролем, чтобы сумма всех открытых позиций никогда не превышала `99%` капитала (без кредитного плеча).
114
+ ### 5.5. Динамическое распределение капитала по слотам и силе сигнала (`Dynamic Top-K` + `Conviction Slot Sizing`)
115
+ В режиме автопилота (`modelTopK = 0`) система не распыляет капитал на фиксированное число бумаг: если на рынке есть только 1 явный лидер, а остальные сигналы слабее 62–78% от лидера, капитал концентрируется в лучшем импульсе. При этом в режиме «Хозяин» (`owner`) слот масштабируется пропорционально силе сигнала (`Conviction Sizing`: вплоть до `1.65×` и до `75%` капитала в исключительных импульсах, на тарифе «VIP» — до `48%`, на «Профи» — до `28%`, на «Инвесторе» — до `24%`), с жёстким контролем, чтобы сумма всех открытых позиций никогда не превышала `99%` капитала (без кредитного плеча).
116
116
 
117
117
  ---
118
118
 
119
- ## 6. Справочник всех параметров платформы (3 логических раздела)
119
+ ## 6. Автоматическое ядро и настройки издержек
120
+
121
+ Параметры ядра обучения и стратегии зафиксированы в эталонном автоматическом режиме (>400% годовых CAGR):
122
+ * **Окно обучения (`modelTrainDays`)**: `90` торговых дней.
123
+ * **Размерность карты рынка (`modelEmbedDim`)**: `0 (Авто)` — спектральная авто-калибровка по порогу Марченко–Пастура на каждом шаге.
124
+ * **Период исследования (`modelHistoryDays`)**: `1000` календарных дней.
125
+ * **Выбор числа акций (`modelTopK`)**: `0 (Авто)` — динамический отбор от 0 до 4 лонгов и до 4 шортов по силе отрыва лидера.
126
+ * **Направление торговли (`modelDirection`)**: автоматически подстраивается под тариф (`Только в рост` на «Инвесторе», `В рост и в падение (с шортом)` на «Профи», «VIP» и в режиме «Хозяин») и статус маржинальной торговли на брокерском счёте.
127
+
128
+ В разделе **«Издержки и новости»** пользователь настраивает только параметры своего брокера:
120
129
 
121
- ### 6.1. Раздел «Стратегия и сигналы»
122
- | Параметр | По умолчанию | Что делает и как влияет на торговлю |
123
- |---|---|---|
124
- | **Самообучение правил торговли (`modelAutoAdapt`)** | `Вкл` | Полный Автомат: включает мульти-горизонтное обучение (`1.5–3.5 ч`), полушаговое сопровождение `H/2`, двухступенчатый порог выхода (`0.35 / 0.95`), временный карантин убыточных бумаг, адаптацию порогов `Long/Short` к тренду индекса и взвешивание слота по силе сигнала (`Conviction Sizing`). При включённом Авто-режиме поля горизонта и порогов управляются автоматически. |
125
- | **Сколько акций держать (`modelTopK`)** | `2` | Максимальное число одновременных позиций в лонг (и столько же в шорт при режиме `longshort`). `2–3` акции дают максимальную концентрацию в самых сильных сигналах при просадке в пределах 9–11.5%. |
126
- | **Направление торговли (`modelDirection`)** | `В рост и в падение (с шортом)` (`longshort`) | • `Только в рост (без шорта)` (`long`) — классическая покупка акций и их продажа при фиксации прибыли (подходит для любого счёта и ИИС).<br>• `В рост и в падение (с шортом)` (`longshort`) — покупает лидеров и шортит аутсайдеров с авто-балансировкой по тренду индекса (**максимальная доходность +1 061% за 2,4 года / +134.6% OOS, Шарп 4.04**; на реальном брокерском счёте без подключённой маржинальной торговли шорты отключаются автоматически). |
127
- | **Горизонт прогноза, часов (`modelHorizon`)** | `2.5` ч *(авто: 1.5–3.5ч)* | В режиме Авто управляется автоматически (мульти-горизонтная траектория `0.6H / 1.0H / 1.4H`). В ручном режиме — на сколько часов вперёд модель предсказывает движение. |
128
- | **Порог выгоды на вход (`modelMinEdge`)** | `2.5` *(авто)* | В режиме Авто управляется автоматически (`2.5×` издержек). В ручном режиме — во сколько раз ожидаемое движение должно превышать удвоенные издержки. |
129
- | **Порог на выход (`modelExitRatio`)** | `0.95` *(авто)* | В режиме Авто управляется автоматически (`0.35` на первых двух полушагах, `0.95` по зрелости). В ручном режиме — доля от порога входа для удержания позиции. |
130
-
131
- ### 6.2. Раздел «Издержки и риск»
132
130
  | Параметр | По умолчанию | Что делает |
133
131
  |---|---|---|
134
- | **Комиссия брокера и биржи, % за сделку (`commissionPct`)** | `0.04%` | Комиссия за одну сторону сделки. ИИ-Стратегу менять это поле запрещено, чтобы исключить подгонку за счёт занижения издержек. |
132
+ | **Комиссия брокера и биржи, % за сделку (`commissionPct`)** | `0.04%` | Комиссия за одну сторону сделки. От суммы комиссии и проскальзывания автоматически рассчитывается порог входа (`2,5×` удвоенных издержек). |
135
133
  | **Проскальзывание при исполнении, % (`slippagePct`)** | `0.01%` | Ожидаемые потери на спреде в стакане при исполнении заявки. |
136
134
  | **Плата за заём акций (`modelShortFeePct`)** | `20%` год. | Ставка брокера за перенос и удержание коротких позиций (шортов), списывается пропорционально времени удержания сделки. |
137
- | **Распределение суммы (`modelAllocMode`)** | `Поровну` (`equal`) | `equal` — равные базовые доли на слот (с учётом `Conviction Sizing` в Авто-режиме); `invvol` — спокойным бумагам выделяется до 1.8× больше, волатильным — до 0.4× меньше. |
138
- | **Фильтр падающего рынка (`modelMarketFilter`)** | `Выключен` (`off`) | В режиме `ma` полностью запрещает любые покупки при среднесрочном падении индекса Мосбиржи (актуально для режима `Только покупки`). |
139
- | **Блокировать сделки против важных свежих новостей (`newsFilter`)** | `Выкл` | В живой проверке и в брокерских заявках блокирует покупку бумаги на сильном негативе за последние 6 часов (`imp >= 0.6`, `tone <= -0.4`) и шорт на сильном позитиве. |
140
-
141
- ### 6.3. Раздел «Автопилот и система»
142
- | Параметр | По умолчанию | Что делает |
143
- |---|---|---|
144
- | **Лимит исследований автопилота (`autopilotBudget`)** | `8` | Сколько экспериментов подряд может провести ИИ-Стратег за одно поручение в режиме `⚡ Авто`. |
145
- | **ИИ разбирает каждый торговый день (`paperDailyReview`)** | `Вкл` | По окончании торгового дня Стратег автоматически разбирает сделки виртуального счёта и пишет сводку в чат. |
146
- | **Окно обучения (`modelTrainDays`)** | `90` дн. | На скольких последних торговых днях строятся эмбеддинги карты рынка и обучаются веса перед каждым месяцем прогноза. |
147
- | **Период исследования (`modelHistoryDays`)** | `1000` дн. | Глубина исторической проверки в календарных днях (~2.4 года торгов). Последние 30% (`oosPct = 30`) выделяются в независимый контрольный период. |
148
- | **Размерность карты рынка (`modelEmbedDim`)** | `11` | Число собственных векторов матрицы корреляций, формирующих координаты акций на карте рынка. |
149
- | **Вес бизнес-профилей компаний (`modelTextWeight`)** | `0` | Смешивает поведенческую матрицу близости акций с матрицей сходства бизнеса из 20 фундаментальных признаков, оцененных ИИ. |
135
+ | **Блокировать сделки против важных свежих новостей (`newsFilter`)** | `Выкл` | Блокирует покупку бумаги на сильном негативе за последние 6 часов (`imp >= 0.6`, `tone <= -0.4`) и шорт на сильном позитиве. |
150
136
 
151
137
  ---
152
138
 
153
139
  ## 7. Жёсткие предохранители при работе с реальным брокером
154
140
 
155
- При подключении реального счёта (**Т-Банк, БКС, Финам, Алор**) действуют аппаратные предохранители, которые **не может изменить или отключить ИИ-Стратег**:
141
+ При подключении брокерского счёта (**Т-Банк, Финам, БКС, Алор, Цифра брокер, ITI Capital, СберИнвестиции, ВТБ, Альфа-Инвестиции**) действуют аппаратные предохранители:
156
142
 
157
- 1. **Три уровня допуска:**
143
+ 1. **Три уровня допуска + тестовая песочница:**
158
144
  * `Только чтение` — безопасная синхронизация портфеля и просмотр расчётных заявок;
159
- * `Подтверждение заявок` — расчёт пакета заявок в целых лотах Мосбиржи (`TQBR`) и отправка карточки в **Telegram (`@neuroalpha_trade_bot`) и MAX** с кнопками `✓ Исполнить` / `✕ Отклонить`;
160
- * `Автомат` — автоматическое выставление лимитных заявок по закрытию свечи.
161
- 2. **Лимит капитала на стратегию (`maxCapitalRub`):** Стратегия оперирует строго выделенной суммой (например, `100 000 ₽`), даже если на вашем брокерском счёте лежит больше средств.
162
- 3. **Дневной стоп по просадке (`maxDailyDrawdownPct`):** Если оценка счёта за текущий день снизилась от утреннего баланса на заданный порог (по умолчанию `−3%`), счёт автоматически переходит в статус `СТОП` и блокирует отправку новых заявок до ручного сброса пользователем.
163
- 4. **Только лимитные заявки с контролируемым отступом (`limitOffsetPct`):** Заявки никогда не отправляются «по рынку» в пустой стакан — цена всегда рассчитывается с защитным лимитным отступом (по умолчанию `0.1%`), округлённым строго по шагу цены (`MINSTEP`) конкретной бумаги Мосбиржи.
164
- 5. **Защита краёв сессии (`skipEdgeMinutes`):** В первые и последние 10 минут основной торговой сессии (`09:50–10:10` и `18:35–18:55` МСК), когда в стакане расширены спреды, автоматическая отправка заявок блокируется.
165
- 6. **Авто-поиск субсчетов Т-Инвестиций и защита начального портфеля (Переходный период `legacyMode`):**
166
- * По кнопке **«🔍 Найти мои счета по токену»** система сама загружает список всех ваших открытых субсчетов в Т-Инвестициях с их названиями из мобильного приложения и балансом.
167
- * Облигации (ОФЗ и корпоративные), фонды (`LQDT`, `TMOS` и др.) и акции вне словаря `MOEXBMI` не продаются и не затрагиваются стратегией никогда.
168
- * Для существующих акций на счёте доступны 3 режима переходного периода:
169
- * **«Изолированный карман» (`isolate`, по умолчанию):** при первом подключении (или по кнопке «Защитить текущие бумаги») система запоминает ваши старые позиции (`baselineQty`) и никогда их не продаёт, торгуя строго новыми лотами в пределах выделенного лимита `maxCapitalRub`.
170
- * **«Плавный переход» (`smooth`):** старые акции не распродаются в кэш одномоментно, а замещаются постепенно (не более 2 бумаг за шаг, начиная с позиций в плюсе), только когда стратегии требуются средства под новый подтверждённый сигнал покупки или если по самой старой акции вышел сильный прогноз падения.
171
- * **«Полное управление» (`takeover`):** для выделенного под робота субсчёта — все нецелевые акции из словаря стратегии сразу приводятся к модельному портфелю.
145
+ * `Подтверждение заявок` — расчёт пакета заявок в целых лотах Мосбиржи (`TQBR` / `SPBRU`) и отправка карточки в **Telegram и MAX** с кнопками `✓ Исполнить` / `✕ Отклонить`;
146
+ * `Автомат` — автоматическое двухфазное выставление лимитных заявок (сначала закрывающие `sell/cover`, затем через `1,2 с` открывающие `buy/short`);
147
+ * `Тестовый режим (песочница брокера)` — торговля виртуальными деньгами на тестовом контуре брокера без риска.
148
+ 2. **Лимит капитала на стратегию (`maxCapitalRub`):** Стратегия оперирует строго выделенной суммой (в пределах стартового лимита тарифа + 100% реинвестирование всей заработанной прибыли).
149
+ 3. **Дневной стоп по просадке (`maxDailyDrawdownPct`):** Если оценка счёта за текущий день снизилась от утреннего баланса на заданный порог (по умолчанию `−3%`, с подтверждением на двух синхронизациях подряд), счёт автоматически переходит в статус `СТОП` до следующего торгового дня или ручного запуска.
150
+ 4. **Только лимитные заявки с точным шагом цены (`limitOffsetPct`):** Заявки выставляются от живой цены с защитным лимитным отступом (по умолчанию `0.1%`), округлённым строго по шагу цены (`MINSTEP` / `minPriceIncrement`) конкретной бумаги.
151
+ 5. **Защита краёв сессии (`skipEdgeMinutes`):** В первые и последние 10 минут основной торговой сессии (`09:50–10:10` и `18:35–18:55` МСК) автоматическая отправка заявок блокируется.
152
+ 6. **Три режима обращения с начальным портфелем (`legacyMode`):**
153
+ * **«Изолированный карман» (`isolate`, по умолчанию):** система запоминает ваши старые позиции (`baselineQty`) и никогда их не продаёт.
154
+ * **«Плавный переход» (`smooth`):** старые акции с отрицательным/слабым прогнозом ИИ постепенно расчищаются, высвобождая рублёвый кэш как под новые покупки, так и под новые шорты.
155
+ * **«Полное управление» (`takeover`):** все нецелевые акции из словаря стратегии сразу приводятся к модельному портфелю (облигации, фонды и бумаги вне словаря не затрагиваются никогда).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neuroalpha",
3
- "version": "0.3.14",
3
+ "version": "0.3.16",
4
4
  "description": "НейроАльфа — ИИ-автопилот для рынка акций Мосбиржи: эмбеддинги акций, самообучение правил, коннекторы Т-Банк / БКС / Финам / Алор и боты Telegram / MAX",
5
5
  "author": "Roman A. Perepelkin",
6
6
  "license": "UNLICENSED",
package/public/admin.html CHANGED
@@ -132,13 +132,13 @@
132
132
 
133
133
  <div class="card">
134
134
  <h2>Персональные VIP-токены и Промокоды</h2>
135
- <p class="sub">Сгенерируйте персональный <code>VIP-…</code> токен (снимает все ограничения на количество счетов, капитал и потолок годовой доходности) или промокод для тарифов «Инвестор» / «Профи».</p>
135
+ <p class="sub">Сгенерируйте персональный <code>VIP-…</code> токен (тариф VIP — до 240% годовых, лимиты по согласованию) или промокод для тарифов «Инвестор» / «Профи».</p>
136
136
  <form id="form-promo" class="row-gap" style="flex-wrap:wrap;margin-bottom:14px">
137
137
  <input name="code" placeholder="Код (или пусто для авто VIP-…)" style="width:220px">
138
138
  <select name="plan" style="width:210px">
139
- <option value="vip">👑 Тариф «VIP» (Без ограничений)</option>
140
- <option value="pro">Тариф «Профи» (до 100%/год)</option>
141
- <option value="investor">Тариф «Инвестор» (до 50%/год)</option>
139
+ <option value="vip">👑 Тариф «VIP» (до 240%/год)</option>
140
+ <option value="pro">Тариф «Профи» (до 120%/год)</option>
141
+ <option value="investor">Тариф «Инвестор» (до 60%/год)</option>
142
142
  </select>
143
143
  <input name="days" type="number" value="365" min="1" max="3650" style="width:110px" title="Длительность, дней" placeholder="Дней">
144
144
  <input name="maxUses" type="number" value="1" min="1" max="10000" style="width:120px" title="Лимит активаций" placeholder="Лимит">
@@ -269,10 +269,11 @@
269
269
  <td class="small">${u.tgConnected ? '<span class="pos">TG ✓</span> ' : ''}${u.maxConnected ? '<span class="pos">MAX ✓</span>' : (!u.tgConnected ? '<span class="muted">—</span>' : '')}</td>
270
270
  <td>
271
271
  <select data-user-plan="${u.id}">
272
- <option value="free"${u.plan === 'free' ? ' selected' : ''}>Старт (Free)</option>
273
- <option value="investor"${u.plan === 'investor' ? ' selected' : ''}>Инвестор (до 50%/год)</option>
274
- <option value="pro"${u.plan === 'pro' ? ' selected' : ''}>Профи (до 100%/год)</option>
275
- <option value="vip"${u.plan === 'vip' ? ' selected' : ''}>👑 VIP (Без ограничений)</option>
272
+ <option value="none"${u.plan === 'none' || u.plan === 'free' ? ' selected' : ''}>Без подписки</option>
273
+ <option value="investor"${u.plan === 'investor' ? ' selected' : ''}>Инвестор (до 60%/год · 1 счёт)</option>
274
+ <option value="pro"${u.plan === 'pro' ? ' selected' : ''}>Профи (до 120%/год · 5 счетов)</option>
275
+ <option value="vip"${u.plan === 'vip' ? ' selected' : ''}>👑 VIP (до 240%/год)</option>
276
+ <option value="owner"${u.plan === 'owner' ? ' selected' : ''}>⚡ Хозяин (Без ограничений)</option>
276
277
  </select>
277
278
  </td>
278
279
  </tr>`).join('')}</tbody>