- Ключевые факты
- Где ИИ ошибается незаметно
- Мой трёхступенчатый протокол проверки
- 1. Сначала фиксирую единицы и допущения
- 2. Отделяю формулу от ответа
- 3. Проверяю код контрольными примерами
- Промпт, который использую как заготовку
- Частые вопросы (FAQ)
- Можно ли просто попросить ИИ перепроверить свой ответ?
- Зачем Decimal, если обычный калькулятор показывает нормальное число?
- Может ли ИИ сам запустить код?
- Достаточно ли шести тестов?
- Итог
TL;DR: Я не доверяю числу только потому, что его уверенно написал ИИ. Для размера позиции, риска и комиссии модель может подготовить формулу и код, но финальный результат я прогоняю через отдельный расчёт и заранее известные тест-кейсы.
Ключевые факты
| Факт | Что это значит на практике | Источник |
|---|---|---|
| Генеративная модель может уверенно выдать ошибочный или внутренне противоречивый ответ | Подробное объяснение ещё не доказывает правильность числа | NIST AI 600-1 |
| Десятичные дроби вроде 1.1 не всегда представляются двоичным float точно | Для денежных расчётов лучше явно задавать точность и округление | Документация Python: floating point |
| Модуль Decimal поддерживает точную десятичную арифметику и управляемое округление | Комиссии, риск и денежные суммы можно считать воспроизводимо | Документация Python: Decimal |
| pytest позволяет запускать одну проверку на наборе входных значений | Формулу можно проверить на обычных и пограничных сценариях | Документация pytest |
Где ИИ ошибается незаметно
Типичный запрос трейдера выглядит безобидно: «Депозит 10 000 долларов, риск 1%, стоп 50 пунктов — рассчитай позицию». Но этих данных недостаточно. Для форекса нужны как минимум инструмент, размер контракта, стоимость пункта и валюта счёта. Для крипты важны единицы стопа, цена входа, комиссии и то, считается ли риск от собственного капитала или от номинала позиции.
Модель иногда молча подставляет привычное значение, путает проценты с долями или смешивает пункты и пипсы. Ответ при этом может выглядеть профессионально. Поэтому мой принцип простой: ИИ не калькулятор и не источник котировок. Он помогает превратить условие в однозначную спецификацию, а арифметику выполняет код, таблица или калькулятор, которому переданы проверенные входные данные.
Мой трёхступенчатый протокол проверки
1. Сначала фиксирую единицы и допущения
До расчёта я прошу перечислить входы таблицей: капитал, допустимый риск в процентах и деньгах, цена входа, цена стопа, стоимость минимального шага, валюта счёта, комиссия и правило округления. Если параметра нет, модель должна написать «не задано», а не угадывать.
2. Отделяю формулу от ответа
Базовая логика выглядит так: денежный риск = капитал × доля риска, затем размер позиции = денежный риск / убыток на единицу позиции до стопа. Например, при капитале 10 000 USDT и риске 1% лимит убытка равен 100 USDT. Если вход по BTC — 50 000 USDT, а стоп — 49 000 USDT, расстояние до стопа равно 1 000 USDT на 1 BTC; без учёта комиссий расчётный размер позиции составляет 0,1 BTC. Это учебный пример, а не торговая рекомендация.
Затем я отдельно добавляю комиссию и возможное проскальзывание. Если код не умеет их учитывать, его результат нельзя называть полным риском сделки.
3. Проверяю код контрольными примерами
Минимальный набор тестов: обычный сценарий, нулевое расстояние до стопа, отрицательное значение, слишком маленький капитал, комиссия больше лимита риска и разные правила округления. Полезна и обратная проверка: умножить рассчитанный размер позиции на убыток до стопа и убедиться, что результат не превышает лимит риска.
from decimal import Decimal, ROUND_DOWN
capital = Decimal("10000")
risk_share = Decimal("0.01")
entry = Decimal("50000")
stop = Decimal("49000")
risk_money = capital * risk_share
loss_per_btc = abs(entry - stop)
size = (risk_money / loss_per_btc).quantize(
Decimal("0.001"), rounding=ROUND_DOWN
)
assert size * loss_per_btc <= risk_money
Я передаю числа в Decimal строками, а правило округления указываю явно. В реальном расчёте ещё нужны спецификация конкретной площадки, минимальный шаг объёма, комиссии и запас на проскальзывание.
Промпт, который использую как заготовку
Не угадывай отсутствующие параметры. Сначала верни таблицу входных данных с единицами измерения. Затем запиши формулу символами, перечисли допущения и сгенерируй функцию на Python с Decimal. Добавь минимум шесть тестов, включая нулевой стоп, отрицательные входы, комиссию и проверку обратным расчётом. Не давай торговую рекомендацию и не подставляй текущие котировки без источника.
Такой промпт не гарантирует правильность. Он лишь делает ошибку заметнее и создаёт материал, который можно проверить.
Частые вопросы (FAQ)
Можно ли просто попросить ИИ перепроверить свой ответ?
Можно, но это не независимая проверка. Модель способна повторить то же неверное допущение другими словами. Надёжнее сравнить результат с исполняемым кодом, таблицей и обратным расчётом.
Зачем Decimal, если обычный калькулятор показывает нормальное число?
Для одного простого примера разница может быть незаметна. Но в цепочке денежных операций важны точное представление десятичных значений и заранее выбранное округление. Decimal делает эти правила явными.
Может ли ИИ сам запустить код?
Некоторые сервисы умеют выполнять код через отдельный инструмент. Это полезнее мысленной арифметики модели, но входные данные, формулу и результат всё равно нужно проверять. Исполнение неверной формулы лишь быстро выдаст неверный ответ.
Достаточно ли шести тестов?
Нет универсального числа. Шесть — разумный минимум для небольшой функции. Чем выше цена ошибки и сложнее спецификация инструмента, тем больше нужны независимые сценарии и сверка с документацией брокера или биржи.
Итог
Я использую ИИ не как оракула с готовым числом, а как помощника по формализации задачи. Рабочая цепочка такая: проверенные входы → формула с единицами → исполняемый расчёт → тест-кейсы → обратная проверка. Если хотя бы один этап нельзя воспроизвести, я не использую результат для управления реальным риском.
Автор: Denis | Дата: 7 ноября 2026 | Обновлено: 7 ноября 2026
Denis — трейдер с 10+ летним опытом на форексе и крипторынках











