jqfactor_analyzer是一款专为金融量化爱好者设计的Python开源库,由聚宽开发维护。该工具箱致力于简化因子分析的过程,让用户体验高效、直观的因子性能评估。它支持计算因子的信息系数(IC)、因子收益、换手率等关键指标,同时也提供因子中性化、分位数划分等功能。
【免费下载链接】jqfactor_analyzer 项目地址: https://gitcode.com/gh_mirrors/jq/jqfactor_analyzer
项目安装与升级
安装jqfactor_analyzer
首先确保环境中已安装Python,然后通过pip命令安装:
pip install jqfactor_analyzer
如需升级到最新版本:
pip install -U jqfactor_analyzer
核心功能模块详解
单因子分析模块
单因子分析是jqfactor_analyzer的核心功能,通过analyze_factor函数实现:
import pandas as pd
import jqfactor_analyzer as ja
import jqdatasdk
# 登录聚宽平台
jqdatasdk.auth('username', 'password')
# 获取5日平均换手率因子数据
from jqfactor_analyzer.sample import VOL5
factor_data = VOL5
# 对因子进行全面分析
factor_analyzer = ja.analyze_factor(
factor_data=factor_data,
quantiles=10,
periods=(1, 10),
industry='jq_l1',
weight_method='avg',
max_loss=0.1
)
归因分析模块
归因分析用于分解组合收益的来源:
from jqfactor_analyzer import AttributionAnalysis
# 准备持仓权重和日收益率数据
weights = pd.read_csv("position_weights.csv", index_col=0)
returns = pd.read_csv("position_daily_return.csv", index_col=0)['daily_return']
# 执行归因分析
An = AttributionAnalysis(weights, returns,
style_type='style_pro',
industry='sw_l1',
show_data_progress=True)
因子缓存模块
为了提高数据获取速度并避免反复从服务端获取数据,增加了本地数据缓存功能:
from jqfactor_analyzer.factor_cache import set_cache_dir, get_cache_dir
# 设置缓存目录
set_cache_dir(my_path)
print(get_cache_dir())
数据格式要求
DataFrame格式要求
- index为日期,格式为pandas日期通用的DatetimeIndex
- columns为股票代码,格式要求符合聚宽的代码定义规则
- 深交所股票代码后缀:.XSHE
- 上交所股票代码后缀:.XSHG
import pandas as pd
# 创建示例因子数据
sample_data = pd.DataFrame(
[[0.84, 0.43, 2.33, 0.86, 0.96],
[1.06, 0.51, 2.60, 0.90, 1.09],
[1.12, 0.54, 2.68, 0.94, 1.12],
[1.07, 0.64, 2.65, 1.33, 1.15],
[1.21, 0.73, 2.97, 1.65, 1.19]],
index=['2018-01-02', '2018-01-03', '2018-01-04', '2018-01-05', '2018-01-08'],
columns=['000001.XSHE', '000002.XSHE', '000063.XSHE', '000069.XSHE', '000100.XSHE']
)
# 转换为正确格式
factor_data = sample_data.copy()
factor_data.index = pd.to_datetime(factor_data.index)
factor_data = factor_data.sort_index()
分析结果可视化
完整分析报告
# 生成完整的因子分析报告
factor_analyzer.create_full_tear_sheet(
demeaned=False,
group_adjust=False,
by_group=False,
turnover_periods=None,
avgretplot=(5, 15),
std_bar=False
)
专项分析报告
# 因子值特征分析
factor_analyzer.create_summary_tear_sheet(demeaned=False, group_adjust=False)
# 因子收益分析
factor_analyzer.create_returns_tear_sheet(demeaned=False, group_adjust=False, by_group=False)
# 因子IC分析
factor_analyzer.create_information_tear_sheet(group_adjust=False, by_group=False)
# 因子换手率分析
factor_analyzer.create_turnover_tear_sheet(turnover_periods=None)
实战应用案例
案例:五日平均换手率因子分析
# 载入函数库
import pandas as pd
import jqfactor_analyzer as ja
# 获取jqdatasdk授权
import jqdatasdk
jqdatasdk.auth('username', 'password')
# 从聚宽因子库获取VOL5数据
factor_data = jqdatasdk.get_factor_values(
securities=jqdatasdk.get_index_stocks('000300.XSHG'),
factors=['VOL5'],
start_date='2018-01-01',
end_date='2018-12-31'
)['VOL5']
# 执行因子分析
far = ja.analyze_factor(
factor_data,
quantiles=10,
periods=(1, 10),
industry='jq_l1',
weight_method='avg',
max_loss=0.1
)
# 获取IC值结果
ic_results = far.ic
# 生成可视化报告
far.create_full_tear_sheet(
demeaned=False,
group_adjust=False,
by_group=False,
turnover_periods=None,
avgretplot=(5, 15),
std_bar=False
)
核心参数详解
行业分类参数
- 'jq_l1': 聚宽一级行业
- 'jq_l2': 聚宽二级行业
- 'sw_l1': 申万一级行业
- 'sw_l2': 申万二级行业
- 'sw_l3': 申万三级行业
- 'zjh': 证券行业监管机构行业分类
加权方法参数
- 'avg': 等权重
- 'mktcap': 按总市值加权
- 'ln_mktcap': 按总市值的对数加权
- 'cmktcap': 按流通市值加权
- 'ln_cmktcap': 按流通市值的对数加权
调仓周期参数
支持单个周期或多个周期组合,如(1, 5, 10)表示分析1天、5天和10天后的收益表现。
最佳实践建议
- 数据预处理: 在进行因子分析之前,对数据进行适当的清洗和标准化处理
- 行业效应调整: 考虑行业效应和时间序列效应进行调整
- 缓存管理: 合理使用本地缓存功能,提高分析效率
- 参数优化: 根据具体需求调整分位数数量、调仓周期等参数
通过jqfactor_analyzer,用户可以快速构建专业的因子分析流程,深入探究因子的特性与价值,为量化投资决策提供有力支持。
【免费下载链接】jqfactor_analyzer 项目地址: https://gitcode.com/gh_mirrors/jq/jqfactor_analyzer
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



