Skip to main content

๐Ÿ›๏ธ Core Pillar V: Unified Action Terminal & Research Infra: Building the Single Source of Truth for V7.2

Author
Frank Zhang
Exploring AI, Network, Insurance, and Life.

๐Ÿ›๏ธ Core Pillar V: Unified Action Terminal & Research Infra: Building the Single Source of Truth for V7.2
#

Release Version: v7.1.7 - v7.1.9
Core Components: templates/trade.html, dashboard.py, templates/tools.html, data/research_cache.json
Tags: Unified Terminal ยท Single Source of Truth ยท Research Cache ยท yfinance BULK Prefetching


๐Ÿ“– Introduction: Resolving Heterogeneous Information & Eliminating Decision Conflicts
#

In complex multi-engine quantitative trading systems, a frequent friction point is cross-view decision inconsistency: the daily scanner outputs ADD, the rebalance filter tags HOLD, while the 1H tactical timeframe signals WATCH. Tiny discrepancies across UI panels increase cognitive load and trigger trading hesitation.

During v7.1.7 to v7.1.9, Trade OS engineered the V6.5 Unified Action Terminal as the single source of truth for execution directives, paired with an enhanced Tactical Research Library and BULK Concurrent Data Infrastructure.


๐Ÿ›๏ธ I. Unified Action Terminal & Multi-Engine Cross-Arbitration API
#

The Unified Action Terminal seamlessly integrates daily scanner alerts, 1H tactical signals, and rebalance states at the top of templates/trade.html.

1.1 Dynamic Arbitration API (/api/unified_recommendations)
#

In dashboard.py, the backend exposes a cross-arbitration endpoint:

# Cross-arbitration API endpoint (dashboard.py)
@app.route('/api/unified_recommendations')
def unified_recommendations():
    # Dynamically query asset roles (CORE/SWING/REGIME/TRADE)
    # Arbitrate signals across Daily Scanner, Hourly Analyzer, and Rebalance Filter
    action, reason = arbitrate_multi_engine_signals(ticker)
    return jsonify({
        "ticker": ticker,
        "action": action,   # BUY / ADD / TRIM / EXIT / HOLD / WATCH
        "reason": reason    # Direct transparent explanation from decision chain
    })
                          โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                          โ”‚   Daily Scanner Signal   โ”‚
                          โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                       โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”           โ–ผ           โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Rebalance Advisory Filterโ”œโ”€โ”€โ–บ [ Cross-Arbitration ]โ—„โ”€โ”€โ”ค    1H Tactical Engine    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜           โ”‚           โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                       โ–ผ
                         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                         โ”‚ Action: BUY / ADD / EXIT  โ”‚
                         โ”‚   Single Source of Truth  โ”‚
                         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

This endpoint eliminates contradictions across different UI perspectives, delivering self-consistent and fully explained execution recommendations.


๐Ÿ“– II. Tactical Research Library Panel & Dynamic Position Alignment
#

In templates/tools.html, the system deployed the upgraded Tactical Research Library panel.

2.1 100% Fundamental Coverage & Offline Persistent Caching
#

For 14 positions and watchlist tickers previously lacking fundamental research cards (including VXC.TO, BRK.TO, XLF, IBIT.NE, VDY.TO, COST.TO), full research profiles were completed and saved persistently into data/research_cache.json.

  • Fundamental Drawer: Dropdown selector to view real-time 3+1 scores, core taxonomy, moat metrics, YoY financials, and catalyst events.
  • Dynamic Decision Snapshot Binding: Research cards query /api/tactical/<ticker> to render daily market cycle phases (P0-P5) and anti-FOMO adjustment logs (e.g. ๐ŸŸข ADD directive for COIN.TO).
  • Micro-Deviation Matrix: Real-time yfinance queries compute SMA 20/50/200 price deviations and 90-day extreme band divergences.

๐Ÿ“ฅ III. BULK Price Data Prefetching & API Rate-Limit Defense
#

During full-universe scans or monthly performance report generation, high-frequency yfinance API calls risk provider rate limiting or temporary IP blocks.

# BULK K-line prefetching mechanism (monthly_performance_report.py / v6_daily_scanner.py)
BULK_PRICES = {}

def prefetch_all_kline_data(tickers):
    # Parallel batch download for all universe tickers on system startup
    bulk_df = yf.download(tickers, period="1y", group_by="ticker", threads=True)
    for t in tickers:
        BULK_PRICES[t] = bulk_df[t]

This infrastructure upgrade shifts downstream scanner operations to in-memory caches, reducing scan latency by over 60% and eliminating timeout deadlocks.


๐Ÿ’ก Summary & Architectural Significance
#

The Unified Action Terminal and Research Infra constitute the data foundation and human-agent interface of Trade OS. It delivers zero-latency, conflict-free control for the trader while providing robust underlying infrastructure for the automated quantitative engine.