← Back to Documentation

Ticker Modifiers & Research Tickers

Ticker modifiers let you apply mathematical transforms to a ticker's daily returns before backtesting. They use testfol.io-compatible expression syntax, so you can import expressions directly from testfol.io or share them with other tools.

Access: Sign in required to save research tickers. Free includes 5 research tickers; Pro is unlimited.

Overview

Modifiers are used to create synthetic variations of a base ticker without needing a separate data source for each scenario. For example, you can model questions like "What if SPY had 0.9% annual expenses?" or "What if I applied 2x leverage to VTI?" The transforms are applied before the backtest engine runs, so all downstream modeling (e.g. tax calculations) uses the modified returns.

Expressions are fully compatible with testfol.io. You can paste a testfol.io expression into the import bar in the modifier modal, and ArthaPilot will parse it and populate the corresponding fields automatically (with ticker name mapping where needed).

You configure modifiers per-ticker via the modification icon next to the ticker input.

Button to open the modifier modal, located next to ticker input

Button to open the modifier modal, located next to ticker input.

Expression Syntax

A modifier expression follows the pattern TICKER?KEY=VALUE&KEY=VALUE. For example, SPY?L=2&E=0.009 applies 2x daily leverage and a 0.9% expense ratio to SPY.

  • Base ticker: any supported ticker symbol (e.g. SPY, VTI.SIM, UPRO)
  • Parameters: key=value pairs joined by &, appended after ?
  • Nested expressions: some parameters accept a ticker expression as their value, wrapped in parentheses. For example, SPY?FB=(VTI.SIM) fills backward using VTI.SIM data

You can copy a ticker expression by clicking on the chip next to the ticker symbol.

Click on the modification chip to copy the ticker expression

Click on the modification chip to copy the ticker expression.

Modifier Reference

All available modifier keys, grouped by category:

KeyNameDescription
LLeverageDaily-rebalanced leverage factor (e.g. 2 for 2x)
SWSwap RateAnnual financing cost for leverage (default: risk-free rate)
SPSwap SpreadSpread over risk-free rate for leverage financing
EExpense RatioAnnual expense ratio subtracted daily (e.g. 0.009 = 0.9%)
UEUndo ExpenseAdd back an embedded expense ratio before other transforms
FBFill-BackwardExtend history by splicing another ticker's data before inception (accepts nested expression)
FBEFill-Backward ExpenseExpense adjustment applied only to the fill-backward portion
URReturn TargetScale returns to achieve a target annualized CAGR
UVVolatility TargetScale returns to achieve a target annualized volatility
UCCorrelation TargetAdjust returns to target correlation with the base series (requires seed)
DBDe-BetaTarget beta relative to a reference ticker
DBREFDe-Beta ReferenceReference ticker for de-beta (accepts nested expression)
CUCap UpMaximum daily return (e.g. 0.05 = +5% cap)
CLCap LowMinimum daily return (e.g. -0.05 = -5% floor)
SDSeedRandom seed for reproducible stochastic transforms
BKBlock SizeNumber of trading days per shuffle block
BLBlock LowMinimum random block size
BHBlock HighMaximum random block size
BRBlock ReplacementSample blocks with replacement (1) or without (0)
BOBlock OverlapAllow overlapping blocks (1) or not (0)
BREFBlock ReferenceShuffle using another ticker's return blocks (accepts nested expression)

Application Order

Modifiers are applied in a fixed canonical order, regardless of the order they appear in the expression. This ensures consistent results:

  1. FB / FBE: fill-backward history extension (applied first so all subsequent transforms operate on the full extended series)
  2. UE: undo embedded expense (restores gross-of-fee returns before applying custom costs)
  3. BK / BL / BH / BR / BO: shuffle blocks (randomizes return order while preserving terminal value)
  4. UC: correlation targeting (adjusts returns to hit a target correlation)
  5. UR / UV: return and volatility targets
  6. DB / DBREF: de-beta adjustment
  7. CU / CL: daily return caps
  8. L / SW / SP: leverage with financing costs (applied late so it leverages the already-transformed series)
  9. E: expense ratio subtraction (applied last so costs reflect the final leveraged series)

Bond Tickers

Synthetic bond tickers use the B! prefix with yield-curve and maturity parameters. For example, B!Y=0.04&M=10 creates a 10-year bond at a flat 4% yield.

  • Y: flat yield (cannot combine with YL/YH)
  • YL / YH: yield curve low/high for curve-aware mode
  • M: target maturity in years (required)
  • C: coupon type: "C" for coupon-bearing, "Z" for zero-coupon
  • E: expense ratio on the synthetic bond

Research Tickers

You can save any modifier expression as a reusable research ticker. In the modifier modal, configure your desired transforms, then click “Save Ticker” and give it a name. Research tickers appear in autocomplete suggestions and can be used anywhere a regular ticker is accepted.

You can also create research tickers backed by a saved portfolio or strategy from Workspace. These resolve to the portfolio or strategy return series over the requested date range.

Save a modified ticker as a research ticker for reuse

Save a modified ticker as a research ticker from the modification modal.

Examples

  • SPY?L=2&E=0.009: 2x daily-leveraged SPY with 0.9% annual expense ratio
  • VTI?FB=(VTI.SIM): VTI with history extended backward using VTI.SIM data
  • QQQ?UR=0.10&UV=0.15: QQQ scaled to 10% CAGR and 15% annualized volatility
  • SPY?CU=0.05&CL=-0.05: SPY with daily returns capped at +/-5%
  • SPY?SD=42&BK=21: SPY with 21-day return blocks shuffled (seed 42 for reproducibility)
  • SPY?DB=0&DBREF=(AGG): SPY de-betaed to zero against AGG (market-neutral)