Qbot xalpha 快速开始:基金数据获取、交易模拟、组合管理与策略回测实战指南
发布时间:2026/9/13 1:48:29 作者:尧图编辑部 阅读量:1,286

Qbot xalpha 快速开始基金数据获取、交易模拟、组合管理与策略回测实战指南【免费下载链接】Qbot[updating ...] AI 自动量化交易机器人(完全本地部署) AI-powered Quantitative Investment Research Platform. online docs: https://ufund-me.github.io/Qbot ✨ :news: qbot-mini: https://github.com/Charmve/iQuant项目地址: https://gitcode.com/GitHub_Trending/qbot/Qbot本文以 Qbot 仓库中pyfunds/backtest子项目内嵌的 xalpha 库版本 0.11.7的官方快速开始文档为主体系统讲解如何一行代码获取场外基金与指数信息、如何用最简账单精确模拟基金交易行为、如何汇总分析多基金投资组合以及如何用策略类生成定投/网格交易账单进行回测。读完后你将能够独立跑通「数据获取 → 单标的交易分析 → 组合管理 → 策略回测 → 通用行情获取」的完整量化研究链路。一、模块定位与入口xalpha 是 Qbot 仓库pyfunds/backtest目录下的核心分析库官方定位是对场外基金和指数进行方便的追踪和研究实现投资情况的汇总管理与数据分析并支持简单的基金购买策略回测。快速开始文档只覆盖了最小可用面更完整的函数与可视化用法可参考 demo.rst 中的 Notebook 示例数据结构与模块设计则参见 advance.rst。从 xalpha/init.py 的导出可以确认该模块对外暴露的核心 API 面信息类fundinfo、indexinfo、cashinfo、mfundinfo、FundReport、get_fund_holdings账单与交易record/irecord、trade/itrade组合管理mul、mulfix、imul策略xalpha.policy子模块buyandhold、scheduled等实时提醒realtime.review通用数据获取器get_daily、get_rt、get_bar、vinfo估值与工具PEBHistory、QDIIPredict、CBCalculator可转债估值等。安装与本地阅读文档的方式pip install xalpha官方包仓库内版本可直接使用源码依赖见 requirements.txt打包配置见 setup.py。文档可用 Sphinx 在本地构建cd doc make html源码入口见 doc/source/index.rst。二、基金和指数的信息获取2.1 场外基金fundinfo使用xalpha.info.fundinfo获取场外基金的基本信息和历史每日净值净值以pandas.DataFrame格式存储。重要限制fundinfo只支持按净值法结算的场外基金货币基金不被支持货币基金需额外使用xalpha.info.mfundinfo类。代码示例继承自官方文档 import xalpha as xa zzyl xa.fundinfo(000968) zzyl 广发养老指数A zzyl.info() fund name: 广发养老指数A fund code: 000968 fund purchase fee: 0.12% fund redemption fee info: [小于7天, 1.50%, 大于等于7天小于1年, 0.50%, 大于等于1年小于2年, 0.30%, 大于等于2年, 0.00%] zzyl.price[zzyl.price[date]2015-02-27] comment date netvalue totvalue 0 2015-02-13 1.0000 1.0000 1 2015-02-17 1.0000 1.0000 2 2015-02-27 1.0123 1.0123info()输出中包含申购费与各持有区间的赎回费这些费率数据是后续交易模拟精确计费的输入。price表中netvalue为单位净值、totvalue为累计净值comment列用于记录分红/拆分等事件。底层实现上price表的comment列由 info.py 中的_nfloat函数解析分红、现金分红折算为正值拆分/分拆折算为负值无法识别的原始文本则原样保留并告警保证净值序列与分红送转事件一一对应。2.2 基金持仓穿透fundinfo对象还提供了持仓明细接口。示例继承自官方文档 zzyl.get_stock_holdings(2019, 4) code name ratio share value 0 300773 拉卡拉 1.48 32.31 2535.37 1 600053 九鼎投资 1.44 97.15 2470.51 2 002624 完美世界 1.32 51.38 2268.08 ... 91 002973 侨银环保 0.00 0.11 0.66 zzyl.get_bond_holdings(2019, 4) # 无债券持仓时返回 None对应源码 get_fund_holdings 的签名说明了取值规则season取 1~4内部换算为month 3 * seasoncategory支持stock/jjcc与bond/zqcc两套等价写法未识别的类别会抛出ParserFailure对应期间无持仓时返回None而非报错。从源码结构看数据抓取自天天基金 F10 接口并按季度归档因此能覆盖全部持仓而不止十大权重。2.3 指数信息indexinfo使用xalpha.info.indexinfo获取指数的每日净值。代码示例继承自官方文档 zzyli xa.indexinfo(SZ399812) zzyli 养老产业 zzyli.price[zzyli.price[date]2018-08-01] comment date netvalue totvalue 1 2018-08-01 7.603842 7524.4807两个关键约定官方 note指数代码为 7 位后六位是正常指数代码第一位标记市场——0是沪市1是深市也可以直接使用SH/SZ加 6 位代码的形式如SZ399812。双值列含义price表中netvalue为以初始日归一化后的净值totvalue才是真实的指数点位值。做归一化对比分析用前者还原真实点位用后者。三、单一标的交易处理使用xalpha.trade.trade处理交易情况。为了生成交易需要提供标的类xalpha.info的实例和交易账单 status table。代码示例继承自官方文档 yyws xa.fundinfo(001180) # 交易标的信息 statb xa.record(path).status # path 位置的交易账单 csv yyws_t xa.trade(yyws, statb) yyws_t.dailyreport() {currentshare: 630.39, currentvalue: 504.12, date: datetime.datetime(2018, 8, 5, 0, 0), originalvalue: 523.86, returnrate: -3.7682, unitcost: 0.831, unitvalue: 0.79969999999999997} yyws_t.xirrrate(2018-08-01) -0.01764033506484772dailyreport()输出当前份额、现值、成本、收益率与单位成本/单位净值xirrrate(date)输出截至指定日期的年化 IRR 收益率是评估资金反复进出型账户的核心指标。3.1 status 账单的数据结构源码级解读账单是整个 xalpha 体系的输入原语其编码规则在 record.py 的类文档字符串中有完整定义这里必须掌握基本格式record读取 csv 账单第一行为date加各基金代码每行一个交易日期形如20170129。不同列代表不同基金不同行代表不同日期。无交易可留空或填 0申购为正数对应申购金额扣费前状态赎回为负数对应赎回份额——恰好对应基金「金额申购、份额赎回」原则。记录精度只完美支持一位小数。特殊标记利用小数位编码语义标记位置规则含义小数点后第 2 位为 5当日恰好是该基金分红日标记「分红再投入」否则默认分红拿现金该默认行为可反转赎回负数绝对值 0.005如-0.001标记赎回份额占总份额的比例而非份额数目-0.005对应全部赎回线性类推0.001即赎回 20%小数点后第 3 位为 5如-51.28515、200.205该笔交易的费用为自定义值标记位 5 之后代表 1% 位-51.28515表示赎回 51.28 份且赎回费为 1.5%200.205表示申购 200.2 元且申购费为 0基金性质位 property0-7 数字三个 0/1 开关相加得到 0-7 的十进制编码类似 Unix 文件权限位——份额四舍五入0还是全部舍弃1、默认现金分红0还是分红再投2、赎回对应份额0还是金额4只支持货币基金。该数字可写在记账单基金代码行头的下一行配合record(path, fund_propertyTrue)或直接在账单第二行日期栏写propertyrecord.py 中检测到df.iloc[0][date] property即自动启用也可在mul初始化时以字典传入。两种账单形态默认formatmatrix的矩阵式记账单formatlist为流水单共三列date/fund/trade日期形式为%Y/%m/%d与 matrix 不含/相区分读取后会自动透视聚合为 matrix 形式见 record.py 的实现。仓库测试目录提供了多种真实账单样例供对照包括 demo.csv、demo1.csv 等相关解析逻辑由 test_trade.py 与 test_universal.py 等测试覆盖。四、基金投资组合的管理分析使用xalpha.multiple.mul可以将多个基金交易类归总或者根据 status 表格上记录的基金代码自动汇总。如果选择xalpha.multiple.mulfix归总交易情况则所有交易视作封闭系统资金进出由虚拟的货币基金调节——这正是「总金额固定」的回测口径。代码示例继承自官方文档 invclose xa.mulfix(yyws_t, totmoney6000) invclose.combsummary() 基金代码 基金名称 基金成本 基金收益率 基金现值 0 001180 广发医药卫生联接A 523.86 -3.7682 504.12 1 mf 货币基金 5476.15 7.3475 5878.51 2 xxxxxx 总计 6000.01 6.3770 6382.63 invopen xa.mul(statusxa.record(path).status) invopen.combsummary(2018-07-01).iloc[-1] 基金代码 xxxxxx 基金名称 总计 基金成本 2379.52 基金收益率 -4.2559 基金现值 2278.25 Name: 5, dtype: object invopen.xirrrate(2018-07-01) -0.05594572489624858注意mulfix结果中虚拟货币基金行代号为mf末行xxxxxx为总计行combsummary(date)还支持指定日期做截面汇总组合级的xirrrate同样给出年化 IRR。从源码看 multiple.py 中mul类的构造传入status时会自动遍历账单列中的每个基金代码按 property 位解析出round_label/dividend_label/value_label并逐一构建trade(fundinfo(code, ...))实例因此只要账单里出现过的基金无需手动逐个构造交易对象还支持fetch/save本地文件缓存 IO与path传 SQLAlchemy engine、formsql的数据库持久化实现 csv 与数据库 IO 的无缝切换。combsummary等聚合方法内部复用 trade.py 中的xirrcal、vtradecost等量化函数。五、基金交易策略与回测通过额外导入policy模块使用xalpha.policy.policy的子类可以按一定策略生成模拟交易的 status 表格从而进行交易分析起到策略回测比较的作用。策略类对应实例的self.status属性即为该策略生成的 status 交易表格可直接送入上一节的trade/mul体系做分析。代码示例继承自官方文档 st xa.policy.buyandhold(yyws, 2016-01-01) # buy and hold from 2016-01-01, 且始终分红再投入 st2 xa.policy.scheduled(yyws, totmoney1000, timespd.date_range(2016-01-01, 2018-06-01, freqW-THU)) # 定投 status 的生成从 2016-01-01 到 2018-06-01 每周四进行定额定投 1000 元。对应源码 policy.py 中policy基类继承自record第 11 行buyandhold第 59 行与scheduled第 77 行是文档点名的两个现成策略前者生成「买入并持有 分红再投入」账单后者按给定日期序列pd.date_range的任意频率逐笔生成定额申购账单——由于账单本身支持变额变额定投与网格策略同样可以在此框架下用一行完成。六、交易策略的监视和定时提醒使用xalpha.realtime.review可以实现策略的监测和邮件发送即按自定义策略生成提醒脚本实现按计划买入和对市场的实时监控尤其适合复杂网格策略的执行——不需要自己再去看盘和计算执行条件与金额。review从 realtime.py 导出并已在包初始化时挂载具体用法可参考仓库文档示例目录 doc/samples 中的 Notebook以及 demo.rst 列出的示例索引。七、通用日线和实时数据获取器这是 xalpha 覆盖面最广的子系统由 universal.py 实现三个函数均以「代码」为唯一入参直接返回 DataFrame/jsonxalpha.universal.get_daily给定代码返回日线 DataFrame。覆盖沪深市场的股票、基金、ETF、LOF、可转债债券香港市场的股票与指数美国市场的股票、指数、ETF人民币兑外币中间价以及其他在 investing.com 上可访问的金融产品的日线数据。还包括可从标普、FT 和彭博网站找到的标的数据以及以聚宽为数据源的指数估值数据、基金份额数据、指数总盈利/总资产数据和宏观经济数据。xalpha.universal.get_rt给定代码返回实时数据 json。覆盖沪深市场的股票、场内基金、ETF、LOF、可转债债券港股、美股市场的股票、指数、ETF及其他 investing.com 标的。xalpha.universal.get_bar给定代码返回相应标的的分钟线、5 分钟线、小时线、周线等不同频率的近期分时数据。代码示例继承自官方文档含多种市场的数据形态 xa.get_daily(EUR/CNY, prev5) # 人民币中间价数据 date close 4 2020-03-30 7.8288 3 2020-03-31 7.8088 2 2020-04-01 7.8090 1 2020-04-02 7.7678 0 2020-04-03 7.7081 xa.get_daily(currencies/usd-cnh) # 英为离岸人民币 date open close high low percent 260 2019-04-05 6.7167 6.7122 6.7194 6.7033 -0.07% ... 3 2020-03-31 7.1133 7.0940 7.1177 7.0796 -0.29% 2 2020-04-01 7.0932 7.1230 7.1336 7.0772 0.41% 1 2020-04-02 7.1216 7.0929 7.1422 7.0846 -0.42% 0 2020-04-03 7.0919 7.1108 7.1197 7.0857 0.25% xa.get_daily(FT-ZGLD:SWX:CHF, start2020-03-01) # ft.com 基金数据 date open close high low 24 2020-03-02 470.10 465.30 472.05 463.75 ... 3 2020-03-31 475.70 474.00 475.70 469.80 2 2020-04-01 466.90 468.10 470.80 464.10 1 2020-04-02 468.45 476.75 479.80 467.40 0 2020-04-03 477.80 481.00 483.00 477.55 xa.get_daily(HK00700, prev5, end2018-08-08) # 雪球港股数据 date open close high low percent 198 2018-08-03 347.2475 348.8432 353.6300 345.6519 1.39 ... 201 2018-08-08 365.5972 363.0043 365.5972 359.6136 1.96 xa.get_daily(SH000050, prev10) # 雪球A股指数数据 date open close high low percent 3 2020-03-25 2203.7900 2206.63 2216.0700 2188.3800 2.41 ... 10 2020-04-03 2197.7113 2195.55 2210.2124 2188.8462 -0.41分钟/小时线get_bar示例 xa.get_bar(LK, interval3600, prev12) # 雪球美股小时线数据 date open high low close volume turnoverrate percent 0 2020-04-03 00:30:00 7.3001 7.60 6.71 7.0497 30253047 12.58 -3.23 ... 11 2020-04-04 03:30:00 5.6300 5.84 5.54 5.6550 5066923 2.01 0.53 xa.get_bar(commodities/brent-oil, interval60) # 英为油价分钟线 date close 0 2020-04-04 04:36:00 34.87 ... 23 2020-04-04 04:59:00 34.83实时数据get_rt示例 xa.get_rt(SH501018) # 实时行情数据 {name: 南方原油LOF, current: 0.826, percent: -0.48, current_ext: None, currency: CNY, market: CN} xa.get_rt(indices/germany-30) # 海外指数实时数据 {name: 德国DAX30指数 (GDAXI), current: 9525.77, current_ext: None, currency: EUR, percent: -0.47, market: DE}7.1 vinfo任何日线标的都能「套壳」为 info 类更有趣的是任何get_daily可获取的标的都可以用vinfo套壳成第二节介绍的 info 类从而进行模拟交易和组合分析——不管其底层是原油、汇率甚至是 AH 比价。代码示例继承自官方文档 oil xa.vinfo(commodities/brent-oil, start20180101) oil.info() fund name: 伦敦布伦特原油期货 - 2020年6月 (LCOM0) fund code: commodities/brent-oil fund purchase fee: 0% # 如上的 oil info 对象也可以进行 trade 交易和 mul 组合分析 oil.max_drawdown() (Timestamp(2018-10-03 00:00:00), Timestamp(2020-03-31 00:00:00), -0.736470042878665)这体现了 xalpha 的范式统一性info → trade → mul → policy的分析链路对基金、指数和任意通用行情标的完全一致vinfo/VInfo从 universal.py 导出并经init.py 挂载到包顶层因此写作xa.vinfo即可调用。八、功能综述鉴于快速开始只涵盖极小一部分功能官方文档同时整理了 xalpha 模块的完整功能清单共 21 项继承自原文档全部基金包括货币基金的信息获取指定一个代码就能了解基金名称、历史单位净值、历史分红送转情况、折扣申购费、不同持仓时长的赎回费等多样的信息。全部 A 股指数的信息获取同样是一个代码获取指数名称和每日净值。所有基金指数数据支持增量更新csv 文件和数据库 io 的无缝支持。可以对多只基金和指数同时进行量化分析给出走势分布和相关性分析。虚拟可调的货币基金类型除了前述的真实货币基金类外还可以建立虚拟的货币基金类来模拟理财等的行为或单纯作为量化的基准实现更灵活的仓位管理。只需最简的账单外加一个代码就可以精确模拟一只基金用户的全部交易行为并输出各种量化数据和可视化。大量基于回测的量化数据和基于趋势交易的技术面指标工具箱。只需一个最简的账单就可实现多基金投资系统的投资精确模拟同时提供总金额固定和总金额变动两个选项可以显示全部基金投资的总结表和多样的持仓与交易量化包括折线图、河流图、饼图、柱形图等。所有可视化均为可交互的 web 级可视化方案。可以非常简便地制定各种基于日期和点数的定投策略包括变额定投和复杂的网格策略均可以一行完成并进行详细的回测分析与可视化展示。可以基于净值或各种技术指标的交叉、点位设计复杂的交易策略并回测效果进行定量分析。可以根据自定义的策略建立邮件按时提醒脚本从此实现按计划买入和对市场的实时监控尤其适合复杂网格策略的执行。使用通用的金融数据日线 API轻松获取不同数据进行交叉分析数据包括但不限于 A 股市场、港股市场和美股市场的指数、基金、股票等标的A 股的债券和可转债所有 investing.com、bloomberg.com、spindices.com 上的标的数据人民币中间价数据场内基金份额数据。获取实时的各地市场股票、基金数据包括计价货币和实时盘外价格。基于指数权重和企业财报得到的 A 股各指数历史估值情况和实时估值位置总结。获取宏观经济数据和计算相应指数的总净资产与总盈利。QDII 基金的 T-1 日净值预测和 T 日净值实时预测的基础设施。获取雪球和英为支持标的的、不同频率的近期分时数据和聚宽源的 A 股任意时间段的分时数据。获取基金的股票和债券持仓数据不止十大权重可以覆盖全部持仓。获取整个基金组合的底层股票持仓细节统计和不同类型的仓位用于更底层的审视基金组合或追踪机构持仓。可转债全自动定价与估值自动分析可转债内在价值、期权价值、到期收益率等。支持多基金的完整动态可编程的回测引擎。九、小结与延伸阅读xalpha 在 Qbot 仓库中的价值在于把「基金投资研究」抽象成一条可复用的数据链路fundinfo/indexinfo/vinfo提供统一的标的抽象 →record用最简 csv 账单编码真实交易 →trade精确还原单标的交易行为 →mul/mulfix汇总组合并支持开放/封闭两种资金口径 →policy一行生成策略账单完成回测 →review落地为定时提醒。所有关键约定指数 7 位代码、netvalue/totvalue双列、账单小数位标记、property 0-7 性质位均已在 record.py 与 multiple.py 的源码中逐条可查。建议按以下路径继续深入doc/source/demo.rst基本用法与研究案例的 Notebook 索引基金信息、组合管理、单标的交易、策略生成等doc/source/advance.rst数据结构与模块设计的高级用法doc/samples随仓库提供的示例 Notebook 与脚本pyfunds/backtest/tests含demo*.csv账单样例与test_trade.py、test_universal.py等可执行测试用于核对各 API 行为。适用前提提醒xalpha 依赖 Python 3 及 pandas/pyecharts 等第三方库见 requirements.txt通用行情获取器依赖 investing.com、雪球等外部数据源接口数据可得性受对应站点接口稳定性影响实际使用前建议先用prev/start等参数小样本验证。【免费下载链接】Qbot[updating ...] AI 自动量化交易机器人(完全本地部署) AI-powered Quantitative Investment Research Platform. online docs: https://ufund-me.github.io/Qbot ✨ :news: qbot-mini: https://github.com/Charmve/iQuant项目地址: https://gitcode.com/GitHub_Trending/qbot/Qbot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考