The evaluation endpoint gives you a real-time snapshot of where the agent stands in its current evaluation window. Before Halyrd can be promoted to live trading, it must satisfy three criteria simultaneously: a positive expectancy across closed trades, a minimum number of closed trades (the trade floor), and a maximum drawdown that stays within the configured cap. This endpoint exposes each of those objectives individually so you can track progress day by day and diagnose exactly which criteria are — or aren’t — being met.
GET /agents//evaluation
Returns the current evaluation state, window progress, and the status of each individual objective.
GET http://localhost:8000/agents/current/evaluation
Response
{
"state": "EVALUATING",
"eligible": false,
"window_days_elapsed": 3,
"eval_window_days": 7,
"trade_floor": 10,
"closed_trades": 5,
"objectives": [
{
"rule": "positive_expectancy",
"current": 0.0042,
"limit": null,
"met": true
},
{
"rule": "trade_floor",
"current": 5,
"limit": 10,
"met": false
},
{
"rule": "max_drawdown",
"current": 0.035,
"limit": 0.20,
"headroom_pct": 82.5,
"met": true
}
]
}
Top-level fields
| Field | Type | Description |
|---|
state | string | Current evaluation state. See values below. |
eligible | boolean | true when every objective in the objectives array has met: true. |
window_days_elapsed | integer | Number of calendar days that have elapsed in the current evaluation window. |
eval_window_days | integer | Total configured length of the evaluation window in days. |
trade_floor | integer | Minimum number of closed trades required for the trade_floor objective to pass. |
closed_trades | integer | Number of trades closed so far in this evaluation window. |
objectives | array | Per-rule status objects. See below. |
state values
| Value | Description |
|---|
EVALUATING | The window is active and in progress; not all objectives are met yet. |
ELIGIBLE | All objectives are met; the agent can be promoted to live. |
WINDOW_EXTENDED | The original window deadline passed with the trade floor unmet; the window has been extended automatically to give the agent more time to accumulate trades. |
Objective fields
| Field | Type | Description |
|---|
rule | string | Identifier for the risk/performance rule being evaluated (e.g. positive_expectancy, trade_floor, max_drawdown). |
current | number | The rule’s current measured value. For drawdown rules this is a decimal fraction; for trade counts it is an integer. |
limit | number | null | The threshold the current value must not exceed (or must reach, for floor rules). null when the rule is direction-only (e.g. expectancy just needs to be positive). |
headroom_pct | number | null | How much room remains before the limit is hit, expressed as a percentage of the limit. null for count-based rules where headroom isn’t meaningful. |
met | boolean | Whether this individual objective is currently satisfied. |
eligible: true is a readiness signal, not an automatic action. Even when all objectives are met and the state transitions to ELIGIBLE, the agent stays in paper mode until you explicitly promote it via POST /agents/{id}/promote in Settings or via the API.