wbt 0.1.8

Weight-based backtesting engine for quantitative trading
# 设计方案调整

## 20260402

1. WeightBacktest 中的 dfw 参数名称改成 data,同时支持三种类型的输入
    - pd.DataFrame
    - pl.DataFrame / pl.LazyFrame
    - file 路径(csv/feather/parquet/xlsx 四种常见格式)

2. 评估指标的优化(三大类:收益、风险、特质)

    收益指标:

    - 绝对收益
    - 年化收益
    - 夏普比率
    - 卡玛比率
    - 新高占比
    - 单笔盈亏比    - 用pairs计算
    - 单笔收益      - 用pairs计算
    - 日胜率
    - 周胜率
    - 月胜率
    - 季胜率
    - 年胜率 - 细节:当年交易天数不到 yearly days 的一半,不计算这一年

    风险指标:

    - 最大回撤
    - 年化波动率
    - 下行波动率
    - 新高间隔

    特质指标:

    - 交易次数      - 用pairs计算
    - 年化交易次数  - 用pairs计算
    - 持仓K线数     - 用pairs计算
    - 交易胜率      - 用pairs计算
    - 多头占比      - 用weight计算
    - 空头占比      - 用weight计算

    stats - 多空综合的评估指标
    long_stats - 只看多头部分的评估指标
    short_stats - 只看空头部分的评估指标

3. 新增 segment_stats 函数
    s = segment_stats(sdt="20170101", edt="20190101", kind="多头/空头/多空")
    按 sdt 和 edt 分别过滤 dailys 和 pairs,然后计算出 2 种的所有指标

4. 新增 long_alpha_stats 函数
    将多头的日收益和基准的日收益,按目标年化波动率20%调整后,多头累计 - 基准累计 = 多头超额;
    用 daily_performance 在多头超额上面计算指标

5. python/wbt 下面新增 plotting 模块,根据 weight backtest 的输出数据格式,绘制各种可视化图表

    画图仅依赖 plotly
    参考 czsc 库下面的 svc 模块和 utils/plotting 模块,需要仔细甑别哪些绘图函数是针对回测场景有效的。
    可以先统一数据格式,然后根据统一的格式来绘制图表

## 20260403

1. 所有涉及到 stats 输出的函数,输出的字段顺序都按照以下方式(包括字段名称),这样人工可读性强

    {'绝对收益': -8.9528,
    '年化收益': -0.4117,
    '夏普比率': -2.9296,
    '卡玛比率': -0.0455,
    '新高占比': 0.0011,
    '单笔盈亏比': 0.927,
    '单笔收益': -1.98,
    '日胜率': 0.4226,
    '周胜率': 0.3406,
    '月胜率': 0.2541,
    '季胜率': 0.0984,
    '年胜率': 0.0,
    '最大回撤': 9.0425,
    '年化波动率': 0.1405,
    '下行波动率': 0.0907,
    '新高间隔': 2.0,
    '交易次数': 7497492,
    '年化交易次数': 344775.18,
    '持仓K线数': 3.77,
    '交易胜率': 0.5078,
    '多头占比': 0.1575,
    '空头占比': 0.84,
    '品种数量': 5,
    '开始日期': '2010-01-01',
    '结束日期': '2025-01-01'}

2. segment_stats 中 sdt 和 edt 参数应该以 str 为主,兼容 timestamp 之类的格式,不要用 int 

3. 在 wbt\python\scripts\quick_start.ipynb 中提供 plotting 函数的使用案例,并直接运行出来