Двигатель проп-фирмы является программным обеспечением, которое определяет, активен ли оценочный счет, пройден ли он или нарушен.

Он считывает сделки, баланс счета, открытую прибыль и убытки, комиссии и время. Он сравнивает состояние счета с правилами программы. Когда лимит превышен, движок может блокировать новые заказы, закрывать позиции, перемещать счет на другой этап или отправлять его на проверку выплат.

Это звучит просто, пока два человека не вычисляют одно и то же правило по-разному.

Рассмотрим счет на $100,000 с лимитом ежедневных убытков 5%. Сидит ли пол на уровне $95,000 весь день? Двигается ли он после того, как трейдер зарабатывает $2,000? Учитываются ли открытые убытки? В каком часовом поясе заканчивается день? Что происходит, если позиция пересекает лимит между двумя обновлениями цен?

Процент – это простая часть. Определение, время и доказательства – вот что делает движок вызова надежным.

КомпонентЕго задача
Торговая платформаПринимает заказы и фиксирует позиции, заполняет и обновляет значения счетов
Движок оценкиПрименяет правила оценки и изменяет статус счета
Панель трейдераПоказывает прогресс, оставшуюся зону убытков и историю правил
CRM и бэк-офисУправляет клиентом, жизненным циклом счета, обзорами и коммуникацией
Процесс выплатПроверяет соответствие требованиям, рассчитывает распределение и фиксирует статус платежа

Как работает движок испытаний проп-фирмы

Я рассматриваю движок как обработчик событий с памятью.

Каждое соответствующее событие входит в последовательность: заполнение, изменение цены, комиссия, своп, ежедневный сброс или ручная корректировка баланса. Движок восстанавливает состояние аккаунта, оценивает правила и записывает решение в журнал аудита.

From trade event to account decision

The engine combines platform events with the active rule version. Each decision produces an account action and an audit record.

Incoming events
Orders and fills Size, price, side, costs
Market prices Live equity and exposure
Clock and calendar Reset time, session, news
Account changes Fees, swaps, corrections
Challenge engine

Account state + rule evaluator

Rebuild the account, then run every active rule against the same state.

Profit target
Daily loss
Static or trailing drawdown
Trading days and consistency
Position and time limits
Payout eligibility
Account actions
Continue or warn Update progress and remaining room
Enforce breach Reject orders, flatten, lock
Promote stage Create the next eligible account
Review payout Freeze profit and calculate split
Audit record

Event ID, account snapshot, threshold, rule version, decision, action and timestamp.

Последовательность имеет значение. Поздняя заливка может привести к неправильной экспозиции. Дублированная заливка может учесть одну и ту же потерю дважды. Разные часовые пояса могут сделать действительный ежедневный сброс похожим на нарушение.

Надежный двигатель, следовательно, нуждается в четырех вещах:

  1. Нормализованные события. Символы, временные метки, сборы и идентификаторы аккаунтов должны использовать один согласованный формат.
  2. Авторитетный отчет о состоянии счета. Баланс, собственный капитал, открытые позиции, максимальный уровень дохода и ежедневная база должны поступать из определенных источников.
  3. Детерминированные правила. История событий должна всегда приводить к одному и тому же результату.
  4. Аудиторский след. Фирма должна иметь возможность показать, какое событие вызвало пропуск или нарушение, и какая версия правила была активна.

Панель управления без этих основ может показать предупреждение, но она не может надежно объяснить, как было получено это число.

Правила, по которым двигатель должен выполнять расчеты

Большинство программ оценки используют знакомые метки. Однако расчеты под каждой меткой могут все еще различаться.

Целевая прибыль

Цель по прибыли определяет результат, необходимый для завершения этапа. Базовая версия может потребовать счет, который начинается с $100,000, чтобы достичь $108,000.

Двигателю всё ещё нужны ответы на несколько вопросов:

  • Цель основана на балансе или капитале?
  • Должны ли все позиции быть закрыты до того, как этап пройдет?
  • Включены ли комиссии и свопы?
  • Существует ли минимальное количество торговых дней?
  • Может ли один большой день нарушить правило последовательности, даже после достижения цели?

Я предпочитаю, чтобы логика проходила только после проверки каждого правила риска. Трейдер не должен проходить, потому что капитал достиг цели на том же обновлении цены, которое нарушило предел убытка.

Максимальный дневной убыток

Ежедневные убытки, как правило, являются правилом, наиболее подверженным ошибкам в тайминге.

Предположим, что допустимый ежедневный убыток составляет $5,000. Простая реализация выглядит следующим образом:

Ежедневный минимум = Базовый уровень начала дня - 5,000 долларов

Оставшаяся сумма = Текущий капитал - Дневной минимум

Программа может использовать начальный капитал, большую из баланса и капитала, или фиксированный процент от начального размера счета. Она может включать открытые P&L, комиссии, свопы и дивиденды. Она может сбрасываться по времени платформы, а не по местному времени трейдера.

Общественное правило должно описывать точную базу и вычеты. Двигатель должен сохранять их при каждом сбросе.

Максимальные потери и просадки

Статический максимальный убыток устанавливает фиксированный уровень. С начальным счётом $100,000 и лимитом $10,000 уровень остаётся на уровне $90,000.

Сплавающим просадкой поднимается уровень, когда счет достигает нового максимума:

Текущий нижний предел = Максимально допустимый уровень - Допуск на снижение

Если уровень воды достигает $106,000 и пособие составляет $10,000, то минимальный уровень становится $96,000.

Программа должна указать, что создает новую максимальную отметку:

  • внутридневные акции;
  • акции на конец дня;
  • закрытый баланс;
  • баланс на конец дня.

Также должно быть указано, сохраняет ли пол уровень трейлинга, останавливается на начальном балансе или блокируется на другом пороге. “10% трейлинг просадка” неполная без этих деталей.

Торговые дни и последовательность

Торговый день должен иметь одно задокументированное определение. Открытие позиции, закрытие позиции и удержание сделки на ночь не обязательно считаются одинаково.

Правила последовательности требуют одинаковой точности. Если лучший день не может превышать 40% от общей прибыли, движок должен знать, применяется ли тест во время испытания, в момент прохождения или только когда запрашивается выплата.

Например, трейдер имеет $10,000 общей прибыли и заработал $4,800 в лучший день:

$4,800 / $10,000 = 48%

Счет может превышать свою прибыльную цель, но все равно не пройти тест на 40% стабильность. В зависимости от программы трейдеру может потребоваться зарабатывать больше в другие дни, а не терять часть лучшего дня.

Ограничения на торговлю

Размер позиции, инструмент, срок удержания, новости и правила автоматизации нуждаются в структурированных календарях, картировании инструментов и данных заказов. Предложение в условиях не может остановить заказ само по себе.

Одна учетная запись, три разных уровня потерь

Используйте этот иллюстративный отчет:

  • начальный баланс: $100,000;
  • текущий баланс: $102,000;
  • начальный баланс дня: $102,000;
  • самый высокий зарегистрированный капитал: $106,000;
  • текущий капитал: $97,200;
  • ежедневный лимит потерь: $5,000;
  • общее допустимое убытие: $10,000.

Which loss rule stops the account first?

The same $100,000 account can be safe or breached depending on current equity and the recorded high-water mark.

Initial balance $100,000
Start-of-day balance $102,000
High-water mark $106,000
Current equity $97,200

Daily loss

Start-of-day balance – $5,000

Static maximum loss

Initial balance – $10,000

Trailing drawdown

High-water mark – $10,000

Account active

Daily loss is the closest limit, with `$200` of room left.

При фиксированной ежедневной базовой линии, ежедневный минимум составляет $97,000. Текущий капитал имеет всего $200 до нарушения.

Статический порог полной потери остается $90,000, оставляя $7,200. Это правило не близко к активации.

Минимальный порог составляет $96,000, основываясь на $106,000 максимальном уровне. Это оставляет $1,200.

Ежедневное правило выигрывает, потому что у него остается наименьшая свободная площадь. Другие $250 плавающего убытка приведут к снижению капитала до $96,950 и нарушат счет, хотя он все еще остается значительно выше статического максимального уровня убытков.

Вот почему я не оцениваю результат только по процентам в заголовке. Активное ограничение может изменяться в течение дня, и это может быть не тем правилом, которого ожидает трейдер.

Что происходит, когда предел пересечен

Нарушение — это рабочий процесс, а не изменение цвета на панели управления.

Компания должна решить, какие действия происходят и в каком порядке:

  1. Запишите состояние счета и вызывающее рыночное событие.
  2. Отклонить новые заказы.
  3. Отменить рабочие заказы.
  4. Закройте открытые позиции, если это требуется программой.
  5. Заблокируйте аккаунт или пометьте его для проверки.
  6. Уведомить трейдера и команду операций.
  7. Сохраните версию расчета и правил для возможного спора.

Существует два распространенных режима отказа.

При отложенном применении правило обнаруживает нарушение, пока платформа все еще принимает заказы. При дублирующем применении повторное выполнение закрывает позицию дважды или повторяет изменение статуса. Повторение одного и того же события нарушения не должно повторять его финансовый эффект.

Предупреждения могут помочь до жесткого лимита. Например, система может уведомить трейдера при 70% и 90% от дневной потерь. Но порог предупреждения должен оставаться отдельным от фактического правила нарушения.

Граничные случаи, которые заслуживают собственных тестов

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

СитуацияОжидаемое поведение
Ежедневный сброс с открытой П&ЛСделать снимок определенной базовой линии в часовой зоне программы перед обработкой следующего события
Ценовые разрывы через лимитЗаписать первую доступную цену и результирующий капитал, а не фиктивную сделку на пороге
Частичные исполнения и штрафы за задержкуПрименить каждое событие один раз и пересчитать после поступления комиссий или свопов
Перерыв в подаче данныхСохранить порядок событий после повторного подключения и избежать передачи счета с неполными данными
Ручная коррекцияСохранить автора, причину, временную метку и ссылку на оригинальное решение

Изменения в переходе на летнее/зимнее время, техническое обслуживание и дублированные обратные вызовы принадлежат одному и тому же тестовому пакету. Переупорядоченное событие может привести к тому, что правильное правило даст неправильное решение.

Преодоление вызова — это переход состояния

Целевая прибыль сама по себе не должна продвигать аккаунт.

Перед тем как изменить active на passed, проверьте:

  • нет жесткого правила, которое было бы нарушено;
  • цель использует требуемый баланс или меру капитала;
  • все необходимые торговые дни завершены;
  • условия согласованности выполнены;
  • позиции закрываются, если это требуется программой;
  • у аккаунта нет нерешенных данных или ограничений по соблюдению.

Повторные попытки не должны создавать следующий аккаунт дважды или прикреплять неправильный шаблон правила.

Сохраняйте историю этапов видимой: аккаунт создан, этап пройден, создан финансируемый аккаунт, право на выплату, запрос на выплату и выплата завершена. Эта временная шкала сообщает службе поддержки, где застрял аккаунт.

Как работает процесс выплат

Двигатель вызовов определяет право на участие. Процесс выплаты обрабатывает деньги и контролирует их.

Практическая последовательность следующая:

  1. Заморозить снимок соответствия для запрашиваемого периода выполнения.
  2. Подтвердите, что у аккаунта нет открытых позиций, если это необходимо.
  3. Пересчитать допустимую прибыль после сборов и предыдущих выплат.
  4. Примените долю прибыли трейдера.
  5. Провести проверки идентичности, права собственности на аккаунт и злоупотреблений.
  6. Одобрить, отклонить или отправить запрос на ручное рассмотрение.
  7. Создайте инструкцию по оплате.
  8. Запишите статус провайдера, сборы и ссылку на расчет.
  9. Настройте аккаунт в соответствии с правилами программы.

Если допустимая прибыль составляет $6,000, а доля трейдера составляет 80%, валовая выплата составляет:

$6,000 x 80% = $4,800

Система должна показывать, какое окно производительности принесло $6,000, были ли вычтены предыдущие выплаты и что происходит с оставшимися $1,200.

Статус платежа также требует сверки. "Одобрено" в бэк-офисе проп-фирмы не означает "оплачено" платежным провайдером или "получено" трейдером.

Правила риска и обнаружение злоупотреблений — это разные системы

Ежедневные убытки и просадки являются детерминированными. Счет либо превысил установленный порог, либо нет.

Обнаружение мошенничества обычно является вероятностным. Совместное использование устройств, совпадение заказов, необычная задержка, скоординированные аккаунты или конфликты идентичности могут создать сигналы. Сигнал сам по себе не является доказательством.

Я бы отделил два пути принятия решений:

  • Движок правил: вычисляет условия опубликованной программы.
  • Контроль за злоупотреблениями: оцените поведение и соберите доказательства.
  • Ручная проверка: обрабатывает неоднозначные случаи и фиксирует окончательную причину.

Автоматические системы управления могут блокировать четко определенные действия. Слабый сигнал не должен приводить к необъяснимому отказу в выплате. Рецензенты нуждаются в исходных заказах, временных метках, устройствах и ссылках на правила, а не только в оценке.

Что протестировать перед запуском челленджа

Я бы воспроизвел полные последовательности событий и проверил каждый результат с помощью ручного вычисления.

В тестовый пакет должны входить:

  • обычный пропуск;
  • ежедневные убытки, вызванные плавающей прибылью и убытками;
  • статические и текущие нарушения пределов убытков;
  • максимум акций, который перемещает внутридневной уровень поддержки;
  • ежедневный сброс с открытыми позициями;
  • разрыв цены через лимит;
  • комиссии и свопы, опубликованные после исполнения;
  • частичные исполнения и отклоненные заказы;
  • дубликаты и события вне порядка;
  • прерывание рыночных данных и повторное подключение;
  • одновременное событие цели и ограничения убытков;
  • выплата после одной или нескольких предыдущих выплат;
  • принятая апелляция и ручная коррекция счета.

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

Что должна уметь настраивать проп-фирма

Список правил имеет меньшее значение, чем предсказуемое поведение и расчет, который команда может воспроизвести.

Перед тем как выбрать движок для задач, проверьте, может ли компания настроить:

  • одноступенчатые, многоступенчатые и программы прямого доступа;
  • целевая прибыль и минимальное количество торговых дней;
  • базовый уровень ежедневных потерь, время сброса и включенные расходы;
  • статическое, окончательное или внутридневное движение вниз и поведение блокировки;
  • инструмент, время, новости и ограничения по размеру позиции;
  • предупреждения, серьезные нарушения и действия с аккаунтом;
  • процесс передачи, продвижения и выплаты;
  • версии правил, журналы событий и разрешения на ручной обзор.

Также проверьте, как быстро изменение правила достигает активных аккаунтов. Новые условия не должны тихо переписывать расчет для уже проводимой оценки.

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