Strategy Blocks Reference
Strategy blocks control how your strategy runs — the configuration, timing, entry/exit logic, and portfolio operations. Unlike indicators (which return numbers), strategy blocks perform actions or define conditions.
Configuration
Config Block
Defines all strategy-wide settings. Every workspace must contain exactly one Config block.
Parameter |
Default |
Description |
|---|---|---|
Start Date |
|
First date to include in the backtest. |
End Date |
|
Last date of the test period. |
Starting Cash |
|
Initial portfolio value in USD. |
Slots |
|
Maximum number of open positions at any one time. |
Data Index |
|
Benchmark index used by Index Value blocks (NASDAQ or SPY). |
Stop Loss ⚙ |
|
Percentage loss at which a position is automatically closed (e.g. |
Take Profit ⚙ |
|
Percentage gain at which a position is automatically closed. |
Primary Interval ⚙ |
|
Interval for the main rebalancing loop (e.g. |
Secondary Interval ⚙ |
|
Interval for secondary logic block. |
Tertiary Interval ⚙ |
|
Interval for tertiary logic block. |
Quaternary Interval ⚙ |
|
Interval for fourth logic block. |
Optimizer |
Off |
Enable to activate multi-value testing. Fields marked ⚙ accept comma-separated values. |
Interval format: Nd (N trading days), Nw (N weeks), Nm (N months).
Tip
Enable Optimizer and enter comma-separated values (e.g. 0.03, 0.05, 0.10 for Stop Loss)
to automatically run all combinations and return the best-performing parameters.
Interval Checks
On Interval
Wraps a block of logic that should run only on a specific interval boundary — e.g. every 2 weeks, every month. The four available intervals map directly to the Config block’s interval settings.
Field |
Description |
|---|---|
Interval |
Which Config interval to check: Primary / Secondary / Tertiary / Quaternary. |
Do (nested blocks) |
Blocks placed inside here execute only when the interval fires. |
How it works: The engine checks whether the current trading day marks the start of a new interval period. If yes, the nested blocks execute. If not, they are skipped.
Example: Set Primary Interval to 2w and place a rebalance block inside — the portfolio rebalances every two weeks.
Note
Multiple interval blocks can exist in one workspace. Use Primary for rebalancing and Secondary for daily checks (e.g. stop-loss management).
Triggers
Check Stop Loss
Evaluates all open positions and closes any that have fallen by the stop-loss percentage defined in the Config block.
Field |
Description |
|---|---|
Execution |
|
Warning
Place this block inside a daily interval (Secondary Interval = 1d) to check stop-losses every trading day.
If you only check weekly, a position could fall far beyond the stop level before being closed.
Check Take Profit
Evaluates all open positions and closes any that have risen by the take-profit percentage defined in the Config block.
Field |
Description |
|---|---|
Execution |
|
Portfolio
Rebalance: Enter
Enters positions for a list of selected symbols, filling available slots up to the Slots limit.
Positions are sized equally by default (1 / slots).
Field |
Default |
Description |
|---|---|---|
Open Reason |
|
Label recorded in the trade log for this entry. |
Execution |
|
|
Entry Type |
|
|
Limit Offset % |
|
Only for Next-Week Limit: order placed this many % below the current close. |
Selected (input) |
— |
Symbol list from a ranking/filter block (e.g. Momentum, Rank by Volatility (HV252)). |
Note
If fewer symbols are selected than available slots, remaining slots stay in cash.
Rebalance: Exit
Closes positions for a list of symbols. Use this to liquidate stocks that no longer meet your selection criteria.
Field |
Description |
|---|---|
Execution |
|
Selected (input) |
Symbol list of positions to exit. |
Typical pattern: On each rebalancing day, call Exit with the old list, then Enter with the new ranked list.
Enter Next-Week Limit Orders
Schedules limit-buy orders for the following trading week at a discounted price. The orders are stored internally and evaluated each day until filled or cancelled.
Field |
Default |
Description |
|---|---|---|
Symbols (input) |
— |
List of symbols to schedule. |
Discount % ⚙ |
|
Limit price = setup-week close × (1 − discount/100). |
How it works:
On the rebalancing day the block records
limit_price = close × (1 − z%)for each symbol.Each subsequent day the engine checks: if
day_low ≤ limit_price, the position is entered.Unexecuted orders are cancelled at the next rebalance.
Tip
Pair with Execute Limit Orders placed inside the daily (Secondary Interval) block.
Execute Limit Orders
Checks all pending limit orders each day and fills any where the intra-day low reached the limit price.
This block takes no parameters — place it inside a daily interval check.
Fill condition: Low ≤ limit_price → enter at limit_price.
Filters & Ranking
Rank by Volatility (HV252)
Sorts a symbol list by their 252-day annualised historical volatility.
Field |
Default |
Description |
|---|---|---|
Symbols (input) |
— |
Input symbol list (e.g. from a Momentum block). |
Order |
Low→High |
|
Top K |
|
Return only the top K symbols. |
Formula: HV252 = StdDev(daily returns, 252) × √252
Note
Low volatility strategies (Low→High order) tend to produce better risk-adjusted returns. This is known as the Low Volatility Anomaly.
Stock Cooldown Filter
Removes stocks that were stopped out within the last N trading days. Prevents re-entering a position that just triggered a stop-loss.
Field |
Default |
Description |
|---|---|---|
Symbols (input) |
— |
Input list to filter. |
Cooldown Days |
|
Minimum days since the last stop-out before a symbol is eligible again. |
Logic & Conditions
IF Block (Condition)
Executes the nested blocks only when a condition is true. The condition is built by connecting comparison blocks to the Condition input.
Field |
Description |
|---|---|
Condition (input) |
A boolean expression built from comparison blocks. |
Do (nested) |
Blocks to execute when the condition is met. |
Example condition tree:
RSI(14) > Threshold(30) AND Index Value > SMA(200)
Both sub-conditions must be true for the nested blocks to execute.
Tip
Nest multiple IF blocks to build complex multi-condition entry logic.
Comparison Block
Compares two values and returns true or false.
Operator |
Meaning |
|---|---|
|
Equal to |
|
Not equal to |
|
Less than |
|
Less than or equal to |
|
Greater than |
|
Greater than or equal to |
Connect an indicator to the A slot, choose an operator, and connect a Threshold Value to the B slot.
AND / OR Block
Combines two boolean conditions.
AND — both must be true.
OR — at least one must be true.
Chain multiple AND/OR blocks to express complex rules:
(RSI > 30) AND (MACD > 0) AND (Index > SMA200)
NOT Block
Inverts a boolean condition. NOT (RSI > 70) is equivalent to RSI ≤ 70.
Processing
Trading Loop
The main outer loop that iterates through every trading day in the backtest period. All interval checks and portfolio operations must be nested inside this block.
This block takes no configuration parameters — it simply wraps the rest of your strategy.
Warning
Every workspace needs exactly one Trading Loop block. All other strategy blocks (Interval Checks, IF blocks, Portfolio operations) must be nested inside it.
Typical workspace structure:
[Config Block]
[Trading Loop]
└── [On Interval — Primary (2w)]
│ └── [IF Block: Index > SMA(200)]
│ └── [Rank by Momentum → Rebalance: Enter]
│ └── [Rebalance: Exit]
└── [On Interval — Secondary (1d)]
└── [Check Stop Loss (eod)]
└── [Execute Limit Orders]