Backtest
No description
type Backtest implements Node {
aiHistory(
first: Int
): [AIHistoryEntry!]!
runner: BotRunner
summary: BacktestSummary
overfitScore: OverfitScore
digest: BacktestDigest
window: BacktestWindow!
resourceUsage: ResourceUsageAggregation
id: ID!
deletedAt: Time
status: BacktestTaskStatus!
result: Map
errorMessage: String
logs: String
strategyID: ID!
runnerID: ID!
createdAt: Time!
updatedAt: Time!
completedAt: Time
startDate: Time
endDate: Time
config: Map
configFingerprint: String
splitGroupID: ID
splitRole: BacktestSplitRole
splitIndex: Int
kind: BacktestBacktestKind!
biasReport: BiasCheckReport
strategy: Strategy!
simulations(
after: Cursor
first: Int
before: Cursor
last: Int
orderBy: [SimulationOrder!]
where: SimulationWhereInput
): SimulationConnection!
legibleStatus: EntityStatus!
}
Fields
Backtest.aiHistory ● [AIHistoryEntry!]! non-null object
What the assistant changed on this backtest, newest first.
Backtest.aiHistory.first ● Int scalar
Backtest.runner ● BotRunner object
The runner this backtest executed on, or null when the caller may not read that runner.
NULLABLE by design: a public strategy's backtest can have run on a runner
private to the strategy's workspace, which another org's caller may not read.
The ENT-generated non-null runner: BotRunner! edge is skipped (see
internal/ent/schema/backtest.go) so that denial resolves to null instead of
nulling the whole Backtest node. A soft-deleted runner still resolves.
Backtest.summary ● BacktestSummary object
Typed summary of key backtest metrics extracted from result
Backtest.overfitScore ● OverfitScore object
Advisory overfit-risk score. Computed by pairing this backtest with its split
siblings (in-sample vs out-of-sample) or gathering its consistency-check windows by
split_group_id. Null for a standalone backtest, or until every sibling has
completed. Advisory only — never gates a run. A curated safe aggregate (like
summary); parent-node access already gates reaching it.
Backtest.digest ● BacktestDigest object
Server-computed digest: total return, drawdown, win rate, trade count,
Sharpe/Sortino, worst trade, and a comparison with the strategy's other
versions' backtests. The small, safe summary for list selections and the
assistant; the raw result stays out of lists. Parent-node access gates it,
like summary; comparison peers are limited to what the caller can read.
Backtest.window ● BacktestWindow! non-null object
What window this run asked for, what window it got, and whether they differ enough that a reader must be told before trusting a metric against the requested range. Always present; the executed half is null until the run has a result.
Backtest.resourceUsage ● ResourceUsageAggregation object
Total resource usage for this backtest execution Only populated if the backtest ran on a runner with billing enabled
Backtest.id ● ID! non-null scalar
Backtest.deletedAt ● Time scalar
Soft-delete timestamp. If set, record is considered deleted.
Backtest.status ● BacktestTaskStatus! non-null enum
Task status
Backtest.result ● Map scalar
Backtest result data (metrics, logs, trades, etc.)
Backtest.errorMessage ● String scalar
Error message if backtest failed
Backtest.logs ● String scalar
Container logs from backtest execution
Backtest.strategyID ● ID! non-null scalar
Foreign key to strategy
Backtest.runnerID ● ID! non-null scalar
Foreign key to runner
Backtest.createdAt ● Time! non-null scalar
Backtest.updatedAt ● Time! non-null scalar
Backtest.completedAt ● Time scalar
Completion timestamp
Backtest.startDate ● Time scalar
Backtest start date (beginning of time range)
Backtest.endDate ● Time scalar
Backtest end date (end of time range)
Backtest.config ● Map scalar
Backtest-specific configuration overrides (exchange, dry_run, etc.)
Backtest.configFingerprint ● String scalar
Identifies the run by what it executes: the strategy code and the merged freqtrade config (timerange included), minus keys that cannot change the result. Two runs with the same fingerprint are the same run, whichever surface launched them (runconfig.Fingerprint, #2963). Server-managed.
Backtest.splitGroupID ● ID scalar
Groups backtests created together as a validation set (split pair / consistency-check windows). Nil for a standalone backtest.
Backtest.splitRole ● BacktestSplitRole enum
Role within the split group: in_sample, out_of_sample, or wf_window. Nil for a standalone backtest.
Backtest.splitIndex ● Int scalar
Order of this backtest within its consistency-check window set (0-based). Nil unless a consistency-check window.
Backtest.kind ● BacktestBacktestKind! non-null enum
What the job runs: backtest, or bias_check (lookahead + recursive analysis). A bias check stores biasReport, never a result.
Backtest.biasReport ● BiasCheckReport object
A bias check's finding (lookahead / recursive analysis). Nil for a backtest and until the check completes. Server-managed.
Backtest.strategy ● Strategy! non-null object
Backtest.simulations ● SimulationConnection! non-null object
Backtest.simulations.after ● Cursor scalar
Returns the elements in the list that come after the specified cursor.
Backtest.simulations.first ● Int scalar
Returns the first _n_ elements from the list.
Backtest.simulations.before ● Cursor scalar
Returns the elements in the list that come before the specified cursor.
Backtest.simulations.last ● Int scalar
Returns the last _n_ elements from the list.
Backtest.simulations.orderBy ● [SimulationOrder!] list input
Ordering options for Simulations returned from the connection.
Backtest.simulations.where ● SimulationWhereInput input
Filtering options for Simulations returned from the connection.
Backtest.legibleStatus ● EntityStatus! non-null object
Interfaces
Node interface
An object with an ID. Follows the Relay Global Object Identification Specification
Returned By
backtestChanged subscription ● backtestProgress subscription ● orgBacktestChanged subscription ● replayTradeExplanation mutation ● runBacktest mutation ● runBacktestWithSplit mutation ● runShadowBacktest mutation ● runWalkForward mutation ● stopBacktest mutation
Member Of
BacktestEdge object ● Simulation object