Everything the platform records about a registered strategy. Alias for
api-client's StrategyState.
validation is the verdict and is one of:
'not_validated' — registered, never checked.
'pending' — a check was asked for and has not answered yet.
'passed' — the class loaded and survived its first event.
'failed' — it did not; detail says how.
'passed' is a floor, not a guarantee. It means the compiled class
could be instantiated and got through the first event of a short synthetic
run — not the caller's instrument, not the caller's window, and not the
rest of the run. It says nothing about whether the strategy is correct,
profitable, or safe to run at scale. dryRunIncomplete marks a check that
ran out of its budget, which makes a 'passed' verdict a lower floor
still, and makes an empty notices list no longer a clean bill of health.
A verdict describes the bytecode that existed when it was recorded:
compiledAt newer than validatedAt means the strategy was recompiled
afterwards and the verdict no longer describes what would run.
_links.code, when present, is a discovery link to this strategy's raw
source (GET /strategy/{strategyId}/code — the same thing
QTSurfer.getStrategyCode fetches by id, so there is no need to follow
the link yourself). It is present on a full StrategyState body — this
function's result, and QTSurfer.validateStrategy's already-validated
200 — and absent from that same operation's queued: true (202)
outcome, which is a deliberately partial stub. This field passes through
unmodified from api-client, so it needs no unwrapping on the SDK's part.
Everything the platform records about a registered strategy. Alias for api-client's
StrategyState.validationis the verdict and is one of:'not_validated'— registered, never checked.'pending'— a check was asked for and has not answered yet.'passed'— the class loaded and survived its first event.'failed'— it did not;detailsays how.'passed'is a floor, not a guarantee. It means the compiled class could be instantiated and got through the first event of a short synthetic run — not the caller's instrument, not the caller's window, and not the rest of the run. It says nothing about whether the strategy is correct, profitable, or safe to run at scale.dryRunIncompletemarks a check that ran out of its budget, which makes a'passed'verdict a lower floor still, and makes an emptynoticeslist no longer a clean bill of health.A verdict describes the bytecode that existed when it was recorded:
compiledAtnewer thanvalidatedAtmeans the strategy was recompiled afterwards and the verdict no longer describes what would run._links.code, when present, is a discovery link to this strategy's raw source (GET /strategy/{strategyId}/code— the same thing QTSurfer.getStrategyCode fetches by id, so there is no need to follow the link yourself). It is present on a fullStrategyStatebody — this function's result, and QTSurfer.validateStrategy's already-validated200— and absent from that same operation'squeued: true(202) outcome, which is a deliberately partial stub. This field passes through unmodified from api-client, so it needs no unwrapping on the SDK's part.