查看全集:💎Quantopia量化分析56讲
Alpha因子是量化交易策略的核心驱动力。优秀的因子应具备以下特征:
本教程将使用Alphalens库系统评估动量因子,并通过完整案例演示分析流程。
!pip install yfinance alphalens pandas matplotlib
import yfinance as yf
import pandas as pd
# 获取股票价格数据
def get_price_data(tickers, start, end):
data = yf.download(tickers, start=start, end=end)
return data['Adj Close'].unstack().swaplevel().sort_index()
# 示例:获取苹果和微软2014-2015年收盘价
price_data = get_price_data(['AAPL', 'MSFT'], '2014-01-01', '2015-01-01')
print(price_data.head())
动量因子通常表征资产价格趋势延续性:
标准化处理:
其中σ代表收益率标准差,用于风险调整
class MomentumFactor:
def __init__(self, lookback=252, recent_window=21):
self.lookback = lookback
self.recent_window = recent_window
def compute(self, prices):
long_term = (prices.shift(recent_window) - prices.shift(lookback)) / prices.shift(lookback)
short_term = (prices - prices.shift(recent_window)) / prices.shift(recent_window)
returns = prices.pct_change().rolling(window=126).std()
return (long_term - short_term) / returns
# 获取标普500成分股数据
sp500 = pd.read_html('https://en.wikipedia.org/wiki/List_of_S%26P_500_companies')[0]
tickers = sp500.Symbol.to_list()
# 获取3年历史价格
prices = get_price_data(tickers, '2019-01-01', '2022-01-01')
# 计算动量因子
momentum = MomentumFactor()
factor_values = momentum.compute(prices)
from alphalens.utils import get_clean_factor_and_forward_returns
# 计算未来1/5/10日收益率
factor_data = get_clean_factor_and_forward_returns(
factor=factor_values.stack(),
prices=prices,
periods=(1,5,10),
quantiles=5
)
from alphalens import plot_returns_table
plot_returns_table(factor_data)
关键指标解读:
from alphalens import plot_information_table
plot_information_table(factor_data)
核心指标:
from alphalens import plot_turnover_table
plot_turnover_table(factor_data)
关键观察点:
# 添加行业分类
sectors = sp500.set_index('Symbol')['GICS Sector']
factor_data['sector'] = factor_data.index.get_level_values('asset').map(sectors)
# 分行业绘制收益条形图
import seaborn as sns
sns.barplot(x='sector', y='5D', hue='factor_quantile', data=factor_data)
综合因子 = 0.4*动量因子 + 0.3*价值因子 + 0.3*质量因子
需保证各因子间相关性<0.3
Q:如何判断因子是否过拟合?
A:通过交叉验证:
Q:IC均值高但收益差低?
A:可能原因:
任务:构建并评估价值因子(P/E Ratio)
提示代码:
import yfinance as yf
def get_pe_ratio(ticker):
stock = yf.Ticker(ticker)
pe = stock.info['trailingPE']
return pe
通过本教程,您已掌握因子评估的核心方法。接下来可尝试构建多因子模型,并探索因子组合的协同效应。记住:好的量化策略=有效因子+严格风控+持续迭代!