Skip to main content
The Autonomous Decision Loop is the brain of the system - the continuous cycle where the LLM researches markets, forms hypotheses, tests them, deploys strategies, monitors results, and learns from outcomes.

The Loop

1

Research

Scan markets, aggregate signals from LLM forecasts, oracles, wallet consensus, and technical indicators.
2

Hypothesize

Form a thesis: “Market X is mispriced because Y.” Score confidence.
3

Backtest

Run automated backtest with robustness checks (permutation, walk-forward, CPCV).
4

Deploy

Start in staging (paper mode), then promote to live if performance holds.
5

Monitor

Track P&L, health, edge decay, and execution quality in real time.
6

Improve

Adjust parameters, retire losers, scale winners. Loop back to Research.
Each iteration of this loop is logged with full reasoning for audit.

Research Pipeline

The LLM periodically scans the market universe for opportunities.
# Scan for opportunities via MCP
opportunities = research.scan(
    universe=fund.market_universe,
    signals=["llm_forecast", "oracle", "wallet_consensus"],
    min_edge=0.05,
    min_liquidity=1000,
)
# Returns ranked opportunities with evidence

Signal Aggregation

Multiple signal sources are combined:
SignalSourceWeight
LLM Forecastllm_forecast()Primary
Oracle Edgescan_edges()Secondary
Wallet Consensuscompute_consensus()Confirming
Technicalregime_signal, momentumTiming
Sentimentllm_scan() with newsConfirming

Automated Backtest-to-Deploy

When the LLM identifies an opportunity, it constructs a strategy, backtests it, and deploys if it passes checks.

Deploy Decision Criteria

CriterionThresholdRationale
Sharpe ratio> 1.0Minimum risk-adjusted return
Total trades> 30Statistical significance
Robustness p-value< 0.05Not due to luck
Walk-forward consistency> 60% OOS windows positiveNot overfit
Max drawdown< 20%Acceptable worst case
# Backtest-to-deploy flow
hypothesis = research.best_opportunity()
result = backtest(hypothesis.to_strategy(), data=historical_data)

if result.passes_criteria(min_sharpe=1.0, min_trades=30, max_drawdown=0.20):
    robustness = robustness_test(result)
    if robustness.combined_p_value < 0.05:
        controller.deploy(hypothesis.to_strategy(), mode="staging")

Memory & Learning

The LLM has persistent memory across sessions to avoid repeating mistakes.

What Gets Stored

Memory TypeExample
Strategy performance”MM on crypto markets averaged Sharpe 1.8 in Q1”
Market-type models”Political markets are mean-reverting before elections”
Regime mappings”High-vol regime: widen spreads, reduce directional”
Edge decay”Wallet copy-trading edge decayed from 15% to 3% over 60 days”
Failure reasons”Directional on sports markets failed due to resolution timing”

Learning Feedback

After monitoring for N days, the system diagnoses and records outcomes:

Profitable

Record the success pattern and scale up capital allocation.

Regime Changed

Record regime sensitivity. Adjust strategy for new conditions.

Liquidity Dried Up

Record minimum liquidity requirement for this market type.

Edge Was Spurious

Record false positive. Tighten backtest criteria for similar markets.

Execution Was Poor

Adjust execution parameters (spread, size, timing).

Continuous Improvement

The loop isn’t just deploy-and-forget. Active strategies are continuously monitored and adjusted.
ActionTrigger
Re-optimize parametersWeekly, or when performance drops
Mutate strategyTry small variations on successful strategies
Prune dead strategiesNo edge detected for N consecutive days
Rebalance capitalShift from fading strategies to growing ones
Update modelsNew market resolution provides calibration data

MCP Tools

ToolDescription
backtest_hypothesisBacktest a strategy idea, return results + robustness
decision_logView recent autonomous decisions with reasoning
learning_summaryWhat the system has learned (successful patterns, failures)
improvement_suggestionsRecommended parameter changes based on recent performance