Imported from sunny52juli/QuantitativeSystem (
core/skill/SKILL.md). Install upstream withnpx skills add sunny52juli/QuantitativeSystem --skill skill. Copyright stays with the author.
Factor Mining Skill - 重构优化版
概述
本Skill提供量化因子构建的完整指导,支持基础表达式和MCP工具函数。
⚠️ 可用数据字段(重要约束)
标准字段(必须使用以下字段,不得编造)
系统提供以下标准化的股票数据字段,所有因子构建必须且只能使用这些字段:
基础价格字段
开盘价/open- 当日开盘价最高价/high- 当日最高价最低价/low- 当日最低价收盘价/close- 当日收盘价前收盘/pre_close- 前一交易日收盘价涨跌额/change- 涨跌额(元)涨跌幅/pct_chg- 涨跌幅(%)
成交量字段
成交量/vol- 当日成交量(手)成交额/amount- 当日成交金额(千元)
基础信息字段
trade_date/date- 交易日期(YYYYMMDD格式)ts_code/code- 股票代码(如:000001.SZ)name- 股票名称area- 所属地域industry- 所属行业market- 所属市场(主板/创业板/科创板等)list_date- 上市日期
估值指标字段(每日指标)
turnover_rate- 换手率(%)turnover_rate_f- 换手率(自由流通股)vol_ratio- 量比pe- 市盈率(总市值/净利润,亏损的PE为空)pe_ttm- 市盈率(TTM,滚动12个月)pb- 市净率(总市值/净资产)ps- 市销率ps_ttm- 市销率(TTM)dv_ratio- 股息率(%)dv_ttm- 股息率(TTM)(%)total_share- 总股本(万股)float_share- 流通股本(万股)free_share- 自由流通股本(万股)total_mv- 总市值(万元)circ_mv- 流通市值(万元)
复权因子字段
adj_factor- 复权因子(用于计算前复权和后复权价格)
资金流向字段(个股资金流)
buy_sm_vol- 小单买入量(手)buy_sm_amount- 小单买入金额(万元)sell_sm_vol- 小单卖出量(手)sell_sm_amount- 小单卖出金额(万元)buy_md_vol- 中单买入量(手)buy_md_amount- 中单买入金额(万元)sell_md_vol- 中单卖出量(手)sell_md_amount- 中单卖出金额(万元)buy_lg_vol- 大单买入量(手)buy_lg_amount- 大单买入金额(万元)sell_lg_vol- 大单卖出量(手)sell_lg_amount- 大单卖出金额(万元)buy_elg_vol- 特大单买入量(手)buy_elg_amount- 特大单买入金额(万元)sell_elg_vol- 特大单卖出量(手)sell_elg_amount- 特大单卖出金额(万元)net_mf_vol- 净流入量(手)net_mf_amount- 净流入额(万元)
融资融券字段
rzye- 融资余额(元)rqye- 融券余额(元)rzmre- 融资买入额(元)rqyl- 融券余量(股)rzche- 融资偿还额(元)rqchl- 融券偿还量(股)rqmcl- 融券卖出量(股)rzrqye- 融资融券余额(元)
衍生字段(系统自动计算)
vwap- 成交量加权平均价 = 成交额 / 成交量ret- 收益率(同pct_change)ret1- 次日收益率(用于回测)volatility- 波动率
字段使用规则
- 严格约束: 只能使用上述列出的字段,禁止编造或假设其他字段
- 中英文支持: 价格和成交量字段支持中英文名称(如"收盘价"或"close")
- 字段组合: 可以通过表达式组合字段(如
(最高价+最低价)/2) - 工具计算: 可以使用MCP工具对字段进行计算(如
rolling_mean("收盘价", 20)) - 单位注意: 注意字段单位差异(如成交额单位为千元,市值单位为万元)
常见错误示例(禁止)
❌ 错误: 使用不存在的字段
# 错误:系统已有"换手率"字段,应使用turnover_rate
自定义换手率 = 成交量 / 总股本
# 错误:系统已有"市盈率"字段,应使用pe或pe_ttm
自定义市盈率 = 总市值 / 净利润
# 错误:编造不存在的字段
涨停价 - 收盘价
✅ 正确: 使用标准字段或通过计算得到
# 正确:直接使用换手率字段
turnover_rate / rolling_mean("turnover_rate", 20)
# 正确:使用市盈率字段
pe_ttm / rolling_mean("pe_ttm", 60)
# 正确:使用涨跌幅字段
pct_chg / rolling_std("pct_chg", 20)
# 正确:使用资金流向字段构建因子
(buy_lg_amount - sell_lg_amount) / (total_mv + 0.0001)
# 正确:使用融资融券字段
rzye / (circ_mv * 10000 + 0.0001)
# 正确:使用估值指标
(pb - rolling_mean("pb", 60)) / (rolling_std("pb", 60) + 0.0001)
新增字段使用示例
估值因子
# 市盈率相对位置
(pe_ttm - rolling_min("pe_ttm", 252)) / (rolling_max("pe_ttm", 252) - rolling_min("pe_ttm", 252) + 0.0001)
# 市净率反转
1 / (pb + 0.0001)
# 股息率因子
dv_ttm / rolling_mean("dv_ttm", 60)
资金流向因子
# 主力资金净流入占比
(buy_lg_amount + buy_elg_amount - sell_lg_amount - sell_elg_amount) / (amount + 0.0001)
# 大单买入强度
buy_elg_amount / (buy_elg_amount + sell_elg_amount + 0.0001)
# 资金流向动量
rolling_mean("net_mf_amount", 5) / rolling_std("net_mf_amount", 20)
融资融券因子
# 融资买入占比
rzmre / (amount * 1000 + 0.0001)
# 融资余额变化率
pct_change("rzye", 5)
# 融资融券余额占流通市值比
rzrqye / (circ_mv * 10000 + 0.0001)
流动性因子
# 换手率异常
turnover_rate / rolling_mean("turnover_rate", 20)
# 量比因子(自动计算)
vol_ratio # ✅ 系统会自动计算:当日成交量 / 过去 20 日平均成交量
# 也可以使用自定义窗口
vol_ratio_10 # ✅ 当日成交量 / 过去 10 日平均成交量
# 成交额占流通市值比
(amount * 1000) / (circ_mv * 10000 + 0.0001)
市值因子
# 流通市值对数
log_transform("circ_mv")
# 自由流通比例
free_share / (total_share + 0.0001)
# 市值相对位置
ts_rank("total_mv", 252)
⚠️ 重要:变量命名约定
支持的变量格式
系统支持以下变量命名格式,用于表示不同周期的技术指标:
1. 标准格式(推荐)
MA{n}- n 日移动平均,如MA5,MA20EMA{n}- n 日指数移动平均,如EMA12STD{n}- n 日标准差,如STD20RSI{n}- n 日 RSI 指标,如RSI14MOM{n}- n 日动量,如MOM5VOL{n}- n 日成交量均值,如VOL20
2. 下划线格式(同样支持)
ma_{n}- n 日移动平均,如ma_5,ma_20ema_{n}- n 日指数移动平均,如ema_12std_{n}- n 日标准差,如std_20rsi_{n}- n 日 RSI 指标,如rsi_14mom_{n}- n 日动量,如mom_5
示例:
# 以下两种格式等价,都可以使用
MA20 # ✅ 标准格式
ma_20 # ✅ 下划线格式
RSI14 # ✅ 标准格式
rsi_14 # ✅ 下划线格式
自动推断的衍生字段
系统还支持以下衍生字段格式的自动推断:
-
{field}_{n}d- n 日字段值(滚动最小/最大值)- 如:
low_20d→ 20 日最低价滚动最小值 - 如:
high_20d→ 20 日最高价滚动最大值
- 如:
-
{field}_avg_{n}d- n 日字段平均值- 如:
vol_avg_20d→ 20 日平均成交量
- 如:
-
{field}_max_{n}d- n 日字段最大值- 如:
high_max_20d→ 20 日最高价
- 如:
-
{field}_min_{n}d- n 日字段最小值- 如:
low_min_20d→ 20 日最低价
- 如:
错误示例
❌ 错误: 使用未定义的变量
ma_20 + ma_60 # ❌ 如果数据中没有 ma_20 和 ma_60 列,系统会自动计算
✅ 正确: 使用系统支持的格式
# 系统会自动推断并计算这些变量
ma_20 # ✅ 自动计算 20 日均线
ma_50 # ✅ 自动计算 50 日均线
RSI14 # ✅ 自动计算 14 日 RSI
快速开始
基础表达式(简单因子)
# 日内振幅
(最高价-最低价)/(收盘价+0.0001)
# 量价关系
成交量/(收盘价+0.0001)
# 价格位置
(收盘价-最低价)/(最高价-最低价+0.0001)
工具组合(复杂因子)
# 动量因子:5日收益率标准化
pct_change(收盘价, 5) → zscore_normalize(结果)
# 波动因子:20日波动率
rolling_std(收盘价, 20)
# 技术指标:RSI
rsi(收盘价, 14)
API参考
数学运算工具
abs_value(values)
- 描述: 计算绝对值
- 参数:
values- 输入表达式 - 返回:
abs(values) - 示例:
abs_value("收盘价-开盘价")→abs(收盘价-开盘价)
log_transform(values)
- 描述: 对数变换 log(1 + x)
- 参数:
values- 输入表达式 - 返回:
log(1 + values) - 用途: 压缩大数值范围
rank_normalize(values)
- 描述: 横截面排名归一化到[0,1]
- 参数:
values- 输入表达式 - 返回: 排名归一化结果
- 用途: 统一不同因子到相同范围
zscore_normalize(values)
- 描述: Z-score标准化 (x - mean) / std
- 参数:
values- 输入表达式 - 返回: 标准化结果
- 用途: 消除量纲,均值0方差1
sqrt_transform(values)
- 描述: 平方根变换,保留符号
- 参数:
values- 输入表达式 - 返回:
sqrt(abs(values)) * sign(values) - 用途: 压缩大数值范围,保留正负信息
power_transform(values, power=2)
- 描述: 幂次变换
- 参数:
values- 输入表达式power- 幂次(默认2)
- 返回:
values ** power - 用途: 放大差异或非线性变换
时间序列工具
rolling_mean(values, window=5)
- 描述: 移动平均
- 参数:
values- 输入字段window- 窗口大小(默认5)
- 返回: N日移动平均
- 示例:
rolling_mean("收盘价", 5)→ma_5(收盘价)
rolling_std(values, window=5)
- 描述: 移动标准差
- 参数:
values- 输入字段window- 窗口大小(默认5)
- 返回: N日移动标准差
- 用途: 衡量波动性
lag(values, periods=1)
- 描述: 滞后值
- 参数:
values- 输入字段periods- 滞后期数(默认1)
- 返回: N天前的值
- 示例:
lag("收盘价", 1)→lag_1(收盘价)
pct_change(values, periods=1)
- 描述: 百分比变化
- 参数:
values- 输入字段periods- 间隔期数(默认1)
- 返回: (当前值 - N天前值) / N天前值
- 示例:
pct_change("收盘价", 5)→pct_5(收盘价)
rolling_max(values, window=20)
- 描述: 移动最大值
- 参数:
values- 输入字段window- 窗口大小(默认20)
- 返回: N日移动最大值
- 用途: 识别高点位置
rolling_min(values, window=20)
- 描述: 移动最小值
- 参数:
values- 输入字段window- 窗口大小(默认20)
- 返回: N日移动最小值
- 用途: 识别低点位置
ewm(values, span=12)
- 描述: 指数加权移动平均
- 参数:
values- 输入字段span- 时间跨度(默认12)
- 返回: N日指数加权移动平均
- 特点: 对近期数据赋予更高权重,响应更快
技术指标工具
rsi(values, window=14)
- 描述: 相对强弱指标RSI
- 参数:
values- 价格字段window- 计算窗口(默认14)
- 返回: RSI值 [0, 100]
- 解读: RSI > 70: 超买, RSI < 30: 超卖
bollinger_position(values, window=20, num_std=2)
- 描述: 布林带位置
- 参数:
values- 输入字段window- 窗口大小(默认20)num_std- 标准差倍数(默认2)
- 返回: 价格在布林带中的位置 [0, 1]
- 解读: 0: 下轨, 0.5: 中轨, 1: 上轨
ema(values, span=12)
- 描述: 指数移动平均
- 参数:
values- 输入字段span- 时间跨度(默认12)
- 返回: N日指数移动平均
- 特点: 对近期数据赋予更高权重
macd(values, fast=12, slow=26, signal=9)
- 描述: MACD指标(Moving Average Convergence Divergence)
- 参数:
values- 价格字段fast- 快线周期(默认12)slow- 慢线周期(默认26)signal- 信号线周期(默认9)
- 返回: MACD值
- 解读: DIF上穿DEA为金叉买入信号,下穿为死叉卖出信号
kdj(high, low, close, window=9)
- 描述: KDJ随机指标
- 参数:
high- 最高价字段(默认"最高价")low- 最低价字段(默认"最低价")close- 收盘价字段(默认"收盘价")window- 计算周期(默认9)
- 返回: K、D、J值
- 解读: K值>80超买,K值<20超卖;J值>100极度超买,J值<0极度超卖
atr(high, low, close, window=14)
- 描述: 平均真实波幅(Average True Range)
- 参数:
high- 最高价字段low- 最低价字段close- 收盘价字段window- 计算周期(默认14)
- 返回: ATR值
- 解读: 衡量市场波动性,ATR越大波动越大,常用于止损设置
obv(close, vol)
- 描述: 能量潮指标(On Balance vol)
- 参数:
close- 收盘价字段(默认"收盘价")vol- 成交量字段(默认"成交量",实际字段名为vol)
- 返回: OBV值
- 解读: 价涨量增OBV上升为强势,价涨量缩OBV下降为弱势
- 注意: 参数名为vol,但实际数据字段名为vol,系统会自动映射
统计工具
correlation(x, y, window=20)
- 描述: 滚动相关系数
- 参数:
x- 第一个字段y- 第二个字段window- 窗口大小(默认20)
- 返回: 相关系数 [-1, 1]
- 用途: 量价关系分析
skewness(values, window=20)
- 描述: 偏度(分布偏斜程度)
- 参数:
values- 输入字段window- 窗口大小(默认20)
- 返回: 偏度值
- 解读: 正偏表示右偏分布(长尾在右),负偏表示左偏分布(长尾在左)
kurtosis(values, window=20)
- 描述: 峰度(分布尖峭程度)
- 参数:
values- 输入字段window- 窗口大小(默认20)
- 返回: 峰度值
- 解读: 峰度>3表示尖峰分布(厚尾),峰度<3表示平坦分布(薄尾)
特征工程工具
ts_rank(values, window=10)
- 描述: 时间序列排名
- 参数:
values- 输入字段window- 窗口大小(默认10)
- 返回: 当前值在过去N天的排名位置
- 用途: 识别相对强弱,值越大表示当前值在历史中排名越靠前
ts_argmax(values, window=10)
- 描述: 时间序列最大值位置
- 参数:
values- 输入字段window- 窗口大小(默认10)
- 返回: 过去N天最大值距今的天数
- 用途: 识别高点距离,值越小表示最大值越接近当前
ts_argmin(values, window=10)
- 描述: 时间序列最小值位置
- 参数:
values- 输入字段window- 窗口大小(默认10)
- 返回: 过去N天最小值距今的天数
- 用途: 识别低点距离,值越小表示最小值越接近当前
decay_linear(values, window=10)
- 描述: 线性衰减加权平均
- 参数:
values- 输入字段window- 窗口大小(默认10)
- 返回: 线性衰减加权平均值
- 用途: 对近期数据赋予更高权重,权重线性递减
风险指标工具
volatility(values, window=20)
- 描述: 波动率(年化标准差)
- 参数:
values- 收益率字段window- 窗口大小(默认20)
- 返回: 年化波动率
- 公式:
std * sqrt(252) - 用途: 衡量资产风险水平
max_drawdown(values, window=60)
- 描述: 最大回撤
- 参数:
values- 价格字段window- 窗口大小(默认60)
- 返回: 最大回撤比例
- 解读: 值越小(负值绝对值越大)风险越大
- 用途: 评估下行风险
组合工具
max_of(x, y)
- 描述: 最大值
- 参数:
x- 第一个表达式y- 第二个表达式
- 返回: max(x, y)
- 示例:
max_of("收盘价-开盘价", "0")→ 只保留上涨部分
clip(values, lower=None, upper=None)
- 描述: 裁剪到指定范围
- 参数:
values- 输入表达式lower- 下界upper- 上界
- 返回: 裁剪后的值
- 用途: 去除极端值
filter_by_industry(industry)
- 描述: 按行业筛选股票(返回布尔Series)
- 参数:
industry- 行业名称(支持模糊匹配)
- 返回: 布尔Series,True表示属于该行业
- 用途: 筛选特定行业的股票
- 示例:
filter_by_industry("通信设备")→ 筛选通信设备行业filter_by_industry("通信")→ 筛选包含"通信"的所有行业
- 注意:
- 支持模糊匹配,会匹配行业名称中包含关键词的所有股票
- 可以在表达式中与其他条件组合使用(如
filter_by_industry("通信设备") & (收盘价 > 10))
filter_by_market(market)
- 描述: 按市场筛选股票(返回布尔Series)
- 参数:
market- 市场名称(主板/创业板/科创板等)
- 返回: 布尔Series,True表示属于该市场
- 用途: 筛选特定市场的股票
- 示例:
filter_by_market("主板")→ 筛选主板股票filter_by_market("科创板")→ 筛选科创板股票
- 注意:
- 支持模糊匹配
- 可以在表达式中与其他条件组合使用
因子构建指南
⚠️ 重要:因子定义格式(必读)
系统支持两种因子定义方式:
方式 1:简单表达式(推荐用于简单因子)
直接使用字段和基本运算符,不需要工具调用。
{
"name": "日内振幅",
"expression": "(最高价 - 最低价)/(收盘价 + 0.0001)",
"rationale": "标准化日内波动",
"tools_used": []
}
✅ 适用场景:只涉及字段加减乘除、不需要时间序列计算
方式 2:工具组合(用于复杂因子)
使用 MCP 工具函数进行时间序列计算、技术指标等。
{
"name": "成交量动量因子",
"tools": [
{
"tool": "pct_change",
"params": {"values": "vol", "periods": 10},
"var": "vol_pct_10"
}
],
"expression": "vol_pct_10",
"rationale": "成交量 10 日变化率"
}
✅ 适用场景:需要移动平均、百分比变化、技术指标等
❌ 常见错误:在 expression 中直接写函数调用
// 错误示范!!不要在 expression 中这样写:
{
"name": "错误示例",
"expression": "pct_change(成交量,10)" // ❌ 系统无法解析
}
关键区别:
- ✅ 正确:
"expression": "vol_pct_10"(使用工具计算后的变量名) - ❌ 错误:
"expression": "pct_change(成交量,10)"(直接写函数调用)
工具选择原则
- 简单优先: 能用基础表达式就不用工具
- 渐进复杂: 从简单工具开始,逐步组合
- 避免过拟合: 工具步骤不超过3-4步
- 保持可解释性: 每个步骤都有明确含义
常用工具组合
动量因子
# 5日动量标准化
pct_change("收盘价", 5) → zscore_normalize(结果)
# 表达式: zscore(pct_5(收盘价))
波动因子
# 20日波动率
rolling_std("收盘价", 20)
# 表达式: std_20(收盘价)
趋势因子
# 价格相对均线位置
rolling_mean("收盘价", 20) → (收盘价 - 结果) / (结果 + 0.0001)
# 表达式: (收盘价 - ma_20(收盘价)) / (ma_20(收盘价) + 0.0001)
反转因子
# 短期反转
ts_rank("收盘价", 5) → 1 - 结果
# 表达式: 1 - ts_rank_5(收盘价)
量价因子
# 量价相关性
correlation("收盘价", "成交量", 20)
# 表达式: corr_20(收盘价, 成交量)
波动率因子
# 波动率突破
rolling_std("收盘价", 20) → zscore_normalize(结果)
# 表达式: zscore(std_20(收盘价))
技术指标因子
# RSI反转
rsi("收盘价", 14) → (50 - 结果) / 50
# 表达式: (50 - rsi_14(收盘价)) / 50
高级组合因子
# 动量-波动率调整
pct_change("收盘价", 20) → rolling_std("收盘价", 20) → 结果1 / (结果2 + 0.0001)
# 表达式: pct_20(收盘价) / (std_20(收盘价) + 0.0001)
估值因子(使用新增字段)
# 市盈率反转
pe_ttm → zscore_normalize(结果) → -结果
# 表达式: -zscore(pe_ttm)
资金流向因子(使用新增字段)
# 主力资金净流入强度
(buy_lg_amount + buy_elg_amount - sell_lg_amount - sell_elg_amount) / (amount + 0.0001) → zscore_normalize(结果)
# 表达式: zscore((buy_lg_amount + buy_elg_amount - sell_lg_amount - sell_elg_amount) / (amount + 0.0001))
融资融券因子(使用新增字段)
# 融资余额变化率
pct_change("rzye", 5) → zscore_normalize(结果)
# 表达式: zscore(pct_5(rzye))
流动性因子(使用新增字段)
# 换手率异常
turnover_rate / rolling_mean("turnover_rate", 20) → zscore_normalize(结果)
# 表达式: zscore(turnover_rate / ma_20(turnover_rate))
市值因子(使用新增字段)
# 流通市值对数
log_transform("circ_mv")
# 表达式: log(circ_mv + 1)
响应格式
简单因子
{
"factors": [
{
"name": "日内振幅",
"expression": "(最高价-最低价)/(收盘价+0.0001)",
"rationale": "标准化日内波动",
"tools_used": []
}
]
}
复杂因子
{
"factors": [
{
"name": "动量反转因子",
"tools": [
{
"tool": "pct_change",
"params": {"values": "收盘价", "periods": 5},
"var": "mom5"
},
{
"tool": "zscore_normalize",
"params": {"values": "mom5"},
"var": "mom_zscore"
}
],
"expression": "mom_zscore",
"rationale": "5日动量标准化"
}
]
}
最佳实践
1. 性能优化
- 优先使用简单工具(lag, delta, pct_change)
- 合理设置窗口大小(5-60天)
- 避免过度复杂的工具组合
- 使用缓存避免重复计算
2. 风险控制
- 除法必须加安全常数(避免除零)
- 使用clip工具限制极端值
- 验证因子逻辑的合理性
- 检查因子的稳定性和鲁棒性
3. 可维护性
- 保持工具步骤的清晰性
- 为每个因子添加详细说明
- 定期验证因子有效性
- 记录因子构建的逻辑和假设
4. 因子设计原则
- 经济意义: 因子应有明确的经济学或金融学解释
- 统计显著: 因子应在历史数据上表现出统计显著性
- 稳定性: 因子在不同市场环境下应保持相对稳定
- 低相关性: 新因子应与现有因子保持较低相关性
- 可交易性: 考虑交易成本和流动性约束
5. 常见因子类型
动量类因子
- 短期动量(1-5日):捕捉短期趋势
- 中期动量(10-60日):捕捉中期趋势
- 长期动量(120-252日):捕捉长期趋势
- 动量反转:结合动量和反转效应
波动率类因子
- 历史波动率:rolling_std
- 实现波动率:基于高频数据
- 波动率偏度:skewness
- 波动率峰度:kurtosis
价值类因子
- 相对估值:价格相对均值
- 价格位置:在历史区间的位置
- 价格动量:价格变化率
量价类因子
- 量价相关:correlation
- 成交量异常:vol突破
- 能量潮:obv
- 量价背离:价格与成交量方向不一致
技术指标类因子
- 趋势指标:MA, EMA, MACD
- 摆动指标:RSI, KDJ
- 波动指标:ATR, Bollinger Bands
- 成交量指标:OBV
估值类因子(使用新增字段)
- 市盈率因子:pe, pe_ttm的相对位置、反转
- 市净率因子:pb的相对位置、反转
- 市销率因子:ps, ps_ttm
- 股息率因子:dv_ratio, dv_ttm
- 估值组合:多个估值指标的加权组合
资金流向类因子(使用新增字段)
- 主力资金:buy_lg_amount, buy_elg_amount净流入
- 大单强度:大单买卖比例
- 资金流向动量:net_mf_amount的时间序列特征
- 资金流向异常:资金流向的突变检测
融资融券类因子(使用新增字段)
- 融资余额:rzye的变化率和相对位置
- 融资买入:rzmre占成交额比例
- 融资融券余额:rzrqye占流通市值比例
- 融资融券变化:融资融券数据的时间序列特征
流动性类因子(使用新增字段)
- 换手率:turnover_rate的异常和趋势
- 量比:vol_ratio
- 流通性:free_share / total_share
- 成交活跃度:成交额占市值比例
市值类因子(使用新增字段)
- 总市值:total_mv的对数、排名
- 流通市值:circ_mv的对数、排名
- 市值风格:大盘股vs小盘股
- 流通比例:float_share / total_share
6. 因子组合策略
多因子融合
# 动量+波动率+量价
factor1 = pct_change("收盘价", 20)
factor2 = rolling_std("收盘价", 20)
factor3 = correlation("收盘价", "成交量", 20)
# 加权组合
composite = 0.4 * zscore(factor1) + 0.3 * zscore(factor2) + 0.3 * zscore(factor3)
因子中性化
# 行业中性
factor_raw = pct_change("收盘价", 20)
factor_neutral = factor_raw - industry_mean(factor_raw)
因子正交化
# 对已有因子正交
factor_new = residual(factor_raw, factor_existing)
故障排除
常见问题
Q: 工具调用失败? A: 检查参数格式是否正确,确保所有必需参数都已提供
Q: 因子计算结果异常? A: 检查输入数据质量,添加安全常数避免除零错误
Q: 性能问题? A: 减少工具调用次数,使用更简单的表达式
调试建议
- 从简单因子开始测试
- 逐步增加复杂度
- 验证每个工具的输出
- 检查最终表达式的合理性
更新日志
- v1.0.0: 重构优化,采用模块化设计
- v0.9.0: 初始版本,基础功能
注意: 本Skill持续优化中,建议定期查看更新内容。