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.
Overview
Modifiers create synthetic variations of a base ticker without 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.
Paste a testfol.io expression into the import bar in the modifier modal, and ArthaPilot parses it and fills the matching fields automatically (mapping ticker names where needed).
You configure modifiers per-ticker via the modification icon next to the ticker input.

Expression Syntax
A modifier expression follows the pattern TICKER?KEY=VALUE&KEY=VALUE. For example, SPY?L=2&E=0.9 applies 2x daily leverage and a 0.9% expense ratio to SPY.
For leverage modifiers, financing uses a collateral-netting model: long leverage pays the financing rate on borrowed capital, while inverse and sub-1x exposure earn the financing rate on cash collateral. SW controls swap notional for the spread term; it is not the financing rate itself.
- 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.

Modifier Reference
All available modifier keys, grouped by category:
| Key | Name | Description |
|---|---|---|
L | Leverage | Daily-rebalanced leverage factor (e.g. 2 for 2x) |
SW | Swap Exposure | Swap notional used for the spread term of leverage financing |
SP | Swap Spread | Spread over risk-free rate for leverage financing |
E | Expense Ratio | Annual expense ratio subtracted daily (e.g. 0.9 = 0.9%) |
UE | Undo Expense | Add back an embedded expense ratio before other transforms |
FB | Fill-Backward | Extend history by splicing another ticker's data before inception (accepts nested expression) |
FBE | Fill-Backward Expense | Expense adjustment applied only to the fill-backward portion |
UR | Return Target | Scale returns to achieve a target annualized CAGR |
UV | Volatility Target | Scale returns to achieve a target annualized volatility |
UC | Correlation Target | Adjust returns to target correlation with the base series (requires seed) |
DB | De-Beta | Target beta relative to a reference ticker |
DBREF | De-Beta Reference | Reference ticker for de-beta (accepts nested expression) |
CU | Cap Up | Maximum daily return (e.g. 0.05 = +5% cap) |
CL | Cap Low | Minimum daily return (e.g. -0.05 = -5% floor) |
SD | Seed | Random seed for reproducible stochastic transforms |
BK | Block Size | Number of trading days per shuffle block |
BL | Block Low | Minimum random block size |
BH | Block High | Maximum random block size |
BR | Block Replacement | Sample blocks with replacement (1) or without (0) |
BO | Block Overlap | Allow overlapping blocks (1) or not (0) |
BREF | Block Reference | Shuffle 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:
- FB / FBE: fill-backward history extension (applied first so all subsequent transforms operate on the full extended series)
- UE: undo embedded expense (restores gross-of-fee returns before applying custom costs)
- BK / BL / BH / BR / BO: shuffle blocks (randomizes return order while preserving terminal value)
- UC: correlation targeting (adjusts returns to hit a target correlation)
- UR / UV: return and volatility targets
- DB / DBREF: de-beta adjustment
- CU / CL: daily return caps
- L / SW / SP: leverage with financing costs (applied late so it leverages the already-transformed series)
- 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.

Examples
SPY?L=2&E=0.9: 2x daily-leveraged SPY with 0.9% annual expense ratioVTI?FB=(VTI.SIM): VTI with history extended backward using VTI.SIM dataQQQ?UR=0.10&UV=0.15: QQQ scaled to 10% CAGR and 15% annualized volatilitySPY?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)