AI Agents for Finance Series — Part 4 of 5

Trading Agents — From Signals to Execution

How trading agents generate signals from multi-dimensional data, assess risk before every trade, execute with human-in-the-loop approval gates, and learn from systematic retrospectives. Real examples from the DailyTickers scanner pipeline.

Signal Generation Risk Assessment Execution Human-in-the-Loop
AI Agents for Finance4/5
Signal GenerationDecision FrameworkRisk AssessmentExecutionHuman-in-the-LoopBacktesting AgentsReal ExamplesKey Takeaways
Finding Opportunities

Signal Generation: Multi-Dimensional Filtering

A trading agent does not look at a single indicator and decide to buy. It synthesizes signals across three dimensions — technical, fundamental, and sentiment — and only generates a trade idea when multiple dimensions confirm the same thesis. This is confluence-based trading, and agents excel at it because they can process dozens of signals simultaneously.

The Signal Cascade

Signal Generation Pipeline
// Stage 1: Technical Signals (binary flags)
tech_signals = {
  rsi_oversold:     RSI(14) < 35,           // Oversold bounce
  macd_bullish:     MACD > Signal,           // Momentum shift
  above_ema50:      Price > EMA(50),         // Trend intact
  volume_confirm:   Volume > 1.2 * Avg(20),  // Participation
  near_support:     Price within 3% of S1,    // Risk defined
  breakout:         Price > 52W_High * 0.97  // Near breakout
}

// Stage 2: Fundamental Filters (pass/fail)
fund_filters = {
  pe_reasonable:    PE < Sector_Avg * 1.5,
  earnings_beat:    Last_3Q_Surprise > 0,
  revenue_growth:   Rev_YoY > 5%,
  margin_stable:    Gross_Margin_Change > -2%
}

// Stage 3: Sentiment Confirmation
sent_signals = {
  analyst_buy:      Buy_Rating% > 60,
  insider_neutral:  No_Large_Selling_90d,
  short_low:        Short_Interest < 5%,
  news_positive:    News_Tone_Score > 0.5
}

// Stage 4: Confluence Score
confluence = count(tech_signals == true)
           + count(fund_filters == true)
           + count(sent_signals == true)

// Minimum 7/14 for consideration, 10/14 for A+ setup
if confluence >= 10: grade = "A+"
elif confluence >= 8: grade = "A"
elif confluence >= 7: grade = "B+"
else: REJECT

Why Confluence Matters

Any single indicator can give false signals. RSI oversold can stay oversold for weeks in a downtrend. MACD crossovers lag in choppy markets. Analyst upgrades can be stale. But when RSI is oversold AND price is at support AND volume is picking up AND fundamentals are solid AND analysts are bullish — the probability of a successful trade increases dramatically. The trading agent's job is to find these confluence points where multiple independent signals align.

Making the Call

Decision Framework: Scoring Matrix

Once signals are generated, the trading agent applies a structured decision framework to convert signals into actionable trade ideas. This framework encodes the trading strategy's rules in a way that is consistent, auditable, and improvable.

The Strategy Matrix

The DailyTickers scanner agent runs multiple strategies simultaneously, each optimized for a different market regime:

Strategy Regime Entry Signal Historical Hit Rate Avg R/R
Momentum Breakout Risk-On, Trending Price > 52W high, volume surge, RS > 80 68% 2.1:1
Oversold Bounce Risk-On, Mean-Revert RSI < 30, at support, volume drying up 54% 1.8:1
Earnings Drift Any Beat > 10%, gap up, held gains 3 days 62% 1.5:1
Insider Buy Any Cluster buy > $1M, non-routine, near lows 71% 2.5:1
Risk-Off Hedge Risk-Off, Early Risk-Off VIX > 25, GLD/TLT breakout, inverse ETFs 58% 1.4:1
Strategy Weighting (Regime-Adaptive)
Weight = Base_Hit_Rate × Regime_Multiplier × Retro_Adjustment

The key innovation is the retrospective adjustment factor. After each weekly retrospective, strategy weights are updated based on actual performance. If momentum breakouts have underperformed for 3 consecutive weeks, their weight decreases. If insider buys have overperformed, their weight increases. This creates a learning loop that continuously improves the trading agent's selection quality.

Before Every Trade

Pre-Trade Risk Assessment

No trade idea reaches publication without passing a comprehensive risk assessment. The trading agent evaluates risk at three levels: individual trade risk, portfolio risk, and systemic risk.

Trade-Level Risk

Stop loss distance, position size, max loss $, R/R ratio. Every trade must have R/R > 1.5:1 and max loss < 2% of portfolio.

Portfolio-Level Risk

Sector concentration, correlation with existing positions, total exposure, beta-weighted delta. No more than 30% in any single sector.

Systemic Risk

Market regime (risk-on/off), VIX level, upcoming macro events (FOMC, CPI), earnings blackout periods. Reduce size in high-VIX environments.

Pre-Trade Risk Checklist (Agent Logic)
function preTradeRiskCheck(trade, portfolio, market) {
  const checks = [];

  // 1. R/R minimum
  if (trade.rr < 1.5) checks.push("FAIL: R/R below 1.5");

  // 2. Stop loss defined
  if (!trade.stopLoss) checks.push("FAIL: No stop loss");

  // 3. Position size limit
  const maxLoss = (trade.entry - trade.stopLoss) * trade.shares;
  if (maxLoss > portfolio.value * 0.02)
    checks.push("FAIL: Max loss > 2% portfolio");

  // 4. Sector concentration
  const sectorExposure = portfolio.sectorWeight(trade.sector);
  if (sectorExposure + trade.weight > 0.30)
    checks.push("WARN: Sector > 30%");

  // 5. Correlation check
  const maxCorr = portfolio.maxCorrelation(trade.ticker);
  if (maxCorr > 0.8)
    checks.push("WARN: High correlation with existing position");

  // 6. Spot price validation (P0 check)
  const spot = mcp.queryData("quote", trade.ticker).price;
  if (Math.abs(trade.entry - spot) / spot > 0.10)
    checks.push("FAIL: Entry > 10% from spot");

  // 7. Event risk
  if (trade.daysToEarnings < 5)
    checks.push("WARN: Earnings in < 5 days");

  // 8. Regime check
  if (market.regime === "Risk-Off" && trade.direction === "long"
      && trade.sector !== "defensive")
    checks.push("WARN: Long growth in Risk-Off regime");

  return {
    passed: checks.filter(c => c.startsWith("FAIL")).length === 0,
    warnings: checks.filter(c => c.startsWith("WARN")),
    failures: checks.filter(c => c.startsWith("FAIL"))
  };
}
Pulling the Trigger

Execution: Order Management & Monitoring

In the current DailyTickers system, the trading agent generates trade ideas, not live orders. This is the most common and safest approach for agent-assisted trading: the agent does the analysis and presents recommendations, while the human makes the final execution decision.

Execution Tiers: From Advisory to Autonomous

Tier Agent Role Human Role Risk Level Status (2026)
Tier 1: Advisory Generate ideas, publish reports Review, decide, execute manually Lowest Production (DailyTickers)
Tier 2: Assisted Generate ideas + pre-fill order tickets Review and approve with one click Low Early adoption
Tier 3: Semi-Auto Execute trades, human approves exceptions Monitor, override on alerts Medium Institutional pilots
Tier 4: Autonomous Full execution with risk limits Set parameters, review P&L Highest Experimental (quant funds)

The Autonomy Spectrum

There is a strong temptation to move directly to Tier 4. Resist it. Even the most sophisticated hedge funds run Tier 3 at most, with human override for anything above predefined thresholds. The reason is simple: tail risks. An agent optimized for normal market conditions can catastrophically fail during a flash crash, a liquidity crisis, or a Black Swan event. Humans bring judgment about unprecedented situations that agents cannot learn from historical data.

The Monitor-Manage-Adapt Loop

Once a trade idea is published, the trading agent's job is not done. In a production system, the agent continuously monitors:

Price Action

Is the stock moving toward TP1/TP2 or toward the stop? Are new support/resistance levels forming?

News Flow

Has a material event occurred since the trade idea was published? Earnings surprise? Analyst action? M&A rumor?

Regime Shifts

Has the market regime changed? A shift from Risk-On to Risk-Off invalidates most long setups immediately.

Alert Escalation

When conditions change materially, escalate to the human: "NVDA approaching stop loss, consider reducing position."

The Safety Net

Human-in-the-Loop: Approval Gates

The most important architectural decision in any trading agent is where to place the human approval gates. Too many gates and the agent becomes a glorified calculator. Too few and you risk the Terraform scenario — autonomous action with catastrophic consequences.

The Approval Gate Architecture

Data Collection
Auto-approved. Fetching market data has no side effects. Let the agent collect freely.
Analysis & Scoring
Auto-approved. Reasoning about data is safe. The agent scores and ranks freely.
Report Generation
Auto-approved. Writing HTML files to the repository is reversible via git. Low risk.
Publication (git push)
Conditional. Auto-approved if file > 10KB and add_card.js succeeded. Otherwise, human review.
Trade Execution
Always requires human approval. No agent should autonomously risk real capital without explicit confirmation.
Destructive Operations
File deletion, force push, account changes — always blocked without explicit human request.

The Reversibility Principle

The approval gate decision should be based on reversibility. Can the action be undone? Writing a file is reversible (git revert). Publishing a report is mostly reversible (delete and redeploy). Executing a trade is not reversible — once filled, you own the position and any associated losses. The less reversible the action, the more human oversight it requires.

Proving the System

Backtesting Agents: Validating Before Deploying

Before any trading strategy goes live, it must be backtested. Agent-based backtesting goes beyond traditional backtesters because the agent can replay its own decision process against historical data, testing not just the signals but the full reasoning chain.

The Retrospective Learning Loop

The DailyTickers scanner uses a production-grade learning loop that is conceptually identical to backtesting but runs on live data:

1

Scanner Runs Daily

Produces 10 A+ setups with entry, stop, TP1, TP2 levels. Published to the website. This is the "forward test."

2

Retrospective Weekly

Fetches current prices for all tickers from past 10 days. Calculates TP1 hit rate, TP2 hit rate, stop rate, P&L.

3

Performance Analysis

Breaks down results by strategy type. Momentum: 68% HR. Oversold: 54% HR. Identifies top/flop picks.

4

Weight Adjustment

Strategies that underperform get lower weights. Sectors with false signals get stricter filters. Stops calibrated to ATR.

5

Next Scanner Adapts

The next scanner run reads all retrospectives and applies the cumulative learnings. The system improves with each cycle.

Forward Testing vs. Backtesting

Backtesting tells you how a strategy would have performed. Forward testing (paper trading, retrospectives on live calls) tells you how it actually performs. The DailyTickers retrospective loop is a forward test: the scanner makes real-time calls, and the retrospective measures real outcomes. This is more reliable than backtesting because it includes all the real-world factors that backtests miss: slippage, data delays, regime shifts, and the agent's actual reasoning quality.

In Production

Real Examples: The DailyTickers Agent Fleet

The DailyTickers system runs four distinct agent types in production, each serving a different function in the trading intelligence pipeline.

Agent 1: Morning Briefing Agent (7:00 AM daily)

Mission

Provide a comprehensive market overview for the day ahead. Cover US, Europe, Asia-Pacific, crypto, and macro events.

Data Sources

MCP GetMarketOverview, QueryData for 16+ tickers, WebSearch for calendar and news. 3-5 tool calls total.

Output

50-70KB HTML report with dashboards, trade ideas, formation du jour, calendar grid. Published and indexed automatically.

Execution Time

8-12 minutes end-to-end. Zero human intervention. Bot triggers via Discord schedule, agent runs in tmux session.

Agent 2: Scanner Agent (11:00 PM weekdays)

The most complex agent in the fleet. It reads past retrospectives, runs multiple screening strategies, validates against spot prices, and produces diversified trade ideas.

Scanner Agent Decision Flow
// 1. Read retrospective history (learning loop)
retros = readAll("scanner/retrospective/*/index.html")
learnings = extractLearnings(retros)
→ "Momentum: 68% HR, Oversold: 54% HR, Energy: false signals"

// 2. Read previous scan (anti-doublon)
prevScan = readLatest("scanner/*/index.html")
prevTickers = extract10Tickers(prevScan)
→ Must have min 70% new tickers

// 3. Run screeners (parallel fan-out)
candidates = [
  RunAutoScreener(),           → regime + auto candidates
  RunScreener("oversold"),     → oversold bounce
  RunScreener("momentum"),    → momentum breakout
  RunScreener("breakout"),    → technical breakout
  RunScreener("EU symbols"),  → European stocks
  RunScreener("APAC"),        → Asia-Pacific
  RunScreener("ETFs")         → Sector/thematic ETFs
]

// 4. Validate all candidates (P0 check)
validated = candidates.filter(c => {
  spot = QueryData("quote", c.ticker).price
  return Math.abs(c.entry - spot) / spot < 0.10
})

// 5. Select final 10 with diversification
final = selectTop10(validated, {
  minUS: 5, minEU: 2, minAPAC: 1, minETF: 2,
  strategyWeights: learnings.strategyWeights,
  excluded: prevTickers.slice(0, 3) // anti-doublon
})

Agent 3: Retrospective Agent (Fridays 11:00 PM)

Evaluates all scanner calls from the past 10 days, grades the system, and feeds learnings back into the scanner. This is the agent that closes the learning loop.

Agent 4: Analysis Agent (On Demand)

Deep-dive analysis of any ticker. The most data-intensive agent, collecting 15+ data types and producing multi-variant reports with trade ideas, social radar, and ECharts visualizations.

Summary

Key Takeaways

Trading Agent Essentials

Quiz: Test Your Understanding

Q1: What is the minimum confluence score for an A+ setup in the scanner?

A: 10/14 confirming signals across technical (6 possible), fundamental (4 possible), and sentiment (4 possible) dimensions. Grade B+ requires 7+, A requires 8+.

Q2: Why is the retrospective agent critical for the scanner's improvement?

A: It closes the learning loop. By measuring actual outcomes (TP1 hit, stopped out, in-progress) for every published trade idea, it generates data to adjust strategy weights. A strategy with declining hit rates gets lower weight in future scans.

Q3: What is the P0 check and why is it mandatory?

A: The P0 check validates that the entry price in a trade idea is within 10% of the live spot price. This catches stale data, hallucinated prices, and outdated screener results before they reach publication.

Next — Part 5 of 5
Limits, Safety & The Future
AI Agents for Finance4/5