Skip to content

Latest commit

 

History

History
44 lines (30 loc) · 1.7 KB

File metadata and controls

44 lines (30 loc) · 1.7 KB

Streamlit + WindPy 行业 ETF 轮动 MVP

这是一个本地研究看板:WindPy 负责取数,Python 负责回测,Streamlit 负责浏览结果。第一版只做行业 ETF 多头轮动,不自动下单,也不做股指期货对冲。

运行

python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
streamlit run app.py

打开浏览器里的 http://localhost:8501。如果使用 WindPy 数据源,需要先登录 Wind 终端,并在同一个 Python 环境里能 from WindPy import w

数据源

  • 示例数据:不依赖 Wind,用随机生成的类市场数据验证页面和策略逻辑。
  • WindPy:读取 data/universe_industry_etf.csv 的 ETF 代码,然后用 w.wsd 拉取 closeamt

默认标的池在 data/universe_industry_etf.csv,可以自行增删 ETF。保留 codenameenabled 三列即可。

策略逻辑

  • 调仓:默认周频,信号在调仓日收盘后计算,下一交易日生效。
  • 打分:20日动量 + 60日动量 + 120日动量 - 波动惩罚 的横截面标准化得分。
  • 过滤:上市历史充足、价格高于中期均线、平均动量为正、日均成交额达标。
  • 持仓:默认选前 5 只等权;合格标的少于 3 只时降低总仓位,剩余持现金。
  • 成本:默认单边 12.5bp,每次换仓按权重变化扣除。

输出

每次运行会写入 outputs/

  • signals.csv:每期入选 ETF、得分、目标权重。
  • trades.csv:每期权重变化和估算成本。
  • performance.csv:核心绩效指标。
  • equity_curve.csv:日度净值、回撤、收益、换手。
  • weights.csv:日度目标权重。

测试

python3 -m unittest discover -s tests