零基础入门金融量化分析:概念+代码+完整策略全解
  zzzz~ 3天前 60 0

零基础入门金融量化分析:概念+代码+完整策略全解

一、先搞懂核心:什么是金融量化分析

1.1 通俗定义

金融量化分析,简单说就是用数据、数学、统计+计算机代码,代替人脑主观判断,去分析市场、做投资决策、管控风险的方法。咱们普通人炒股靠感觉、听消息,量化就是把这些“感觉”变成可计算、可验证、可复制的规则,彻底摆脱情绪干扰,让投资更理性、更系统。

对比来看:主观投资是“我觉得这只股票会涨”,量化投资是“数据显示满足XX条件的股票,历史上涨概率超70%,我按这个规则执行”。

1.2 专业定义

量化分析(QA)是运用数学模型、统计方法、计算机算法,对金融市场的海量数据(股价、成交量、财务数据、行情数据等)进行处理、挖掘规律、验证逻辑,最终实现资产定价、策略构建、交易执行、风险管控的全流程金融分析手段,是现代投资、风控、资管领域的核心工具。

1.3 量化分析核心流程(大局观)

不管多复杂的量化项目,都逃不开这套闭环:数据获取→因子挖掘→信号生成→策略构建→回测验证→风控落地→实盘优化,后续内容也会顺着这个流程,一步步拆解实操。


二、量化核心概念精讲:按衍生逻辑梳理,吃透概念关联与底层逻辑

量化核心概念并非孤立存在,而是遵循“基础数据加工→有效特征提炼→交易指令生成→完整体系搭建→风险兜底保障”的链路层层衍生,我将按这个递进顺序讲解,先讲最基础的单元,再推导进阶概念,彻底理清彼此关联,告别概念混淆。

2.1 指标:量化分析的基础标尺(最底层单元)

定义

指标是对原始金融数据(股价、成交量、财务数据等)做最简单的加工计算,得到的直观数值,是量化分析里最基础、最底层的工具,没有复杂逻辑,只是数据的直观呈现。

核心作用

直观反映市场、个股的当下状态,比如涨跌、波动、热度,是后续提炼有效因子、生成交易信号的核心原料,相当于量化分析的“基础零件”,没有指标就没法做后续的因子挖掘。

通俗类比

就像我们评价一个人的身体状态,身高、体重、体温就是最基础的指标,单纯看数值能知晓基础情况,没法直接判断健康优劣,但却是后续评估的基础。

常见示例

  • 量价类:均线(MA)、涨跌幅、换手率、成交量;

  • 财务类:净利润、营业收入、总资产;

衍生关联:指标是所有量化概念的起点,只有先算出基础指标,才能从中筛选出能赚钱的有效因子,是后续一切复杂概念的根基。

定义

因子是能系统性解释资产收益差异、预测涨跌的核心变量,是从海量数据里提炼出的“有效特征”,相当于判断股票好坏的“打分项”。

核心作用

挖掘市场隐藏规律,筛选优质标的,是构建策略的核心原料。没有有效因子,量化策略就是空中楼阁。

通俗类比

选股票就像选运动员,因子就是运动员的“体能指标”(速度、耐力、力量),好的因子能帮我们挑出大概率夺冠的选手。

常见因子分类

  • 估值因子:PE(市盈率)、PB(市净率),衡量股票贵贱;

  • 动量因子:近期涨跌幅,捕捉趋势行情;

  • 质量因子:ROE(净资产收益率)、毛利率,衡量公司盈利能力;

  • 情绪因子:换手率、成交量,反映市场资金热度。

2.2 因子:量化策略的核心基石(指标的进阶筛选)

定义

因子是从海量基础指标中,经过回测验证、能系统性解释资产收益差异、精准预测涨跌的优质特征,是“经过筛选的有效指标”,属于指标的进阶衍生产物。

核心作用

挖掘市场隐藏的盈利规律,精准筛选优质标的,是搭建量化策略的核心原料,相当于把零散的“基础零件”(指标)打磨成能发挥作用的“核心部件”(因子)。

通俗类比

延续身体状态的例子,身高、体重是基础指标,而“BMI体质指数”(结合身高体重计算)就是能判断胖瘦、关联健康的因子,比单一指标更有参考价值。

常见因子分类

  • 估值因子:PE(市盈率)、PB(市净率),衡量股票贵贱;

  • 动量因子:近期涨跌幅,捕捉趋势行情;

  • 质量因子:ROE(净资产收益率)、毛利率,衡量公司盈利能力;

  • 情绪因子:换手率、成交量,反映市场资金热度。

衍生关联:因子源于指标,高于指标——所有因子都是指标,但不是所有指标都是因子,只有经过收益验证、能辅助盈利的指标,才能升级为因子,是连接指标与交易信号的关键桥梁。

定义

指标是对基础数据的简单加工计算,是直观反映市场/标的状态的数值,属于“基础工具”,不一定能预测收益,但能辅助判断行情。

核心作用

直观展示市场走势、标的特征,辅助因子挖掘、信号生成,是量化分析的基础数据单元。

因子VS指标:核心区别

指标是“基础数据加工品”,因子是“能赚钱的有效指标/特征”;所有因子都是指标,但不是所有指标都是因子。比如MA(均线)是指标,只有验证出均线金叉能稳定盈利时,才会变成动量因子的一部分。

2.3 信号:策略的直接交易指令(因子的落地输出)

定义

信号是基于因子、指标的数值阈值,计算得出的具体交易提示(买入、卖出、持有、减仓),是因子从“理论特征”落地为“实操动作”的直接输出,属于因子的衍生结果。

核心作用

明确交易时机,把抽象的因子规则,转化为普通人能看懂、能执行的操作指令,彻底摒弃主观犹豫,让量化逻辑落地实操。

通俗例子

“PB估值因子小于10(低估值)+ 20日动量因子大于5%(趋势强)”,同时满足就触发买入信号;跌破20日均线、动量转负,触发卖出信号

衍生关联:没有因子的筛选,信号就会杂乱无章、毫无参考性;信号是因子的“实操语言”,是连接因子与完整策略的关键纽带,直接指导交易动作。

定义

信号是基于因子、指标计算得出的具体交易提示(买入、卖出、持有、减仓),是因子落地到交易的直接输出。

核心作用

明确交易时机,把抽象的因子规则,转化为可执行的操作指令,避免主观犹豫。

通俗例子

“PE小于10(估值因子)+ 20日涨幅大于5%(动量因子)”,满足条件就触发买入信号;跌破20日均线,触发卖出信号

2.4 策略:量化投资的作战方案(信号+规则的整合)

定义

策略是把交易信号、选股因子、仓位管理、买卖时机等规则打包整合,形成的完整交易闭环体系,是“信号+因子+实操规则”的整合衍生,属于量化投资的最终落地载体。

核心作用

实现稳定盈利,把零散的信号、单一的因子,变成可回测、可复制、可实盘的盈利模式,解决“什么时候买、买什么、买多少、什么时候卖”的全流程问题。

通俗类比

就像一场战役,因子是兵力优势,信号是进攻/撤退指令,策略就是完整的作战计划,统筹所有要素,实现最终取胜的目标。

衍生关联:策略依托信号而生,信号依托因子而生,因子依托指标而生,层层递进、缺一不可;策略是量化逻辑的终极呈现,没有完整策略,前面的指标、因子、信号都只是零散的理论。

定义

策略是把因子、信号、仓位、买卖规则打包整合,形成的完整交易体系,是一套“什么时候买、买什么、买多少、什么时候卖”的全流程规则。

核心作用

实现稳定盈利,把零散的信号、因子,变成可回测、可实盘的盈利模式,是量化投资的最终载体。

2.5 风控:量化策略的安全气囊(策略的兜底保障)

定义

风控是针对完整量化策略,设计的风险管控机制,通过硬性规则约束策略行为、控制亏损、守住本金,是策略的兜底衍生,核心是“先活下来,再谈赚钱”。

核心作用

限制单笔亏损、控制整体仓位、规避黑天鹅风险,防止策略因极端行情爆亏,保障策略长期稳健运行,是量化投资的安全底线。

常见风控手段

  • 止损止盈:单笔亏损达5%强制卖出;

  • 仓位控制:单只股票仓位不超过10%,总仓位不超过80%;

  • 回撤控制:最大回撤超15%暂停开仓;

  • 分散投资:不重仓单一行业/标的。

衍生关联:风控是策略的配套保障,没有风控的策略,即便因子有效、信号精准,也会在极端行情中崩盘;风控为整个量化链路兜底,让指标→因子→信号→策略的闭环具备长期可行性。

定义

风控是通过规则、模型,控制策略回撤、规避极端风险、守住本金的整套机制,核心是“先活下来,再谈赚钱”。

核心作用

限制单笔亏损、控制整体仓位、规避黑天鹅风险,防止策略因极端行情爆亏,保障策略长期稳健运行。

常见风控手段

  • 止损止盈:单笔亏损达5%强制卖出;

  • 仓位控制:单只股票仓位不超过10%,总仓位不超过80%;

  • 回撤控制:最大回撤超15%暂停开仓;

  • 分散投资:不重仓单一行业/标的。


三、代码实操入门:从零散片段到经典因子分析

咱们用Python(量化最常用语言),从基础代码入手,先实现基础指标,再做经典因子分析,全程极简易懂,新手也能直接跑通。

3.1 环境准备

提前安装依赖库,打开终端输入以下命令:

pip install pandas numpy tushare # pandas数据处理,numpy数值计算,tushare获取行情数据

3.2 第一步:获取基础金融数据

先拿到股票行情数据,这是一切量化分析的基础,代码可直接复制运行:

import pandas as pd import numpy as np import tushare as ts # 设置tushare token(免费注册即可获取) pro = ts.pro_api('你的token') # 获取某只股票日线数据(以平安银行为例,000001.SZ) df = pro.daily(ts_code='000001.SZ', start_date='20250101', end_date='20260101') # 数据预处理:按交易日期升序排列,重置索引 df = df.sort_values('trade_date').reset_index(drop=True) # 筛选核心字段 df = df[['trade_date', 'open', 'high', 'low', 'close', 'vol']] print('基础行情数据预览:') print(df.head())

代码说明:这一步是获取原始数据,相当于拿到“原材料”,后续所有因子、信号都基于这些数据计算。

3.3 第二步:基础指标计算(均线、换手率)

先做简单指标加工,理解数据处理逻辑,为因子计算打基础:

# 1. 计算5日、20日均线(常用趋势指标) df['ma5'] = df['close'].rolling(window=5).mean() df['ma20'] = df['close'].rolling(window=20).mean() # 2. 计算日涨跌幅(基础波动指标) df['pct_chg'] = df['close'].pct_change() * 100 # 3. 计算成交量波动率(情绪指标) df['vol_std'] = df['vol'].rolling(window=10).std() print('加完指标的数据预览:') print(df[['trade_date', 'close', 'ma5', 'ma20', 'pct_chg']].head(10))

3.4 第三步:经典因子实操(动量因子+估值因子)

这是量化最常用的两大经典因子,咱们一步步计算,验证因子有效性,理解“为什么这么做”。

3.4.1 动量因子计算(趋势类核心因子)

核心逻辑:强者恒强,近期涨幅大的股票,后续大概率继续上涨。

# 计算20日动量因子(近20日涨跌幅) df['momentum_20'] = df['close'].pct_change(periods=20) * 100 # 因子有效性初步判断:动量值越高,后续收益越好则因子有效 # 筛选动量因子前10%的交易日,查看平均收益 df['momentum_rank'] = df['momentum_20'].rank(pct=True) # 因子百分位排序 high_momentum = df[df['momentum_rank'] > 0.9] # 取动量前10% print('高动量交易日平均涨跌幅:', high_momentum['pct_chg'].mean()) print('全市场交易日平均涨跌幅:', df['pct_chg'].mean())

原理讲解:如果高动量组平均收益>全市场平均收益,说明这个动量因子有效,能帮我们筛选出优质标的,这就是因子挖掘的核心逻辑——找能区分收益的特征。

3.4.2 估值因子(简易版,市净率PB)

核心逻辑:低估值股票更具安全边际,长期收益更稳健。

# 获取股票财务数据,计算PB因子 fin_data = pro.financial_indicator(ts_code='000001.SZ', start_date='20250101', end_date='20260101') fin_data = fin_data[['trade_date', 'pb']] # 提取市净率数据 # 合并行情与财务数据 df = pd.merge(df, fin_data, on='trade_date', how='left') df['pb'] = df['pb'].fillna(method='ffill') # 缺失值填充 # 低估值组收益验证 low_pb = df[df['pb'] < df['pb'].median()] # PB低于中位数的低估值组 print('低估值组平均涨跌幅:', low_pb['pct_chg'].mean())

四、进阶实操:从零散代码到完整简易量化策略

把前面的因子、信号、风控整合,打造一套双因子均线策略,完整实现“选股+择时+风控”,新手可直接回测验证。

4.1 策略核心规则(清晰易懂)

买入信号:同时满足3个条件,触发买入
1. 20日动量因子>0(趋势向上);
2. PB估值低于市场中位数(低估值安全);
3. 5日均线上穿20日均线(金叉,短期趋势走强)。

卖出信号:满足任一条件,触发卖出
1. 5日均线下穿20日均线(死叉,趋势走弱);
2. 单笔亏损达到5%(止损风控);
3. 20日动量因子<0(趋势反转)。

风控规则:单只股票仓位100%(单标的简易版),严格执行止损,不扛单。

4.2 完整策略代码

# 承接前文数据,直接编写策略逻辑 df['buy_signal'] = 0 # 买入信号标记,1=买入 df['sell_signal'] = 0 # 卖出信号标记,1=卖出 position = 0 # 持仓标记,0=空仓,1=持仓 cost = 0 # 持仓成本价 # 遍历行情数据,执行策略 for i in range(20, len(df)): current_close = df.loc[i, 'close'] # 1. 买入信号判断 if position == 0: momentum_ok = df.loc[i, 'momentum_20'] > 0 pb_ok = df.loc[i, 'pb'] < df['pb'].median() golden_cross = df.loc[i-1, 'ma5'] < df.loc[i-1, 'ma20'] and df.loc[i, 'ma5'] > df.loc[i, 'ma20'] if momentum_ok and pb_ok and golden_cross: df.loc[i, 'buy_signal'] = 1 position = 1 cost = current_close # 2. 卖出信号判断 elif position == 1: death_cross = df.loc[i-1, 'ma5'] > df.loc[i-1, 'ma20'] and df.loc[i, 'ma5'] < df.loc[i, 'ma20'] stop_loss = (current_close - cost) / cost < -0.05 # 亏损5%止损 momentum_bad = df.loc[i, 'momentum_20'] < 0 if death_cross or stop_loss or momentum_bad: df.loc[i, 'sell_signal'] = 1 position = 0 # 统计策略交易信号 buy_times = df['buy_signal'].sum() sell_times = df['sell_signal'].sum() print(f'策略触发买入次数:{buy_times},触发卖出次数:{sell_times}') # 计算策略收益 df['strategy_return'] = 0.0 hold_return = 0.0 for i in range(1, len(df)): if df.loc[i-1, 'buy_signal'] == 1: hold_return = df.loc[i, 'close'] / df.loc[i-1, 'close'] - 1 elif df.loc[i-1, 'sell_signal'] == 1: hold_return = 0 df.loc[i, 'strategy_return'] = hold_return # 累计收益计算 df['cum_strategy'] = (1 + df['strategy_return']).cumprod() df['cum_benchmark'] = (1 + df['pct_chg']/100).cumprod() # 输出策略表现 print('策略累计收益:', round((df['cum_strategy'].iloc[-1] - 1) * 100, 2), '%') print('基准持仓累计收益:', round((df['cum_benchmark'].iloc[-1] - 1) * 100, 2), '%')

4.3 策略逻辑详解(为什么这么做)

  1. 因子选股:用动量+估值双因子,筛选“趋势好+估值低”的标的,避开高位垃圾股;

  2. 均线择时:用金叉死叉精准把握买卖时机,解决“买早、卖晚”的问题;

  3. 风控兜底:设置5%严格止损,杜绝单次大亏,保障本金安全;

  4. 规则闭环:全程无主观判断,代码自动执行,保证策略一致性。


五、量化学习总结与进阶方向

5.1 核心知识点复盘

  • 量化分析=数据+数学+代码,核心是客观化、系统化投资;

  • 因子是赚钱核心,指标是基础工具,信号是交易指令,策略是盈利体系,风控是安全底线;

  • 实操流程:数据→指标→因子→信号→策略→风控,步步递进。

5.2 新手进阶建议

  1. 先吃透基础因子和简易策略,不要急于追求复杂模型;

  2. 多做回测验证,优化因子参数和风控规则;

  3. 逐步学习多因子合成、仓位优化、行业分散等进阶技巧;

  4. 实盘从小资金开始,验证策略稳定性后再加大仓位。

(注:文档部分内容可能由 AI 生成)

最后一次编辑于 3天前 2

暂无评论

推荐阅读
  tyler   24小时前   16   0   0 新手入门