a68cf4905e
把聚宽"全天候轮动"(post48819)搬到 BulletTrade。融合=pip+扩展点注入 (SanguoMiniQmtProvider 继承 MiniQMTProvider 只 override get_fundamentals, set_data_provider 公开 API 注入, BulletTrade 源码 0 改动)。 - providers: SanguoMiniQmtProvider 补 get_fundamentals(PershareIndex+自算PE/PS/PB/PCF/市值/ROIC) - strategies/all_weather: 4选股函数+大小盘轮动+ETF兜底+涨停止损(聚宽风格翻译) - factors(估值/ROIC自算) + filters(ST/涨跌停/次新/停牌) - 88/88 测试 Mac+VPS 双过; VPS 回测 pipeline 跑通(修9bug:Capital单位/日期格式/百分数口径/11字段alias) - 实盘 runner_live+runbook 就绪等交易日; DEFAULT_DATA_PROVIDER=miniqmt env 不装 jqdatasdk - 文档: sanguo_portfolio_plan / portfolio_backtest_result / portfolio_live_runbook
33 lines
1.2 KiB
Python
33 lines
1.2 KiB
Python
"""sanguo_portfolio:聚宽全天候轮动策略搬到 BulletTrade 框架。
|
|
|
|
子模块:
|
|
- ``factors`` 纯函数估值/ROIC 因子(无外部依赖)
|
|
- ``filters`` ST/停牌/科创北交/次新/涨跌停 过滤(无外部依赖)
|
|
- ``providers`` SanguoMiniQmtProvider(继承 bullet-trade MiniQMTProvider)
|
|
- ``strategies`` AllWeatherStrategy(聚宽 post48819 翻译)
|
|
|
|
ENV GUARD(bullet-trade 0.9.2 坑):
|
|
- ``import bullet_trade`` 时 default provider 是 jqdata,会强制 ``import jqdatasdk``,
|
|
本地/服务器都没装(用户铁律不用 jqdata 付费)。
|
|
- 在任何 ``import bullet_trade`` **之前**设 ``DEFAULT_DATA_PROVIDER=miniqmt``,
|
|
default provider 切到 MiniQMTProvider,跳过 jqdatasdk。
|
|
- 实际数据走 ``set_data_provider(SanguoMiniQmtProvider(...))`` 覆盖。
|
|
"""
|
|
import os
|
|
|
|
# 默认 provider 切 miniqmt,避开 jqdatasdk 硬 import(必须早于任何 bullet_trade import)
|
|
os.environ.setdefault("DEFAULT_DATA_PROVIDER", "miniqmt")
|
|
|
|
from . import factors, filters
|
|
from .providers import SanguoMiniQmtProvider
|
|
from .strategies import AllWeatherConfig, AllWeatherStrategy, BrokerFacade
|
|
|
|
__all__ = [
|
|
"factors",
|
|
"filters",
|
|
"SanguoMiniQmtProvider",
|
|
"AllWeatherStrategy",
|
|
"AllWeatherConfig",
|
|
"BrokerFacade",
|
|
]
|