jqfactor_analyzer:聚宽单因子分析工具完整使用指南

jqfactor_analyzer是一款专为金融量化爱好者设计的Python开源库,由聚宽开发维护。该工具箱致力于简化因子分析的过程,让用户体验高效、直观的因子性能评估。它支持计算因子的信息系数(IC)、因子收益、换手率等关键指标,同时也提供因子中性化、分位数划分等功能。

【免费下载链接】jqfactor_analyzer 【免费下载链接】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天后的收益表现。

最佳实践建议

  1. 数据预处理: 在进行因子分析之前,对数据进行适当的清洗和标准化处理
  2. 行业效应调整: 考虑行业效应和时间序列效应进行调整
  3. 缓存管理: 合理使用本地缓存功能,提高分析效率
  4. 参数优化: 根据具体需求调整分位数数量、调仓周期等参数

通过jqfactor_analyzer,用户可以快速构建专业的因子分析流程,深入探究因子的特性与价值,为量化投资决策提供有力支持。

【免费下载链接】jqfactor_analyzer 【免费下载链接】jqfactor_analyzer 项目地址: https://gitcode.com/gh_mirrors/jq/jqfactor_analyzer

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值