@qtsurfer/api-client
    Preparing search index...

    Type Alias ResultMap

    Execution result map. Always includes core fields (hostName, iops, strategyId, instrument). Yield metrics (pnlTotal, pnlTotalPercent, totalTrades, winRate, equityCurve, etc.) are present when the strategy emitted at least one trade. When signal storage is enabled, includes signal fields described below. notices carries what the run had to say about itself, and is absent when it had nothing.

    type ResultMap = {
        cagr?: number;
        equityCurve?: EquityPoint[];
        hostName?: string;
        instrument: string;
        iops?: number;
        maxDrawdown?: number;
        maxDrawdownPercent?: number;
        notices?: Notice[];
        noticesTruncated?: number;
        pnlTotal?: number;
        pnlTotalPercent?: number;
        sharpeRatio?: number;
        signalCount?: number;
        signalsId?: string;
        signalsUpload?: "Done" | "Failed" | "Skipped";
        signalsUploadedAt?: string;
        signalsUploadReason?: string;
        signalsUrl?: string;
        sortinoRatio?: number;
        strategyId: string;
        totalTrades?: number;
        winRate?: number;
    }
    Index
    cagr?: number

    Compound Annual Growth Rate

    equityCurve?: EquityPoint[]

    Equity curve over the backtest. Element 0 is an anchor at the backtest from with initialCapital; the remaining points are one sample per emitted yield, in order. Use it to plot the strategy's running equity without re-deriving it from the yield history.

    hostName?: string

    Identifier of the worker that executed the strategy. Useful when reporting issues so support can correlate with logs.

    instrument: string

    The instrument (currency pair) that was backtested

    iops?: number

    Instrument operations per second throughput during execution

    maxDrawdown?: number

    Maximum absolute drawdown in the output currency

    maxDrawdownPercent?: number

    Maximum percentage drawdown from peak equity

    notices?: Notice[]

    Diagnostics the engine raised over this run, each with provenance: execute.

    Absent means nothing was raised. This is the one surface where silence is a real answer: the run happened, over your data, start to finish, and the engine found nothing worth saying. That is not true of the compile path, where an empty list only means a short synthetic series reached nothing — see GET /strategy/{strategyId}.

    Notices are raised on failed and aborted runs too, and those are the ones most worth reading: a run that produced no trades often did so for a reason stated here.

    noticesTruncated?: number

    How many notices were dropped past the cap of 50. Absent when none were. A large value usually means one fault repeating per instrument or per parameter vector rather than 50 distinct problems.

    pnlTotal?: number

    Total profit and loss in the output currency

    pnlTotalPercent?: number

    Total PnL as a percentage of the initial capital (backtestFunding). Zero when backtestFunding is 0.

    sharpeRatio?: number

    Risk-adjusted return ratio (mean return / standard deviation of returns)

    signalCount?: number

    Number of signals emitted during strategy execution

    signalsId?: string

    Storage key for the signals file. Treat as opaque; use signalsUrl to download.

    signalsUpload?: "Done" | "Failed" | "Skipped"

    Upload status. Done = signal file is available at signalsUrl. Failed = upload error (see signalsUploadReason). Skipped = no signals emitted.

    signalsUploadedAt?: string

    ISO 8601 timestamp of when the upload completed. Only present when signalsUpload is Done.

    signalsUploadReason?: string

    Human-readable reason when signalsUpload is Failed or Skipped.

    signalsUrl?: string

    HTTPS URL to download the signals Parquet file. Use signalsUpload to know when it's ready.

    sortinoRatio?: number

    Downside risk-adjusted return ratio (mean return / downside deviation)

    strategyId: string

    Not the strategyId you compiled with — this is the execution context id, strategy:<user>:<strategyId>. The compiled strategy's id is the last :-separated segment; that, not this whole string, is what GET /strategy/{strategyId} takes.

    Take the segment after the last : rather than counting from the front: the shape has changed once already and callers that indexed a fixed position broke on it.

    totalTrades?: number

    Total number of trades executed by the strategy

    winRate?: number

    Percentage of profitable trades (0-100)