Skip to main content

Overview

This page documents 3 operators (role: various).

LLMScorer

Generate trading signals from numeric indicators using an LLM. Feeds one or more numeric indicators (e.g., RSI, MACD, sentiment) into an LLM and returns a trading signal in the range [-1, 1]. This operator is a pure scorer — it has no access to tools or external APIs. If you need web search data, pipe WebSearchOperator output through SentimentParser first and feed the result here. LLM calls are routed through BlackboxAI and require a BLACKBOX_API_KEY environment variable. Duplicate prompts across symbols are deduplicated so the LLM is called only once per unique prompt. A configurable call_interval lets you skip LLM calls on intermediate ticks and reuse the most recent cached scores. Role: UNKNOWN | Ephemeral: Yes

Parameters

Usage

Source: apps/trading/operators/semantic/llm_scorer.py

SentimentParser

Parse text input and output sentiment scores. Converts text (e.g., from WebSearchOperator) into numeric sentiment scores in the range [-1, 1] using either an LLM or a rule-based keyword matcher. LLM-based analysis routes through BlackboxAI and requires a BLACKBOX_API_KEY environment variable. Rule-based mode (“rule-based”) uses local keyword matching with no API calls. Duplicate input texts are deduplicated so that the LLM is called only once per unique text. Role: UNKNOWN | Ephemeral: Yes

Parameters

Usage

Source: apps/trading/operators/semantic/sentiment.py

WebSearchOperator

Collect web search results as a Tagged Tensor. Executes web searches via the WebSearchClient and returns results as a Tagged Tensor whose value is 1.0 when results are found and 0.0 otherwise. Requires a BLACKBOX_API_KEY environment variable. Supports per-symbol queries (use {symbol} in query_template), aggregated multi-symbol queries, and single global queries. An optional gate input can suppress searches when its value is below 0.5. Results may be cached to reduce API calls. The output is ephemeral and cannot be referenced with lookback above 1. Role: UNKNOWN | Ephemeral: Yes

Parameters

Usage

Source: apps/trading/operators/semantic/websearch.py

Operator Protocol

How operators implement the compute() interface

StatefulGraph

How operators compose into a DAG