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.
- package/README.md +80 -170
- package/config/strategy.json +2 -2
- package/docs//320/221/320/240/320/236/320/232/320/225/320/240/320/253_API.md +119 -0
- package/docs//320/224/320/225/320/237/320/233/320/236/320/231.md +10 -17
- package/docs//320/230/320/235/320/241/320/242/320/240/320/243/320/232/320/246/320/230/320/257.md +97 -156
- package/docs//320/234/320/225/320/245/320/220/320/235/320/230/320/232/320/220_/320/230_/320/237/320/220/320/240/320/220/320/234/320/225/320/242/320/240/320/253.md +29 -45
- package/package.json +1 -1
- package/public/admin.html +9 -8
- package/public/app.js +591 -832
- package/public/index.html +142 -186
- package/public/landing.html +19 -33
- package/public/legal.html +3 -4
- package/public/styles.css +10 -4
- package/server/api/routes.js +10 -3
- package/server/auth/index.js +53 -34
- package/server/brokers/index.js +718 -107
- package/server/data/moex.js +74 -23
- package/server/db.js +3 -2
- package/server/model/dataset.js +10 -2
- package/server/model/forecast.js +56 -19
- package/server/model/live.js +30 -6
- package/server/model/models.js +113 -31
- package/server/model/research.js +100 -26
- package/server/params-meta.js +16 -16
- package/server/strategist/index.js +4 -0
- package/server/strategist/tools.js +229 -0
package/docs//320/230/320/235/320/241/320/242/320/240/320/243/320/232/320/246/320/230/320/257.md
CHANGED
|
@@ -1,156 +1,97 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
>
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
|
12
|
-
|
|
13
|
-
|
|
|
14
|
-
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
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
|
-
> Подробное руководство простым языком: как работает концепция «Рынок как язык», откуда берётся устойчивая доходность >
|
|
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`) извлекаются главные собственные векторы — **эмбеддинги
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
|
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
|
|
160
|
-
* `Автомат` — автоматическое выставление лимитных заявок
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
*
|
|
168
|
-
*
|
|
169
|
-
|
|
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.
|
|
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> токен (
|
|
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» (
|
|
140
|
-
<option value="pro">Тариф «Профи» (до
|
|
141
|
-
<option value="investor">Тариф «Инвестор» (до
|
|
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="
|
|
273
|
-
<option value="investor"${u.plan === 'investor' ? ' selected' : ''}>Инвестор (до
|
|
274
|
-
<option value="pro"${u.plan === 'pro' ? ' selected' : ''}>Профи (до
|
|
275
|
-
<option value="vip"${u.plan === 'vip' ? ' selected' : ''}>👑 VIP (
|
|
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>
|