陈少杰
a51473dba2
fix(review): hmac.compare_digest for API key, ws/orchestrator auth, SignalMerger per-signal cap logic
2026-04-09 23:00:20 +08:00
陈少杰
d210099fa9
fix(review): api_key→anthropic_key bug, sync-in-async event loop block, orchestrator per-message re-init, dead code cleanup
2026-04-09 22:55:36 +08:00
陈少杰
e8ac2c81f7
feat(orchestrator): example scripts for backtest and live mode
2026-04-09 22:12:02 +08:00
陈少杰
77d8e87675
feat(orchestrator): LiveMode + /ws/orchestrator WebSocket endpoint
2026-04-09 22:10:15 +08:00
陈少杰
e6ff53ddea
feat(orchestrator): BacktestMode for historical signal collection
2026-04-09 22:09:38 +08:00
陈少杰
9c79c1a19a
test(orchestrator): unit tests for SignalMerger, LLMRunner._map_rating, QuantRunner._calc_confidence
2026-04-09 22:07:21 +08:00
陈少杰
805226f5b9
feat(orchestrator): TradingOrchestrator main class with get_combined_signal
2026-04-09 22:05:03 +08:00
陈少杰
f115b88468
fix(llm_runner): use stored direction/confidence on cache hit, sanitize ticker path
2026-04-09 22:03:17 +08:00
陈少杰
eff26c1768
feat(orchestrator): implement LLMRunner with lazy graph init and JSON cache
2026-04-09 21:58:38 +08:00
陈少杰
3d85f800c9
feat(orchestrator): implement LLMRunner with caching and rating mapping
2026-04-09 21:54:48 +08:00
陈少杰
5eb83fa567
fix(quant_runner): fix 3 critical issues and 2 important improvements
...
- Critical 1: initialize orders=[] before loop to prevent NameError when df is empty
- Critical 2: replace bare sqlite3 conn with context manager (with statement) in get_signal
- Critical 3: remove ticker param from _load_best_params (table has no ticker col, params are global)
- Important: extract db_path as self._db_path attribute in __init__ (DRY)
- Important: add comment explaining lazy imports require sys.path set in __init__
2026-04-09 21:51:38 +08:00
陈少杰
a7b3f70cdf
feat(orchestrator): implement QuantRunner with BollingerStrategy signal generation
2026-04-09 21:44:34 +08:00
陈少杰
8c7d81ba3f
fix(orchestrator): code quality fixes in config and signals
...
- config: remove hardcoded absolute path for quant_backtest_path (now empty string)
- config: add llm_solo_penalty (0.7) and quant_solo_penalty (0.8) fields
- signals: SignalMerger now accepts OrchestratorConfig in __init__
- signals: use config.llm_solo_penalty / quant_solo_penalty instead of magic numbers
- signals: apply quant_weight_cap / llm_weight_cap as confidence upper bounds
- signals: both-None branch raises ValueError instead of returning ticker=""
- signals: replace assert with explicit ValueError for llm-None-when-quant-None
- signals: replace datetime.utcnow() with datetime.now(timezone.utc)
2026-04-09 21:39:23 +08:00
陈少杰
b5ae170b71
feat(orchestrator): add signals.py and config.py
...
- Signal / FinalSignal dataclasses
- SignalMerger with weighted merge, single-track fallbacks, and cancel-out HOLD
- OrchestratorConfig with all required fields
2026-04-09 21:35:31 +08:00