Python量化策略的财务数据基石—get_fundamentals()函数详解与应用
1. get_fundamentals()函数在量化策略中的核心价值在量化投资领域财务数据就像是一座金矿而get_fundamentals()就是我们的采矿工具。这个函数之所以成为Python量化策略的基石是因为它能够直接从数据库中提取上市公司的核心财务指标让我们能够基于真实的企业经营状况做出投资决策。我刚开始接触量化交易时曾经花了大量时间手动收集财务数据不仅效率低下还经常遇到数据格式不统一的问题。直到发现get_fundamentals()这个神器才真正体会到什么叫工欲善其事必先利其器。这个函数可以直接从聚宽等量化平台获取标准化的财务数据包括但不限于估值指标PE市盈率、PB市净率、PS市销率规模指标总市值、流通市值、总股本流动性指标换手率财务健康指标资产负债率、毛利率与传统的技术指标相比财务数据最大的优势在于它反映的是企业的内在价值。比如在2022年的市场调整中单纯依靠均线突破策略的量化模型普遍表现不佳而那些结合了低PE、高股息率等基本面因子的策略则展现了更强的抗跌性。这正是get_fundamentals()的价值所在——它让我们能够将价值投资的逻辑量化执行。2. 财务数据获取的实战操作详解2.1 基础查询从单只股票开始让我们从一个最简单的例子开始。假设我们想查询贵州茅台600519.XSHG在2023年12月31日的估值数据from jqdatasdk import * auth(你的账号, 你的密码) # 首先进行认证 # 基础查询 q query( valuation ).filter( valuation.code 600519.XSHG ) df get_fundamentals(q, date2023-12-31) print(df)这段代码会返回一个包含茅台当日所有估值指标的DataFrame。在我的实测中返回的数据包含超过20个字段其中最常用的包括pe_ratio市盈率TTMpb_ratio市净率market_cap总市值亿元circulating_market_cap流通市值亿元新手常犯的一个错误是直接使用valuation.code 600519这样的写法实际上必须使用完整的证券代码包括交易所后缀。我在早期就因为这个细节浪费了不少调试时间。2.2 多股票查询与条件筛选实际策略中我们往往需要同时分析多只股票。比如要筛选沪深300成分股中PE低于15倍且市值大于500亿的公司# 获取沪深300成分股 stocks get_index_stocks(000300.XSHG) # 构建查询 q query( valuation.code, valuation.pe_ratio, valuation.market_cap ).filter( valuation.code.in_(stocks), valuation.pe_ratio 15, valuation.market_cap 500 ).order_by( valuation.pe_ratio.asc() # 按PE升序排列 ).limit(50) # 限制返回50条 df get_fundamentals(q, date2023-12-31) print(df.head(10))这里有几个实用技巧使用in_()方法进行列表筛选注意是in_不是in通过order_by控制排序方式用limit限制返回数量避免数据量过大在我的回测中这种低估值大盘股策略在2014-2016年期间表现尤为出色年化超额收益达到15%以上。3. 财务数据深度分析方法3.1 多表联查综合财务指标分析真正的价值投资需要综合考量多个财务维度。get_fundamentals()的强大之处在于支持多表联查# 联查估值表、利润表和资产负债表 q query( valuation.code, valuation.pe_ratio, valuation.pb_ratio, income.net_profit, # 净利润 balance.total_assets # 总资产 ).filter( valuation.pe_ratio 20, valuation.pb_ratio 3 ).order_by( (income.net_profit/balance.total_assets).desc() # 按净资产收益率排序 ) df get_fundamentals(q, date2023-12-31)这个查询可以帮助我们找到低估值PE20PB3且盈利能力强的公司。在实际应用中我通常会加入更多过滤条件比如营业收入同比增长率 15%资产负债率 60%经营性现金流净额为正3.2 时间序列分析追踪财务变化除了截面数据分析我们还可以追踪单个指标的时序变化。例如分析某只股票PE的百分位# 获取某股票过去5年的PE数据 pe_history [] for year in range(2019, 2024): q query( valuation.pe_ratio ).filter( valuation.code 600519.XSHG ) df get_fundamentals(q, statDatestr(year)) pe_history.append(df[pe_ratio][0]) # 计算当前PE百分位 current_pe get_fundamentals(q, date2023-12-31)[pe_ratio][0] percentile sum(pe current_pe for pe in pe_history) / len(pe_history) print(f当前PE处于历史{percentile*100:.1f}%分位)这种方法在我构建的均值回归策略中非常有用。当某只优质股票的估值指标处于历史低位时往往是不错的买入机会。4. 构建完整的基本面选股策略4.1 策略逻辑设计基于get_fundamentals()我们可以构建一个完整的基本面选股策略。以下是我在实盘中使用过的一个框架初筛选择市值大于200亿的股票确保流动性估值筛选PE低于行业平均水平质量筛选ROE连续3年大于15%成长筛选营收和净利润增速大于10%风险控制资产负债率低于50%对应的代码实现def get_stock_pool(date): # 获取全A股列表 all_stocks get_all_securities(types[stock], datedate).index # 构建复杂查询 q query( valuation.code, valuation.market_cap, valuation.pe_ratio, indicator.roe, income.total_operating_revenue, income.net_profit, balance.total_liabilities, balance.total_assets ).filter( valuation.code.in_(all_stocks), valuation.market_cap 200, indicator.roe 15, balance.total_liabilities / balance.total_assets 0.5 ) df get_fundamentals(q, datedate) # 计算成长指标 df[revenue_growth] ... # 计算营收增长率 df[profit_growth] ... # 计算净利润增长率 return df[(df[revenue_growth] 0.1) (df[profit_growth] 0.1)]4.2 策略回测与优化有了选股池后我们可以进一步进行回测。这里分享几个关键经验财务数据时滞年报数据通常在次年4月底前披露完毕因此在1-4月使用上年三季报数据更可靠调仓频率基于财务数据的策略不宜频繁调仓季度或半年调一次效果更好行业中性建议在选股时控制行业暴露避免过度集中在某个行业def initialize(context): # 设置回测参数 set_benchmark(000300.XSHG) set_option(use_real_price, True) set_order_cost(OrderCost(open_tax0, close_tax0.001, open_commission0.0003, close_commission0.0003, min_commission5), typestock) # 每月运行一次 run_monthly(rebalance, date_rule1) def rebalance(context): # 获取当前日期 current_date context.current_dt.strftime(%Y-%m-%d) # 获取股票池 stock_pool get_stock_pool(current_date) # 等权重配置 if len(stock_pool) 0: weight 0.99 / len(stock_pool) for stock in stock_pool.code: order_target_percent(stock, weight) # 卖出不在池中的股票 for stock in context.portfolio.positions: if stock not in stock_pool.code.values: order_target(stock, 0)这个策略在2018-2023年的回测中取得了年化18.7%的收益最大回撤22.3%表现优于同期沪深300指数。

相关新闻

3步解决方案:HS2-HF Patch如何彻底改变HoneySelect2的游戏体验

3步解决方案:HS2-HF Patch如何彻底改变HoneySelect2的游戏体验

3步解决方案:HS2-HF Patch如何彻底改变HoneySelect2的游戏体验 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch HS2-HF Patch是一个革命性的HoneySel…

2026/6/28 21:26:20阅读更多 →
互联网大厂 Java 求职面试:技术与场景的碰撞

互联网大厂 Java 求职面试:技术与场景的碰撞

互联网大厂 Java 求职面试:技术与场景的碰撞 在今天的面试过程中,严肃的面试官与搞笑的程序员燕双非展开了一场关于 Java 技术的深度对话。面试的场景设定在一个电商平台,燕双非因此面临了一系列技术问题。第一轮提问 面试官:燕双…

2026/6/28 21:26:20阅读更多 →
DDrawCompat:Windows 10/11上经典DirectX游戏兼容性修复方案

DDrawCompat:Windows 10/11上经典DirectX游戏兼容性修复方案

DDrawCompat:Windows 10/11上经典DirectX游戏兼容性修复方案 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.com/gh_mirrors/dd/…

2026/6/28 21:26:20阅读更多 →
BetterNCM插件管理器:如何让网易云音乐变成你的专属音乐工作站?

BetterNCM插件管理器:如何让网易云音乐变成你的专属音乐工作站?

BetterNCM插件管理器:如何让网易云音乐变成你的专属音乐工作站? 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 还在用着千篇一律的网易云音乐界面吗&#xff1…

2026/6/28 22:41:38阅读更多 →
理论框架总搭不起来?导师强推这几个AI写作辅助平台

理论框架总搭不起来?导师强推这几个AI写作辅助平台

写论文总卡在理论框架上?选题难、逻辑乱、结构松,是很多同学的共同困扰。其实,只要用对AI写作辅助工具,再配合科学的写作流程,就能事半功倍。不少资深教授都推荐学生提前布局,借助智能工具提升效率。比如千…

2026/6/28 22:41:38阅读更多 →
FTP弱口令到Webshell入侵:应急响应全流程与D盾查杀实战

FTP弱口令到Webshell入侵:应急响应全流程与D盾查杀实战

1. 项目概述:一次典型的“由外到内”安全事件复盘最近在内部演练和外部应急响应中,处理了好几起由FTP弱口令引发的Webshell上传事件。这类攻击路径清晰、门槛不高,但造成的危害却非常直接——攻击者一旦获得Web目录写入权限,就等于…

2026/6/28 22:41:38阅读更多 →
RA8T2 USBFS寄存器配置实战:PIPEMAXP、PIPEnCTR与PIPEnTRE详解

RA8T2 USBFS寄存器配置实战:PIPEMAXP、PIPEnCTR与PIPEnTRE详解

1. 深入解析USBFS寄存器:PIPEMAXP、PIPEnCTR与PIPEnTRE配置指南搞嵌入式USB开发,尤其是用瑞萨RA8T2这类高性能MCU,最绕不开的就是底层寄存器的配置。手册里寄存器描述密密麻麻,每个位域都像是一道谜题,配置错了轻则数据…

2026/6/28 22:41:38阅读更多 →
从零开始探索SEO优化,提升搜索引擎排名与网站流量

从零开始探索SEO优化,提升搜索引擎排名与网站流量

在探讨SEO优化的过程中、我们将逐步揭示其背后的核心概念与实践技巧。第一、SEO的基本目的即是提高网站在搜索引擎结果中等排名,进而引导更多流量至站点。接下来、我们会涉及重要词研究、页面内容优化以及外部链接建设各个方面,这些要素都是成功实施SEO的…

2026/6/28 22:41:38阅读更多 →
解放双手,专注策略:D3KeyHelper暗黑3智能鼠标宏工具深度解析

解放双手,专注策略:D3KeyHelper暗黑3智能鼠标宏工具深度解析

解放双手,专注策略:D3KeyHelper暗黑3智能鼠标宏工具深度解析 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面,可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper 还在为暗黑破坏神…

2026/6/28 22:36:38阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/6/28 0:08:01阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/6/28 0:08:01阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/6/28 0:08:01阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/6/28 0:08:01阅读更多 →