Skip to main content

Strategy Activation

Strategy Activation is a pre-execution gate that determines whether incoming events actually reach your strategy. While enabling and disabling controls whether events are routed to your strategy at all, activation controls what happens after routing but before execution — giving you fine-grained control over when your strategy is "on duty."

Activation vs. Enable/Disable

Enable/Disable is a hard switch — when disabled, no events reach the strategy and its state resets on re-enable. Activation is a soft filter — events still arrive, but your activation rules decide which ones get processed. Skipped events are silently dropped with no state change. The strategy stays enabled and retains its current state.

Activation Modes

Every strategy has one of three activation modes:

ModeBehavior
Always ActiveEvery incoming event is processed. This is the default.
Only When Rules MatchEvents are admitted only when at least one activation rule passes. Think of rules as admission gates.
Inactive When Rules MatchEvents are skipped when any activation rule matches. Think of rules as blackout windows.

Choosing a Mode

  • Use Always Active when your conditions and transitions already handle all the timing logic you need.
  • Use Only When Rules Match when you want to restrict processing to specific windows — for example, "only during NYSE Regular Hours."
  • Use Inactive When Rules Match when you want to block specific periods — for example, "skip after-hours data."

Opening the Activation Manager

  1. In SMITH, open the Strategy Toolbar (gear icon in the header).
  2. Look for the Runtime section.
  3. Click Manage Strategy Activation.

The Activation Manager panel shows the current mode, all configured rules, and any lint warnings.

Rule Types

Each activation rule defines a time window or condition. You can add multiple rules — in Only When mode, any passing rule admits the event; in Inactive When mode, any matching rule blocks it.

Session Window

Tie activation to a named market session. Pick from 13 built-in market sessions covering major global exchanges and forex sessions.

After selecting a session, choose a sub-window preset:

PresetWhat It Does
Entire sessionThe full session from open to close.
First N minutes after openOnly the first N minutes of the session. For example, "First 30 minutes of NYSE" = 9:30 AM – 10:00 AM ET.
Last N minutes before closeOnly the final N minutes of the session. For example, "Last 15 minutes of NYSE" = 3:45 PM – 4:00 PM ET.
Custom offsetsSpecify exact offsets from session open and close. Positive values count from the open; negative values count backward from the close.

Examples:

  • "Only process events during NYSE Regular Hours" → Session Window, NYSE Regular Hours, Entire session.
  • "Only the first 30 minutes after the NYSE opens" → Session Window, NYSE Regular Hours, First 30 minutes after open.
  • "Only the last 15 minutes before NYSE close" → Session Window, NYSE Regular Hours, Last 15 minutes before close.

Local Time Range

Define a time window based on clock time in a chosen timezone, optionally restricted to specific days of the week.

FieldWhat It Controls
TimezoneThe IANA timezone for interpreting the time range (e.g., America/New_York, Europe/London).
Start timeThe start of the window as a time of day.
End timeThe end of the window as a time of day. If end is earlier than start, the window wraps past midnight.
WeekdaysOptional — restrict to specific days (Monday through Sunday). If none selected, all days apply.

Examples:

  • "Active from 8:00 AM to 4:00 PM New York time on weekdays" → Local Time Range, America/New_York, 08:00–16:00, Mon–Fri.
  • "Blackout overnight Tokyo" → Local Time Range, Asia/Tokyo, 15:00–09:00 (overnight wrap), all days.

Clock Match

Match one exact minute of the day in a chosen timezone. Useful for strategies that should only process one event at a precise time.

FieldWhat It Controls
TimezoneThe IANA timezone for interpretation.
TimeThe exact minute to match (e.g., 09:30 in America/New_York).

Advanced

Use the full condition language — the same ALL/ANY condition groups available in guards — as a pre-execution gate. This gives you access to any operand source (event fields, indicators, context variables, time fields) for activation logic that goes beyond time windows.

When to use Advanced: When your activation logic depends on data values rather than clock time — for example, "only process events when volume exceeds a threshold" or "only when RSI is below 50."

Managing Rules

In the Activation Manager:

  • Add a rule — click the add button, select a rule type, and configure the parameters.
  • Edit a rule — click an existing rule to modify its settings.
  • Delete a rule — remove a rule you no longer need.

Rules are evaluated in order. In Only When mode, processing stops at the first passing rule (short-circuit). In Inactive When mode, processing stops at the first matching rule.

Activation Linting

FORJ automatically checks your activation rules for common policy mistakes and surfaces warnings in the Strategy Toolbar and the Activation Manager.

WarningWhat It Means
Duplicate ruleTwo or more rules are exact copies. Remove the duplicates.
Redundant ruleOne session window rule is entirely contained within another (e.g., "First 30 minutes of NYSE" is redundant if "Entire NYSE" also exists).
Overlapping session windowsTwo session window rules overlap in time. Under any-match semantics this doesn't change behavior, but it makes the policy harder to reason about.
Full-session-equivalentMultiple rules together cover the entire session. In Inactive When mode, this effectively blacks out the whole session.

Lint warnings appear as a badge count in the Strategy Toolbar's Runtime section. Open the Activation Manager to see the full warning details.

How Skipped Events Are Handled

When an event fails the activation gate:

  • The event is dropped — no strategy work occurs, no transitions fire, no actions execute.
  • The skip is logged with the activation mode, which rule matched (or that none matched), and a human-readable summary.
  • The strategy's current state is preserved — unlike disabling, activation skips do not reset the strategy.

Activation in the Strategy Toolbar

The Runtime section of the Strategy Toolbar shows:

  • The current activation mode (e.g., "Always Active" or "Only When — 2 rules").
  • A human-readable summary of the activation configuration.
  • A lint warning badge if any policy issues are detected.

Combining Activation with Time Conditions

Activation and time-based conditions serve different purposes:

FeatureWhen It RunsWhat It Controls
Strategy ActivationBefore strategy evaluationWhether the event is processed at all
Time ConditionsInside strategy evaluationWhether a specific transition fires (alongside other condition logic)

Use activation for broad scheduling (e.g., "only during market hours") and time conditions for transition-level logic (e.g., "only take entries after 10:00 AM").

What's Next