小果资产配置回测系统助手

SKILL效率
效率 未标注权限 许可证不明确
安装这个技能

小果(微信:xg_quant)资产配置回测系统助手,专注于「固定配置买入持有 + 涨跌幅做T」策略的深度开发、回测与优化。 本系统基于"按百分比/金额/数量配置各标的 → 期初一次性建仓 → 逐日做T(涨超止盈阈值卖出、跌超止损阈值买入增厚)"核心架构, 提供从数据治理、权重/金额/数量配置工程、做T交易信号生成、策略构建、回测执行到绩效归因的全链路解决方案。 支持灵活的资金配置方式、基准指数对比、做T频率控制、完整绩效分析与结果落盘导出。 触发关键词:资产配置、ETF配置、固定配置、买入持有、做T、高抛低吸、止盈止损、资产配置回测、xg_pz_backtrader。

一句话选型结论

按资料字段整理

小果资产配置回测系统助手是效率类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类效率 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_676c825d/xg-pz-backtrader
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

效率
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_676c825d仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验2026-11-06上游最后核验时间 · 数据更新 2026-11-06
正文体量14.6 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
整理待办与日程

把零散任务收进清单,排出优先级。

批量处理重复任务

把固定动作做成模板,重复执行。

把流程写成清单

把口头流程整理成可复用的步骤。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在效率场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
小果资产配置回测系统助手当前 未标注权限 未标注 未标注 未标注 有
Nano PDF 文档 联网访问 ClawHub 市场 424.9 万 OpenClaw 有
自动更新程序 浏览器控制 ClawHub 市场 296.4 万 OpenClaw 有
Gemini 助手 联网访问 ClawHub 市场 254.7 万 OpenClaw 有
word DOCX 文档 联网访问 ClawHub 市场 239.6 万 OpenClaw 有
Excel XLSX 前端 联网访问 ClawHub 市场 227.0 万 OpenClaw 有

SKILL.md 全文

14.6 KB
模型实际读到的说明书原文,来自技能仓库

小果资产配置回测系统助手

教程 https://gitcode.com/qq_50882340/xg_pz_backtrader
基于 xg_pz_backtrader 的 ETF 资产配置回测系统。核心思想:按用户设定的百分比 / 金额 / 数量给多个 ETF 一次性配置建仓并买入持有,随后逐日检查各标的涨跌幅,涨幅超过 sell_zdf 触发止盈卖出、跌幅低于 buy_zdf 触发止损买入(做T 高抛低吸),从而在持有底仓的同时滚动增厚收益。

本助手覆盖:数据治理(本地多标的 + 指数 + 自定义注入)→ 配置方案(三种 dt_type)→ 期初建仓 → 逐日做T → 绩效/年度/基准对比 → Excel+JSON 落盘全流程,并提供 60 个类方法的完整参考。

一、系统架构与核心逻辑

输入数据(多标的 OHLCV + 基准指数)
        │
        ▼
┌───────────────────────────────┐
│ 1. 共同交易日对齐             │  取所有标的日期交集
└───────────────────────────────┘
        │
        ▼
┌───────────────────────────────┐
│ 2. 期初一次性建仓             │  按 dt_type(百分比/金额/数量)×weight_list
│    (Initial Build)            │  计算每标的目标市值→100股整数倍买入
└───────────────────────────────┘
        │
        ▼
┌───────────────────────────────┐
│ 3. 逐日做T (高抛低吸)         │  每日检查持仓标的当日 zdf:
│    涨 ≥ sell_zdf  → 止盈卖出  │    trade_value 金额卖出
│    跌 ≤ buy_zdf   → 止损买入  │    trade_value 金额买回
└───────────────────────────────┘
        │
        ▼
┌───────────────────────────────┐
│ 4. 绩效归因 / 年度 / 基准对比  │  净值曲线、回撤、夏普、超额…
└───────────────────────────────┘
        │
        ▼
    落盘 Excel + JSON(策略模型/资产配置策略/{user}/)

要点:
- 整体资金池:全部标的共享一份总现金 cash,靠配置权重决定各标的初始仓位;期初建仓后剩余现金作为做T子弹。
- 持仓永不主动清仓:除做T 卖出一部分外,底仓长期持有至回测结束,属于典型"底仓 + 机动做T"结构。
- 基准:按配置权重持有不动(不做T)的净值曲线。

二、安装与环境

# 依赖仅需
pip install pandas numpy pyarrow openpyxl

> 本系统依赖 pyarrow(读本地 parquet)与 openpyxl(导出 xlsx),无需 scipy。

三、导入方式

from xg_pz_backtrader.xg_pz_backtrader import xg_pz_backtrader

> 若你的脚本与 xg_pz_backtrader.py 位于同一目录,也可直接模块名导入:
> from xg_pz_backtrader import xg_pz_backtrader

四、快速上手

from xg_pz_backtrader.xg_pz_backtrader import xg_pz_backtrader

bt = xg_pz_backtrader(
    start_date='20250101',
    end_date='20500101',
    stock_list=['159915.SZ', '513100.SH', '518880.SH'],
    dt_type='百分比',
    weight_list=[0.35, 0.35, 0.3],   # 35%/35%/30%
    index_stock='000300.SH',
    cash=100000,
    sell_zdf=0.03,      # 当日涨幅 ≥3% → 止盈卖出做T
    buy_zdf=-0.03,      # 当日跌幅 ≤-3% → 止损买入做T
    trade_value=1000,   # 每次做T金额
    comm=0.0001,
)
bt.run_backtest()
print(bt.generate_report())
bt.save_backtrader_data(user='test')

五、初始化参数详解

5.1 基础参数(Base)

参数 默认 说明
start_date '20260101' 回测开始日期 %Y%m%d
end_date '20500101' 回测结束日期
stock_list ['159915.SZ','513100.SH','518880.SH'] 标的(ETF/股票)代码列表
index_stock '000300.SH' 基准指数代码(仅用于对比/落盘)
cash 100000 初始总资金
comm 0.0001 手续费率(默认万 1)
max_workers 4 多线程加载数据的线程数
use_custom_data False 是否使用自定义标的数据源
use_custom_index_data False 是否使用自定义指数数据源

5.2 配置参数(核心:dt_type + weight_list)

参数 默认 说明
dt_type '百分比' 配置方式:'百分比'/'金额'/'数量'
weight_list [0.4,0.4,0.2] 与 stock_list 一一对应。按 dt_type 解释:百分比→权重(自动归一化);金额→每标的金额(元);数量→每标的目标份额(份)

dt_type 三种口径:
- '百分比':weight_list=[0.4,0.4,0.2] 表示 40%/40%/20%,构造时若总和≠1 自动归一化。
- '金额':weight_list=[5000,5000,5000] 表示每标的各配置 5000 元买入。
- '数量':weight_list=[100,100,100] 表示每标的目标持有 100 份(按首日价折算金额买入)。

> weight_list 长度必须等于 stock_list,否则构造抛 ValueError。

5.3 做T参数(高抛低吸)

参数 默认 说明
sell_zdf 0.03 止盈阈值:某标当日涨跌幅 ≥ 此值 → 卖出 trade_value 金额份额
buy_zdf -0.03 止损阈值:某标当日涨跌幅 ≤ 此值 且 现金够 → 买入 trade_value 金额份额
trade_value 1000 每次做T 的交易金额

> 做T方向约定(本系统反直觉点):sell_zdf 是卖出触发阈值(正数,涨幅),buy_zdf 是买入触发阈值(负数,跌幅),trade_value 是每次机动金额,与海龟/网格等一致用 zdf 判断当日相对昨收的涨跌。

六、数据字段与数据目录要求

6.1 必需字段(OHLCV)

date / close / open / high / low / volume 六列必须存在。

6.2 推荐字段

字段 说明
preClose 前收盘价(用于复权计算,本系统默认 adj_type='none' 不强制)
zdf 涨跌幅(不存在会自动 close.pct_change() 计算)
amount 成交金额(可选)

6.3 本地数据目录结构

工作目录/
├── xg_pz_backtrader.py
└── data/
    ├── 历史数据/
    │   ├── 159915.SZ.parquet      # 每标的一份,股票代码命名
    │   ├── 513100.SH.parquet
    │   └── ...
    └── 指数数据/
        └── 000300.SH.parquet      # 基准指数,指数代码命名
  • 标的本地读取仅走 data/历史数据/{code}.parquet(单一路径,无多路径回退)。
  • 指数本地读取仅走 data/指数数据/{index_stock}.parquet(仅 parquet)。
  • 未用自定义数据时,读取会过滤 close>0、open>0 的无效行并自动计算 zdf。

七、方法清单(60 个类方法速查)

> 详细签名见第 8 章示例与文末;save_to_json 在本系统真实存在(区别于综合动量)。

分类 方法
构造/工具 __init__ _convert_to_serializable
指数注入(7) add_index_data_from_dataframe add_index_data_from_excel add_index_data_from_csv add_index_data_from_json add_index_data_from_dict add_index_data_from_parquet add_index_data_from_bytes
指数管理 clear_index_data has_index_data get_index_data_info _normalize_index_dataframe
标的注入(7) add_stock_data_from_dataframe add_stock_data_from_excel add_stock_data_from_csv add_stock_data_from_json add_stock_data_from_dict add_stock_data_from_parquet add_stock_data_from_bytes
标的管理 clear_custom_data remove_stock_data get_custom_data_keys has_custom_data
数据加载/处理 _normalize_dataframe get_stock_data get_index_data _load_single_stock get_all_stock_data adjust_price
基准/撮合 calculate_benchmark_curve calculate_buy_shares calculate_sell_shares calculate_sell_shares_all
绩效/年度 calculate_annual_performance get_annual_performance get_annual_performance_df calculate_performance_metrics
回测/生成 vectorized_backtest generate_equity_curve_data generate_trade_data generate_position_data generate_account_data
getter(懒触发) get_trade_data get_position_data get_account_data get_daily_positions get_trade_log get_portfolio_history get_performance_metrics get_equity_curve_data get_stock_results get_backtest_summary get_all_data get_backtrader_data
配置/报告/导出 get_config run_backtest generate_report save_backtrader_data save_to_json

八、完整实战示例

8.1 百分比配置 + 做T(本地数据)

from xg_pz_backtrader.xg_pz_backtrader import xg_pz_backtrader

bt = xg_pz_backtrader(
    start_date='20240101', end_date='20261231',
    stock_list=['159915.SZ', '513100.SH', '518880.SH'],
    dt_type='百分比', weight_list=[0.4, 0.4, 0.2],
    index_stock='000300.SH', cash=100000,
    sell_zdf=0.05, buy_zdf=-0.05, trade_value=2000,
)
bt.run_backtest()
perf = bt.get_performance_metrics()
print(f"年化:{perf['annual_return']:.2%} 回撤:{perf['max_drawdown']:.2%} 夏普:{perf['sharpe_ratio']:.2f}")

8.2 金额配置(固定金额买入持有)

bt = xg_pz_backtrader(
    stock_list=['510300.SH', '510500.SH'],
    dt_type='金额', weight_list=[50000, 50000],  # 每只 5 万
    cash=120000,
)

8.3 数量配置(固定份额)

bt = xg_pz_backtrader(
    stock_list=['159915.SZ', '510300.SH'],
    dt_type='数量', weight_list=[1000, 500],  # 目标各 1000/500 份
)

8.4 自定义标的数据注入(DataFrame)+ 结果 JSON 落盘

import pandas as pd
from xg_pz_backtrader.xg_pz_backtrader import xg_pz_backtrader

bt = xg_pz_backtrader(
    stock_list=['A', 'B'],
    dt_type='百分比', weight_list=[0.5, 0.5],
    use_custom_data=True,
)
bt.add_stock_data_from_dataframe('A', pd.read_parquet('data/a.parquet'))
bt.add_stock_data_from_dataframe('B', pd.read_parquet('data/b.parquet'))
bt.run_backtest()
bt.save_backtrader_data(user='test')   # 分类落盘 Excel+JSON
bt.save_to_json('result/pz.json')      # 本系统真实存在的 JSON 便捷落盘

8.5 自定义指数注入 + 关闭做T

bt = xg_pz_backtrader(..., use_custom_index_data=True)
bt.add_index_data_from_csv('000300.SH', 'data/index.csv')  # 需 date+close 列
# 做T可用极大阈值近似关闭:
bt.sell_zdf, bt.buy_zdf = 1.0, -1.0   # 正常涨跌几乎不触发 → 纯持有

九、输出与落盘

9.1 导出目录结构

策略模型/资产配置策略/{user}/
├── 指数数据/指数数据.{xlsx,json}
├── 成交数据/成交数据.{xlsx,json}
├── 持股数据/持股数据.{xlsx,json}
├── 账户数据/账户数据.{xlsx,json}
├── 绩效指标/绩效指标.{xlsx,json}
├── 净值曲线/净值曲线.json
├── 策略参数/策略参数.{xlsx,json}
└── 年度收益统计/年度收益统计.{xlsx,json}

9.2 绩效指标字段

start_date end_date total_days total_cash final_value total_return total_pnl total_commission remaining_cash final_holdings annual_return max_drawdown max_drawdown_date sharpe_ratio sortino_ratio calmar_ratio win_rate volatility 及基准对比 benchmark_final_value benchmark_total_return benchmark_start_value benchmark_max_drawdown excess_return excess_return_pct,另含配置留档 dt_type weight_list sell_zdf buy_zdf trade_value use_custom_data use_custom_index_data。

9.3 成交/持股/账户数据结构

  • 成交:date stock type price shares amount commission reason
  • 持股:每标期末 持有份额 / 市值 / 成本 / 盈亏
  • 账户:date total_value cash holdings daily_return benchmark_net_value ...

9.4 交易类型(trade_log.type)

初始建仓 / 止盈卖出 / 止损买入(做T 机动不改变"持有"属性)。

十、常见问题 FAQ

Q1 导入时报 ModuleNotFoundError?

确认文件名 xg_pz_backtrader.py 与导入写法匹配;脚本与 .py 同目录用模块名导入,否则用包路径导入(见第三章)。

Q2 某标的没建仓?

首日 close<=0 会被跳过;weight_list 对应配置值需 >0;总现金需覆盖该标的目标金额。

Q3 为什么几乎不做T?

做T 需要标的当日涨跌幅超过阈值,且需持有份额 >0(卖)或现金 ≥trade_value(买)。阈值设过大或标的不活跃就不触发。

Q4 weight_list 长度不一致?

构造会抛 ValueError;务必与 stock_list 等长。

Q5 涨跌停怎么办?

本系统按当日涨跌幅 zdf 判断做T,未内置涨跌停过滤;如需可自行在注入数据时剔除异常。

十一、二次开发入口

  • 修改 calculate_buy_shares / calculate_sell_shares:定制撮合(份额、四舍五入、滑点)。
  • 修改 vectorized_backtest 主循环:插入自定义调仓/风控规则。
  • 修改 calculate_benchmark_curve:更换基准口径。
  • 结果取出:所有 get_* getter 懒触发自动 run_backtest()。

更多细节见配套《小果资产配置回测系统助手.md》完整使用教程(含全部源码)。

常见问题

5 问
答案由本站依据条目字段整理
小果资产配置回测系统助手怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_676c825d/xg-pz-backtrader。安装方式为未标注。装完刷新技能列表或重开客户端。

小果资产配置回测系统助手支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

小果资产配置回测系统助手权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

小果资产配置回测系统助手收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

小果资产配置回测系统助手用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 2026-11-06。