学习笔记
金融量化分析学习笔记:从市场基础到经典策略纵览
博客园 Hear7(caodneg7)的一份量化分析学习笔记长文。价值在于「全景纵览」:它把一条学习路径串起来——A 股市场基础 → Python 数据工具 → 自建回测框架的思路 → 聚宽平台上的九类经典策略(含完整代码)。素材见 raw/collections/quant-survey-notes/01-金融量化分析-hear7-博客园.md。
这是什么
一份课程笔记式的量化入门长文,正文分四部分:一、金融与量化投资(股票市场常识 + 量化是什么);二、量化投资与 Python(IPython / NumPy / pandas / Matplotlib 工具教程);三、实现简单的量化框架(自建回测要哪些零件);四、在线平台与量化投资(聚宽 JoinQuant 平台 + 双均线/小市值/均值回归/布林带/PEG/羊驼/海龟/鳄鱼等经典策略的完整聚宽代码)。它的多数策略与本站量化课堂同源,但这份笔记胜在「一份文件纵览全部 + 代码最完整」。
核心要点
第一部分:A 股市场与量化基础
- 股票是股份公司发给出资人的凭证,持有者即股东。面值是票面金额,市值是市场价值。IPO = 公司经交易所公开向社会增发股票募资。股票的用途:出资证明/股东身份/参与经营意见 + 分红与交易获利。
- 股票分类按业绩:蓝筹股(资本雄厚、信誉优良)、绩优股(业绩优良)、ST 股(特别处理:连续两年亏损或每股净资产低于股票面值)。
- 按上市地:A 股(大陆,人民币,T+1、涨跌幅 10%)、B 股(大陆,外币,原文标 T+1、T+3,未展开)、H 股(香港,T+0、不设涨跌幅)、N 股(纽约)、S 股(新加坡)。
- 市场构成:上市公司、投资者(含机构)、证监会/证券业协会/交易所、证券中介。交易所:上交所只有一个主板(沪指);深交所有主板(深成指)、中小板、创业板。
- 影响股价的六类因素:公司自身(基本面最根本)、行业、市场(大户操纵/投机等)、心理(情绪与从众)、经济(周期/财政/汇率)、政治。
- A 股交易规则:个人须在券商开户委托;交易日周一至周五;时段为 9:15–9:25 开盘集合竞价、9:30–11:30 前市连续竞价、13:00–15:00 后市连续竞价、14:57–15:00 深交所收盘集合竞价;T+1(买入次日才能卖);涨跌停。
- 金融分析两派:基本面(宏观财政货币 → 行业 → 公司财务业绩)与技术面(K 线、MA、KDJ、MACD 等指标)。
- 量化投资 = 用计算机技术 + 数学模型去实践投资理念、实现投资策略。四点优势:避开主观情绪/人性弱点/认知偏差更客观;能同时多角度、多层次观察;及时跟踪市场发现新统计模型找机会;决策前能用回测验证效果。
- 量化策略核心内容四件:选股、择时、仓位管理、止盈止损。生命周期五步:产生想法/学知识 → 用 Python 实现 → 回测/模拟交易检验 → 实盘 → 优化或放弃。
第二部分:Python 工具链
- 为什么选 Python:相对 Excel、SAS/SPSS、R。三条使用路线:自己写(NumPy+pandas+Matplotlib…)、在线平台(聚宽、优矿、米筐、Quantopian)、开源框架(RQAlpha、QUANTAXIS)。
- IPython:交互式命令行。要点:TAB 自动补全、
?内省、!执行系统命令、%run/%paste/%cpaste、魔术命令(%timeit、%pdb等)、命令历史、输入输出变量(_、_2、_i2)、%bookmark目录书签、Notebook。 - NumPy:高性能科学计算基础包,pandas 建在它上面。核心是 ndarray 多维数组;特性:元素同型、无需循环的整组运算、读写磁盘、线性代数/随机数/傅里叶、可接 C/C++。
- pandas:数据分析包,基于 NumPy。两大结构 Series(带标签一维)与 DataFrame(表格,可看作共用索引的 Series 字典);集成时间序列;灵活处理缺失数据。
- Matplotlib:绘图可视化。plot 的线型/点型/颜色、title/xlabel/ylabel、hist、figure 画布 + subplot 子图 + subplots_adjust 调间距。
第三部分:自建量化框架要哪些零件
- 七个零件:开始/结束时间、现金与持仓数据 → 获取历史数据 → 交易函数 → 计算并绘制收益曲线 → 回测主体框架 → 计算各项指标 → 留给用户写:初始化函数与每日处理函数。这一节说明:一个最小回测框架 = 数据 + 撮合 + 记账 + 指标,用户只需填「策略逻辑」。
第四部分:聚宽平台与九类经典策略
- JoinQuant 主要框架:
initialize(初始化)+handle_data(每个周期调用);取历史数据、交易函数、按天/按分钟回测、风险指标。多篇代码共用一套成本设置模板:OrderCost(close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5)。 - 双均线(单股版):对 601318.XSHG,5 日与 60 日均线金叉全仓买入、死叉清仓(
attribute_history取收价、order_value/order_target)。均线周期分类:5/10 日短线、30/60 日中期(季线)、120/240 日长期(年线)。 - 小市值(因子选股):沪深 300 池,每 30 日
get_fundamentals(query(valuation)...)取市值字段、排序取最小 N=10 只,卖出不在名单的、等分现金买入新进名单的。 - 多因子选股:正文只讲思路(因子 = 增长率/市值/ROE 等标准;选因子最大或最小的 N 只;多因子 = 如何同时考虑多个因子),无独立代码。
- 均值回归:理论 =「跌下去迟早涨回来」,价格以均线为中心波动。用 30 日均线与当日开盘价算偏离度 (MA−P)/MA,每月(
run_monthly)选偏离度最高的 10 只调仓(沪深 300 池)。 - 布林带(Bollinger Band):中轨 20 日均线 ± N 倍 20 日标准差(N=2)。演示为反着用:价格突破上轨且已持仓则卖出、跌破下轨且空仓则买入——典型的均值回归式布林。
- PEG 策略:PEG = PE ÷ G ÷ 100(G = 净利润同比增速),越低越可能低估。先过滤 PE 与净利润增速为负的股票(沪深 300 池、30 日调仓、取 PEG 最小 10 只)。字段用聚宽
valuation.pe_ratio与indicator.inc_net_profit_year_on_year。 - 羊驼交易法则:随机买入 N=10 只;每 30 日(
run_monthly(handle,2))用区间涨幅排序,卖掉涨幅最差的 1 只,再买入池内不在持仓且涨幅居前的一只补位(约 9 成资金)。 - 海龟交易法则(分钟回测演示):唐奇安通道 20 日高点入市、10 日低点离场;N(ATR 类波动率)用「真实波幅三选一取最大再滚动平均」算;每单位仓位 = 总资产 1% ÷ N;价格比上次买入高 0.5N 加一单位、跌破最后买入价 −2N 止损。单标的演示(000060.XSHE)。
- 鳄鱼交易法则(注释指到聚宽社区 post 595):用蓝/红/绿三条均线纠缠判定「睡着的鳄鱼」(三条线互相偏离 <2%,近 20 日都要「纠缠」才入选),结合碎形(fractal)突破与 AO/AC 动量指标进出场;风控分三层——大盘 3 日跌 3% 全清、个股累计收益 +30% 止盈、−10% 止损;约每半年重选股票池。
机制 / 论证
- 为什么量化能避免情绪:人的弱点(追涨杀跌、从众、判断失误)来自主观与心理因素;把规则固定成代码后,决策不经过情绪。这告诉我们:量化的卖点是纪律与可回测,不是预测更准。
- 为什么策略核心是四件事:选股定「买什么」、择时定「何时买」、仓位管理定「买多少」、止盈止损定「怎么离场」——任何策略都落在这四个旋钮上(与本站 量化策略的组成(输入 / 逻辑 / 输出) 一致)。
- 为什么「回测验证」是量化的关键优势:策略能先在历史数据上检验、模拟交易后再上实盘——这给了「先试错后下注」的能力;但回测本身的偏差问题要另看 QuantStart 方法论。
- 经典策略的机制各一句话:
- 双均线:短均线上穿长均线=买的人愿出更高价(强势),反之弱势。
- 小市值/因子:用一条可量化标准(市值最小)选出市场冷落的股票,赌它被纠偏。
- 均值回归:价格围绕均线波动,偏离越多越可能弹回(反趋势)。
- 布林带:价格突破统计带(均线 ± Nσ)就是超买/超卖信号。
- PEG:把「贵不贵」和「长得快不快」压成一个数,越低越像被低估的成长股。
- 羊驼:趋势的朴素赌注——卖掉表现差的,留表现好的(动量端)+ 随机换入(分散端)。
- 海龟:趋势跟踪 + 波动率仓位——突破进场、用 N 控每笔风险(单笔约 1%)。
- 鳄鱼:均线纠缠=蓄势(鳄鱼睡觉),突破+动量确认=启动(鳄鱼张嘴),吃趋势的一段。
可操作
- 本页代码是全批最完整的聚宽示例;不重贴代码,把关键 API 与参数提炼如下(均来自 raw 各策略代码块):
- 全局模板:
set_benchmark('000300.XSHG')、set_option('use_real_price', True)、set_order_cost(OrderCost(close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5), type='stock')。 - 入口:
initialize(context)一次;handle_data(context, data)每日/每周期;before_trading_start(context)开盘前(海龟用它算当日 N);定时任务用run_monthly(fn, 1)(每月第 1 个交易日)、run_monthly(handle, 2)。 - 取数:
attribute_history(stock, N)(N 日收价均线)、attribute_history(stock, 2, '1d', ('high','low','close'))(多字段)、history(period, field, security_list)、get_index_stocks('000300.XSHG')(沪深 300 成分)、get_current_data()[stock].day_open(当日开盘价)。 - 财务取数:
get_fundamentals(query(valuation).filter(valuation.code.in_(pool))),字段例valuation.market_cap(市值)、valuation.pe_ratio(PE)、indicator.inc_net_profit_year_on_year(净利润同比)。 - 下单:
order(security, unit)(按股数)、order_value(stock, cash)(按金额)、order_target(stock, 0)(清仓到 0)、order_target_value(stock, 0)(按目标金额清仓)。 - 状态:
context.portfolio.positions(持仓字典)、context.portfolio.available_cash/.cash、context.portfolio.total_value、context.current_dt;用户变量放g.xxx。
- 全局模板:
- 策略参数速查表:
策略 股票池 调仓/频率 关键参数 买卖规则 双均线(单股) 601318 每日 handle_data MA5/MA60 金叉买、死叉卖 小市值 沪深300 每 30 日 N=10 市值最小 10 只 均值回归 沪深300 每月 1 次 MA30、10 只 偏离度 (MA−P)/MA 最大 10 只 布林带 600036 等 每日 MA20、±2σ 破上轨卖、破下轨买 PEG 沪深300 每 30 日 N=10、滤负值 PEG 最小 10 只 羊驼 沪深300 每 30 日 N=10、每次换 1 只 卖最差 1 只、补涨幅高者 海龟 单标的 000060 分钟 20 日入/10 日出、0.5N 加仓、2N 止损、unit=1%资产/N 突破买、止损离场 鳄鱼 沪深300 约半年换池 + 每日 handle 三线 <2% 纠缠、AO/AC、止盈 +30%/止损 −10%、大盘 −3% 碎形突破 + AO/AC 上行进场 - Python 工具要点(只列可操作条目):NumPy 创建(array/arange/linspace/zeros/ones/empty/eye)、切片是视图需
copy()、布尔索引a[a>5]、&/|组合条件、ufunc 与统计方法(sum/mean/std/min/max/argmin);pandas 的 loc(标签)/iloc(下标)区分、索引对齐、NaN 处理(dropna/fillna/isnull)、pd.to_datetime/date_range、read_csv/to_csv 参数;IPython 魔术命令与%run。
与量化课堂同源对照
本篇多数策略在聚宽量化课堂有对应专篇:本篇是入门纵览(带完整代码),量化课堂页是系统深度版。逐策略对应:
- 双均线 ↔ 双均线策略——本篇为单股 MA5/60,课堂版为多股票版。
- 海龟 ↔ 海龟策略——唐奇安通道 + N 值仓位同源。
- 羊驼 ↔ 羊驼交易系统——「卖差补强」同源。
- 均值回归 ↔ 均值回归进阶策略——偏离度选超跌同源;课堂版把「偏离多少算超跌」统计化。
- PEG ↔ 彼得·林奇的成功投资(PEG 估值入门) 与 PEG 动态选股策略——PEG=PE÷G 同源。
- 小市值/因子选股 ↔ 多因子策略入门——因子选股思路同源。
- 均值回归式布林带 ↔ 均值回归(买超跌赌反转)——本篇为「破上轨卖、破下轨买」的反向布林变体。
- 鳄鱼法则在量化课堂无对应专篇,仅本篇展开。
术语
- 蓝筹 / 绩优 / ST:按业绩分的股票类别;ST = 连续两年亏损或每股净资产低于面值(以当时规则为准)。
- A/B/H/N/S 股:按上市地与币种分的股票。
- T+1 / T+0:买入后第几个交易日才能卖出。
- 集合竞价 / 连续竞价:开盘、收盘时段的撮合方式。
- 涨跌停:单日价格波动上限(A 股 10%)。
- K 线、MA、KDJ、MACD:常用技术指标。
- 量化投资:计算机 + 数学模型执行投资理念。
- 因子:一条可量化的选股/择时标准(增长率、市值、ROE…)。
- 金叉 / 死叉:短均线上穿/下穿长均线。
- 唐奇安通道:前 N 日最高/最低价构成的通道(海龟用)。
- N 值 / Unit:海龟的波动率度量与标准仓位单位(单笔风险≈总资产 1%)。
- 偏离度 (MA−P)/MA:价格相对均线的超跌/超涨程度。
- 布林带:均线 ± N 倍标准差的价格统计带。
- PEG:市盈率 ÷ 盈利增长率。
- 碎形(fractal)、AO、AC:Bill Williams 鳄鱼系统的价格形态与动量指标。
- 回测 / 模拟交易:历史数据验证 / 实时行情联动的试运行。
不确定 / 待验证
- 这是博客园个人学习笔记(Hear7/caodneg7,链接约 2018-12 发布),信息是二手整理,非官方文档;部分规则有时代与口径风险:B 股「T+1 交易、T+3 交收」、ST 定义、涨跌幅等应以现行交易所规则为准 [需要验证]。
- 代码带时代痕迹:多处
print x(Python 2 写法)、df.sort(columns=...)(旧 pandas 写法)、print g.buy_stock——代码只作学习示意,落地以聚宽现行官方 API 为准 [需要验证]。 - 「动量策略」「反转策略」「小市值策略」在正文只出现在策略清单里,没有独立小节(小市值由因子选股代码承担)——本篇实际展开的是列出的八段代码策略。
- 各策略无回测收益数字、无基准与区间,无法评价好坏;鳄鱼法则来源只给聚宽社区链接(post 595),非原作者署名确认。
- 与本站更系统的同主题页(量化课堂、聚宽入门)相比,本篇属入门纵览;有出入处以量化课堂/官方文档为准。
相关
- 金融量化分析笔记(Hear7·博客园) — 本笔记所属 collection(本篇即全部内容)
- 聚宽量化课堂(低频量化策略 43 篇) — 同源策略的系统版(双均线/海龟/羊驼/均值回归/PEG/因子均在量化课堂有专篇)
- 趋势跟踪(顺势而为的策略家族) — 双均线、海龟、鳄鱼同属趋势跟踪家族
- 均值回归(买超跌赌反转) — 均值回归、布林带、反转的系统版
- 因子选股(排名 / 打分 / 阈值筛选) — 小市值/因子/多因子选股的统一框架
更新 2026-09-06