Skip to main content

AI Assistant Tools: Building and Running Backticks

Last updated November 4, 2026

Ask a connected assistant to build a Backtick, run it and tell you how it did. This article explains each Backtick tool the assistant has, what a Backtick goes through from draft to results, and the limits that shape how fast it can work.

The plan and the connection you need are in Connect tradeSteward to Claude, ChatGPT or Codex. Backtick Basics does not include the User API.

The consent page lists the Backtick permissions as View Backticks and results, Create Backticks, Edit Backticks and positions, Run Backticks, Cancel runs, Change library status, Move to trash and restore and Permanently delete Backticks. All of them are on by default except Permanently delete Backticks. See Choose What a Connection May Do.

The tools in this article build and run Backticks. Reading the results, making charts and portfolio links, and saving a position as a bot are in Backtick Results, Charts and Portfolio Links. Sweeping a setting across a range is in SweepTick.

The life of a Backtick

Every Backtick is in one of six states, and the state decides what the assistant can do with it:

  • Draft: built, not yet run. The assistant can change it and run it.
  • Scheduled: you asked for a run and the server accepted it, but the Backtick servers have no room for it yet. The server starts it later on its own. Nothing needs to be sent again.
  • Queued: the run is in line on the Backtick servers.
  • Running: the servers are working on it.
  • Completed: the run finished and the results are ready.
  • Failed: the run did not finish. The assistant can change the Backtick and run it again as it is.

Only a draft or a failed Backtick can be edited and run. A queued, running or completed Backtick is never changed: when you ask for a change to one of those, the assistant clones it and changes or runs the copy. Cancelling a queued or running Backtick puts it back to a draft.

A Backtick made by an assistant is also an edit of your account's Backtick Library, so it follows the library rules below under Where API runs appear. In short: it starts unsaved and appears on the Library's API/MCP tab, not under Unsaved, until you save it.

Finding and reading Backticks

Backtick capabilities get_backtick_capabilities

What your plan can test: the symbols with historical data, the first and last date each one covers, and your plan's ceilings. Ask: "What symbols and dates can we backtest?"

It gives back each symbol with its date range, the last date the data covers, and three limits: the most positions one Backtick can hold (250 on Backtick Professional), how many position-years can wait in the queue at once (8,000; one position tested over one year is one position-year), and the most positions a SweepTick can hold (257: up to 256 combinations plus the core position). It needs View Backticks and results.

List Backticks list_backtests

Your Backticks with their state and headline numbers. Ask: "Show me my saved Backticks" or "Which Backticks are still running?" The assistant can narrow the list to one library section (unsaved, Saved, Archived, Trash, or everything outside the Trash, which is the default; an unsaved Backtick made through a connection is the kind the API/MCP tab shows) and to one state (draft, scheduled, queued, running, completed or failed).

The list comes 50 to a page, up to 100 if the assistant asks for more, ordered running, queued, completed, failed, then drafts, newest first in each group. Each row carries the name, the state, the library section, where it came from (an assistant, your own code, or the website) and, for an unsaved Backtick made through a connection, the time it will move to the Trash. Completed Backticks also carry their headline metrics (a SweepTick has none, because its positions are alternatives); profit figures are net of commissions. Backticks in the Trash are listed only when the assistant asks for the Trash by name. It needs View Backticks and results.

Get Backtick get_backtest

One Backtick in full: its test period, starting balance, commission profile and other run settings, its state, its metrics when it has completed (a SweepTick has none, because its positions are alternatives), and every position with that position's metrics. Ask: "Open the Backtick called SPX 45 DTE Condor and tell me what is in it."

The answer also carries the Backtick's edit version, a number that goes up with every change. The assistant sends it back with each edit, so an edit made against a copy that is out of date is refused instead of overwriting a newer change. For a SweepTick it includes the sweep definition: the core position, the swept settings and the generated positions. It needs View Backticks and results.

Building and changing Backticks

Create Backtick create_backtest

Makes a new draft Backtick. Ask: "Create a Backtick of a 45 DTE SPX iron condor for 2024." The assistant gives it a name and can start it three ways: with positions it writes out itself (each a name and a set of position settings, in the same dictionary the bot tools use), from one or more of your existing bots copied in as positions (this needs the View bot settings permission), or empty, with positions added afterwards. Any Backtick setting the assistant does not send starts from your Backtick defaults, so a test period, starting balance or commission profile you keep in Backtick User Settings is picked up.

A Multi-Entry position (one position that enters at several times of day) cannot be created here; the assistant adds it afterwards with update_backtest. The call does not run the Backtick. If the same request is repeated within 10 minutes, the first Backtick is returned again instead of a second one being made. It needs Create Backticks.

Clone Backtick clone_backtest

Makes a draft copy of a Backtick with all of its positions. Ask: "Copy that Backtick and change the stop to 200%." This is how a queued, running or completed Backtick gets changed or run again: the copy is a fresh draft with its own id, and the original keeps its results. The copy does not carry the original's results, shares or place in the queue. A copy of a SweepTick is still a SweepTick and is changed with update_sweep.

The answer is short: the new Backtick, its edit version, and each new position paired with the position it was copied from. A repeat of the same request within 10 minutes returns the first copy again, marked as a replay, rather than making another. It needs Create Backticks.

Compose Backtick compose_backtest

Builds a portfolio from positions of several of your Backticks. Ask: "Put the 10:00 condor from my SPX Backtick and the 11:30 condor from my second Backtick into one new Backtick." The assistant names the Backtick and the position to take from each, and can rename a copy or change only the settings that differ. Each source must be one of your saved or recent Backticks. The result is a new draft Backtick; the sources are not changed, and the call does not run it: run_backtest does.

A position that launches or depends on other positions is copied only when those positions are in the same call, where the copy points at the new ones. Otherwise the assistant is told which positions to add, or it can ask for the references to be cleared. The answer lists, for each position, where it came from, its new id and which Backtick settings of its source differ from the new Backtick, because a position's results are computed under the Backtick it is in. The new Backtick is not saved: it moves to the Trash 48 hours after its last change unless it is saved. It needs Create Backticks and View Backticks and results.

Update Backtick update_backtest

Changes a draft or failed Backtick. Ask: "Change the test period to 2022 through 2024, add a 20 delta version of the same condor, and remove the third position." There are four kinds of change:

  • Settings: the Backtick's own fields. The test period, the starting balance, the notes, the commission profile, skipped days, price rounding, quantity-of-one mode, the position size minimums, the 49-contract SPX cap, strike conflict checking, and the slippage and delay overrides (which apply only to positions that have the override switch turned on). A new name is sent here too.
  • Add a position: a name and its settings. With entry times and a length for each entry, it adds a Multi-Entry position.
  • Change a position: a new name, or only the settings that change; the rest keep their stored values. For a Multi-Entry position the assistant sends the complete list of entries, and an entry it leaves out is removed.
  • Remove a position. Removing a Multi-Entry position removes all of its entries with it.

Several changes in one call. The assistant sends every change it has for one Backtick in a single call, as an ordered list of up to 50 changes. They are applied in order as one edit, and they are all saved or none of them is: the first change that is refused undoes the whole call and the Backtick is left exactly as it was. A change cannot point at a position added earlier in the same list, because that position has no id yet. A Multi-Entry position is always changed in a call of its own.

The answer is short: the edit version to use next and one line per change saying what it did (added, changed, deleted, or nothing to change). The assistant reads the whole Backtick again with get_backtest when it needs to.

Limits: your account has one limit on changes, shared across every connection. Every Backtick action counts except reading, previewing a SweepTick and making chart links: creating, cloning, editing, running, cancelling, filing, trashing, restoring, deleting, converting a position to a bot and making or revoking a portfolio link all spend from it. A single change spends one unit; a longer list of changes spends more. A call refused before it is accepted spends nothing: a missing permission, writes switched off, or a list of changes with the wrong shape (an empty list, more than 50 changes, or an item that is not an object). A call refused for what is inside one change, such as an action or a setting that is not valid, undoes the whole edit but has already spent its units. Adding the same position twice within 10 minutes is refused rather than adding a duplicate. It needs Edit Backticks and positions.

Validate Backtick validate_backtest

Checks a Backtick and saves nothing. Ask: "Check this Backtick before you create it." For a new Backtick the assistant sends what it would send to create one: the name, the Backtick's own fields and the positions. For changes to a draft or failed Backtick it sends the Backtick and the list of changes it would send to update it, with the edit version when it wants that checked too. A problem comes back exactly as the create or the update would answer it, each one naming the setting, its allowed range and its unit. A pass also lists what a run of the Backtick would refuse, such as an end date after the last day of Backtick data or no end date at all. Dates you do not send come from your Backtick defaults, so the assistant checks a Backtick before it runs one. Nothing is created or changed. While API changes are switched off, changes to a Backtick cannot be checked; a new Backtick still can. It needs Create Backticks to check a new Backtick, or Edit Backticks and positions to check changes, and it counts toward the same limit on checks as validating bot settings and previewing a SweepTick.

Running Backticks and waiting for them

Run Backtick run_backtest

Starts a run. Ask: "Run it" or "Run all three of those Backticks." The assistant can send one Backtick or up to 50 in one call, each a draft or failed Backtick, and it is meant to send every Backtick you want run in that one call. Each gets its own answer, in the order sent:

  • Queued: the run started and is in line on the Backtick servers.
  • Scheduled: the server accepted the run and will start it later on its own, when the Backtick servers have room for your pace. The answer says its place in line among your scheduled runs (1 is next) and why it waits: the servers are busy, your runs are being spaced out to your plan's pace, your plan's Backtick allowance has no room yet, or the pace could not be checked just then. Nothing needs to be sent again.
  • Refused, with the reason: for example a missing end date or starting balance, a Backtick that has already run (clone it instead), or one that is already queued.

How runs are paced. Your runs are spaced out so one account cannot fill the Backtick servers. While the Backtick servers are busy, your next run starts only once your earlier run has left the line. A run that cannot start yet is scheduled rather than refused. There is a limit on how many scheduled runs you can have at once. A scheduled run that waits 24 hours without starting ends on its own and the Backtick goes back to a draft, and get_backtest_status then says why. While a run is scheduled the Backtick cannot be edited; cancel the run first.

Running Backticks also counts as changes: a call that runs many Backticks spends more of the limit on changes than a single run. A repeat of the same request within 10 minutes returns the first answer. It needs Run Backticks.

Wait for Backticks wait_for_backtest

Holds the call open while queued or running Backticks finish, so the assistant does not have to keep asking. You do not ask for this tool by name: the assistant calls it right after run_backtest, with every Backtick it is waiting on in one call (up to 10 in a call), and tells you how each one ended.

One call waits for about 30 seconds, or about 10 seconds in apps that do not show progress while a tool runs. If a Backtick is still running when the time is up, the answer says wait again and the assistant calls it again with the same Backticks. When all of them have ended, the answer gives each one's outcome (completed, failed, cancelled, refused, not run, or not found) and, for a completed one, its name, period and headline metrics (a SweepTick has no metrics).

A Backtick with a scheduled run is not waited for, because the server starts it later: its row comes back at once with its place in line, the reason, and a number of seconds after which to call the tool again. Only one wait is held open at a time for your account, and tradeSteward also limits how many waits it holds open at once across all accounts. When it cannot hold one, the answer comes back at once with the current state, and the assistant checks get_backtest_status at the pace the answer gives instead. It needs View Backticks and results.

Backtick status get_backtest_status

The state of one Backtick and, while it is queued or running, how far along it is as a fraction of the run. Ask: "Is the condor Backtick done yet?" The assistant reads it no more than once every 15 seconds. For a scheduled run it shows the place in line and the reason it waits. For a draft or failed Backtick whose scheduled run ended without starting, it says how: refused, with the reason, or expired after 24 hours. It needs View Backticks and results.

Cancel Backtick run cancel_backtest

Stops a queued or running Backtick and puts it back to a draft, or ends a scheduled run before the server starts it. Ask: "Cancel that run." It is safe to repeat: cancelling a Backtick that is not running answers with its current state. It needs Cancel runs.

Filing, trashing and deleting

File Backtick set_backtest_library_status

Moves a Backtick between unsaved, Saved and Archived in your Backtick Library. An unsaved Backtick an assistant made appears on the API/MCP tab. Ask: "Save that Backtick" or "Archive the ones from last month." Saving is what keeps a Backtick an assistant made (see Where API runs appear). Moving a Backtick out of Saved ends any share of it with your group, and moving it back does not bring the share back; the answer says how many shares ended. The assistant can file up to 50 Backticks in one call, and the answer says for each one whether it moved, was already there, or was refused and why. A Backtick in the Trash is refused: restore it first. Safe to repeat. It needs Change library status.

Trash Backtick trash_backtest

Moves a Backtick to the Trash. Ask: "Trash the failed ones." It can be restored until the Trash is emptied, which happens 7 days after it arrives there. Trashing a saved Backtick ends its group shares, which restoring does not bring back. Safe to repeat. It needs Move to trash and restore.

Restore Backtick restore_backtest

Takes a Backtick out of the Trash and makes it unsaved again. Ask: "Bring back the Backtick I trashed this morning." The assistant finds trashed Backticks with list_backtests on the Trash section. A restored Backtick that an assistant made goes back on the API/MCP tab with a fresh 48 hours before it expires again. It needs Move to trash and restore.

Delete Backtick permanently purge_backtest

Permanently deletes a Backtick that is already in the Trash, with its positions and results. This cannot be undone. Ask: "Permanently delete everything in my Backtick trash." A Backtick that is not in the Trash is refused: trash it first. It needs Permanently delete Backticks, which is off by default when you connect an assistant, so turn it on deliberately if you want this.

Commission profiles

A commission profile is the set of fees a Backtick charges each trade: a commission per contract, optional per-leg minimums and maximums, order charges, assignment fees and free-premium rules. A Backtick names its profile in its settings. SPX is an index option, so SPX Backticks use the index rates. Profiles are archived, restored, copied and deleted on tradeSteward.

List commission profiles list_commission_profiles

Lists your commission profiles with their rates, the default first. The assistant uses it to find the profile id for a Backtick. Ask: "Which commission profiles do I have?" Archived profiles are left out unless asked for. It needs View Backticks and results.

Get commission profile get_commission_profile

Reads one profile, archived ones included, with how many of your Backticks use it and the version a change needs. It needs View Backticks and results.

Create commission profile create_commission_profile

Makes a new profile. Ask: "Make a commission profile that charges $0.87 a contract on SPX, then rerun my condor with it." A name and the equity and index per-contract rates are required; the rest are optional. Amounts are dollars with at most two decimals. A missing maximum means no maximum, and 0.00 makes that charge free. If the same request is repeated within 10 minutes, the first profile is returned again instead of a second one being made. It needs Create Backticks.

Update commission profile update_commission_profile

Changes a profile's name, rates or default status. A change applies to every later run of every Backtick that uses the profile, including runs that are queued or scheduled and have not started, while results already run keep their numbers. To compare against earlier results, make a new profile instead. The default can move to another profile but cannot be turned off. It needs Edit Backticks and positions.

Where API runs appear

  A Backtick made by an assistant is never created as saved. It moves to the Trash 48 hours after its last change unless you save it, and the Trash is emptied 7 days after that.

Backticks made through a connection are filed under the API/MCP tab of the Backtick Library, not under Unsaved, and their rows show when they expire. The 48-hour clock restarts with every change and every run; it pauses while the Backtick is queued or running, so a run is never trashed under the engine. To keep one, ask the assistant to save it (it uses set_backtest_library_status), or star it in the Library yourself; it then moves to the Saved tab and the clock stops. Your purge delay in Backtick User Settings does not apply to these Backticks. Purge API/MCP Now on the tab clears them on demand.

Their started, completed and failed notices can be silenced with the Backticks Run by API/MCP switch on the Notifications settings page. Backticks you run on the website still notify you.

Limits at a glance

WhatLimit
PlanBacktick Professional
Positions in one Backtick250
Changes in one update call50
Backticks in one run call50
Scheduled runsA scheduled run that waits 24 hours ends on its own
Backticks in one wait call10; one wait held open at a time for your account, and a limit on waits held open across all accounts
Status readsNo more than once every 15 seconds per Backtick
Unsaved Backtick made by a connectionTrashed 48 hours after its last change; Trash emptied after 7 days

Worked example: three deltas of a 45 DTE condor

You say: "Backtest a 45 DTE SPX iron condor over 2024 at three short deltas: 10, 15 and 20."

  1. The assistant reads get_backtick_capabilities to confirm SPX data covers 2024, and the settings dictionary so it writes the position correctly.
  2. create_backtest makes a draft named "SPX 45 DTE Iron Condor 2024" with the test period January 2 to December 31, 2024, your default starting balance and commission profile, and one position: the condor at a 10 delta short strike on each side.
  3. update_backtest sends one call with two changes: add the same condor at 15 delta, and add it again at 20 delta. Both are saved together. The answer gives the next edit version and the two new positions.
  4. run_backtest starts the Backtick. The answer says queued.
  5. wait_for_backtest holds for about 30 seconds and comes back with wait again; the assistant calls it once more and gets completed with the headline numbers: total profit, total return, max drawdown and win rate.
  6. The assistant reads the results position by position (see Backtick Results, Charts and Portfolio Links) and tells you which delta did best and by how much, with a link to the results page on tradeSteward.

The Backtick is now in the API/MCP tab of your Library. If you want to keep it, say "Save it", and the assistant files it under Saved.