Infrastructure · Ops Console
Team & Agents
Status of every automated piece of the system. Read-only for now — no remote triggers yet.
No scheduled automation yet (HF Jobs needs prepaid compute credits) — run it locally whenever you want new hypotheses proposed and screened.
source .venv/bin/activate && python scripts/research_agent.py \
--csv-root data/raw/forex/extracted \
--hf-state-repo KUTech/trading-llm-agent-state \
--num-proposals 3Requires OPENROUTER_API_KEY in a local .env file. Results push automatically to KUTech/trading-llm-agent-state on Hugging Face — this dashboard reflects them next time it's rebuilt.
Fine-tuned chat/reasoning assistant (Qwen2.5-0.5B LoRA)
Compared fine-tuned vs base model output — fine-tune produced unresolved <think> traces instead of direct answers. Needs dataset rework or retraining.
Completed training run on Colab (Qwen2.5-0.5B, 5000 examples, 157 steps) and pushed adapter to KUTech/trading-llm.
Deterministic backtest pipeline (features -> model -> honest metrics)
Ran EURUSD 4h-direction backtest with realistic spread costs — confirmed no exploitable edge (Sharpe -0.86).
Trained baseline HistGradientBoostingClassifier — validation AUC 0.513, at chance level.
Proposes specific, testable trading hypotheses via LLM API (OpenRouter), auto-screened
Proposed 4 new combos -- EURUSD 1h h=12, USDCHF 4h h=24, AUDUSD 1D h=12 cleared the cheap screen (NZDUSD 4h h=12 rejected). Second, independent USDCHF signal is notable given USDCHF is already the one confirmed candidate.
Proposed USDCAD 1D horizon=24 and AUDUSD 4h horizon=12 -- USDCAD cleared the cheap screen with a notably strong AUC=0.6223 (small daily sample, needs full validation before trusting).
Proposed EURUSD 4h horizon=12 and USDJPY 1D horizon=24 via OpenRouter (gpt-4o-mini) -- both auto cheap-screened, state persisted to KUTech/trading-llm-agent-state.
Live hourly signal + vol-target sizing + drawdown guard against an OANDA practice account (launchd, real order flow, no real capital)
Held +1000 units long (proba_up 0.575, vol_scale 1.000, drawdown guard untripped).
Flipped flat -> long (proba_up 0.553 crossed the 0.55 confidence threshold).
First live decision after launch -- position_sizing.py (vol-target scale + drawdown guard) wired in mid-session.
LLM-scores Fed/SNB policy-statement hawkishness (2015-2025) into a candidate carry-adjacent feature
Full validation on USDCHF 1D h=20: Sharpe 0.44 (2024-25) vs. -0.66 (2021-22) -- REJECTED, failed robustness. Same pattern as the raw carry features.
Fetched and LLM-scored Fed + SNB statements 2015-2025 -> data/sentiment/USD.csv, CHF.csv.