| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
多市场、多策略的纸面交易(paper-trading)研究引擎。它负责拉取真实行情、计算因子、生成信号、模拟成交、保存账本;可视化由 trading-dashboard 读取同一个 SQLite 数据库完成。
这不是真钱交易系统,也不是投资建议。 它是一个长期运行的量化策略赛马场:让不同 alpha 思路在相同撮合、成本、风控、审计规则下对照生存。
| 维度 | US | CN A-share |
|---|---|---|
| 股票池 | Russell 1000(约 1004 支) | 沪深 300 |
| 初始资金 | $10,000 / account | ¥100,000 / account |
| 基准 | IDX1 = QQQ, IDX2 = SPY | IDX3 = 沪深300 000300.SH |
| 行情 | yfinance + Finnhub realtime fallback | akshare realtime / history |
| 交易时段 | US regular session | A 股 09:30–11:30 / 13:00–15:00 CST |
| 成本 | moomoo AU US-stock fee model | 佣金 + 过户费 + 卖出印花税 + 滑点 |
| 交易单位 | whole shares | 买入必须 100 股整数倍 |
CN 账户是 US 策略族的镜像:A01 → CA01, B11 → CB11, Q08 → CQ08。这样能比较同一类信号在两个市场结构里的迁移能力。
| 族 | 账户 | 来源 | 用途 |
|---|---|---|---|
| A / CA | A01–A10, CA01–CA10 | Alpha158 风格手写因子 | 人类可解释的经典因子基线 |
| B / CB | B01–B16, CB01–CB16 | gplearn GP 因子挖掘 | 机器自动搜索表达式,做 alpha 探索 |
| F / CF | F11–F16, CF11–CF16 | FactorMiner-style GP | 带记忆/相关性筛选的第二套 GP 实验 |
| Q / CQ | Q01–Q10, CQ01–CQ10 | Qlib ML 模型 | LightGBM/XGBoost/CatBoost/Ridge/MLP/LSTM/GRU/Transformer/TCN/ALSTM |
| IDX | IDX1–IDX3 | Buy-and-hold benchmark | 判断策略是否跑赢指数 |
账户生命周期写入 account_meta.status:active 账户继续交易;retired 账户冻结交易但保留完整历史,供 dashboard 墓碑墙和研究复盘使用。
高价股(如茅台、寒武纪)信号再好,如果 100股 × price 超过账户当前预算/仓位上限,系统不会破坏风控去硬买一手,而是:
事件 detail 会保存:预算、价格、滑点后执行价、1 手名义金额、rank、score、strategy_kind。
单一数据库:data/trading.db。
| 表 | 内容 |
|---|---|
| prices | OHLCV cache,按 (ticker, datetime, interval) 存储;dashboard 也复用这一份价格源 |
| factor_values | Alpha158 / GP / Qlib scores |
| account_meta | 账户元数据、初始资金、市场、active/retired 状态 |
| account_state | 当前 cash / initial_cash |
| positions | 当前持仓、avg_cost、current_price |
| positions_history | 持仓时间序列快照 |
| accounts | equity curve 快照 |
| trades | 模拟成交流水 |
| events | trade / rebalance / system / lifecycle 事件流 |
| adaptive_state | 自适应调仓状态 |
价格写入保留原始行情;脏 0-volume intraday bar 等清洗在读取层处理,以保留审计能力。
| 脚本 | 作用 |
|---|---|
| main.py --once | 唯一推荐的手动交易 cycle 入口 |
| scripts/update_prices.py | 盘中实时 quote、equity snapshot、stop-loss watchdog |
| scripts/update_prices.sh | cron wrapper,带全局 lock 和 hard timeout,防 provider 卡死持锁 |
| scripts/backfill_prices.py | US/CN price cache 增量/全量回填,包含当前持仓 legacy tickers |
| scripts/ledger_watchdog.py | cash/positions/trades/equity/events 对账 |
| scripts/qlib_retrain.py | Q 组模型 rolling retrain |
| scripts/retire_account.py | 账户退役 / 复活 |
| scripts/replay_us.py, scripts/replay_cn.py | 历史 replay / 修复辅助 |
cd ~/quant-trading
source venv/bin/activate
# 单次运行(会按市场时段 gate;不要绕过 main.py)
python main.py --once
python main.py --once --market CN
# 价格回填 / 增量刷新
python -m scripts.backfill_prices --market US --interval 1h --days 3
python -m scripts.backfill_prices --market US --interval 1d --days 5
python -m scripts.backfill_prices --market CN --interval 1d --days 5
# 盘中价格刷新 smoke test(周末/闭市手动修复 stale snapshot 时)
QUANT_FORCE_PRICE_UPDATE=1 python -m scripts.update_prices
# 当前账本对账:quiet-ok 无输出且 exit 0 表示通过
PYTHONPATH=$PWD python scripts/ledger_watchdog.py --market US --history-days 0 --quiet-ok
PYTHONPATH=$PWD python scripts/ledger_watchdog.py --market CN --history-days 0 --quiet-ok
# CN board-lot sizing regression tests
PYTHONPATH=$PWD pytest tests/test_cn_lot_size.py -q不要用 python -c "from main import ..." 直接调用 trading cycle。那会绕过市场时段、状态恢复、报告/快照等保护逻辑。
当前设计是统一脚本 + market-aware gate,而不是每个市场复制一套脚本:
这个项目优先保留可追溯性:
ledger_watchdog.py 的当前权威级别:
trading-dashboard 是只读可视化层:
quant-trading writes data/trading.db
↓
trading-dashboard reads the same DB and renders UI
dashboard 不应该复制价格 cache,也不应该写账户状态。两边通过同一个 prices / accounts / events 数据源保持一致。
git clone https://github.com/nullptr0807/quant-trading.git
cd quant-trading
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # 如需 Telegram / Finnhub
python main.py --once主要依赖:pandas, numpy, yfinance, finnhub-python, akshare, gplearn, scikit-learn, qlib, lightgbm, xgboost, catboost, python-dotenv。
MIT。仅供研究和学习。所有交易都是模拟成交;任何基于本项目做出的真实投资决策,风险自担。
🤖 Built and maintained with Hermes Agent.
| Back | FazBrowse Home | New Git URL |