Files
playbook/skills/tsl-api-reference/references/codegen/module/ts-multi-factor.md
T

32 KiB
Raw Blame History

量化 / 多因子

TSMultiFactor

声明:class

执行多因子计算、分组回测、因子检验与数据预处理

fBegT

声明:field

开始日期 当前系统时间往前推 3 年

可见性:public

类型:date_time

fEndT

声明:field

截止日期 当前时间

可见性:public

类型:date_time

fIndexId

声明:field

基准代码 SH000300

可见性:public

类型:string

fCycle

声明:field

调仓周期,字符串 Cy_month()

可见性:public

类型:string

fFactorArr

声明:field

因子库

可见性:public

类型:array

fFillMissType

声明:field

缺失值处理方法 0:剔除

可见性:public

类型:integer

fAbnormalType

声明:field

极值处理方法 0:中位数法

可见性:public

类型:integer

fStandarizeType

声明:field

标准化方法 1Z 值法

可见性:public

类型:integer

fNeuType

声明:field

中性化方法 0:不进行中性化

可见性:public

类型:integer

fOrthType

声明:field

正交化方法 0:不进行正交化

可见性:public

类型:integer

fConstr

声明:field

剔除条件 空字符串

可见性:public

类型:string

fBuyRatio

声明:field

开仓费率(%) 0.1

可见性:public

类型:numeric

fSellRatio

声明:field

平仓费率(%) 0.1

可见性:public

类型:numeric

fGroupType

声明:field

分组方式 1:百分位

可见性:public

类型:integer

fGroups

声明:field

五分位

可见性:public

类型:string

fIndustryMethod

声明:field

行业资金分配方法 -1:不进行行业中性处理

可见性:public

类型:integer

fRateType

声明:field

个股资金分配方法 4:等权重

可见性:public

类型:integer

fGridNo

声明:field

网格数目 5

可见性:public

类型:integer

fpriceType

声明:field

成交价类别 2:收盘价

可见性:public

类型:integer

fvolModType

声明:field

成交量取整模式 0:不取整

可见性:public

类型:integer

fdividendType

声明:field

是否分红再投资 0:分红不再投资

可见性:public

类型:integer

fAllotmentType

声明:field

是否参与配股 0:不自动参与配股

可见性:public

类型:integer

fBacktestType

声明:field

使用的回测方法 0:表示使用回测框架清算

可见性:public

类型:integer

fbmType

声明:field

基准类型 0:单个基准

可见性:public

类型:integer

fbmDetail

声明:field

复合基准成分 Array()

可见性:public

类型:array

backTest()

声明:function

执行多因子计算、分组、清算和评价的完整流程

可见性:public

calculateFactorValue()

声明:function

执行回测清算之前的因子计算与分组流程

可见性:public

getTimeSeries()

声明:function

获取多因子框架的调仓日期序列;可重写

可见性:public

返回:array

getSamples(v_end_t)

声明:function

获取指定调仓日的初始证券样本;可重写

可见性:public

参数 类型 说明
v_end_t date_time 调仓日

返回:array

getFactors(end_t)

声明:function

获取指定调仓日的因子配置;可重写

可见性:public

参数 类型 说明
end_t date_time 调仓日T

返回:array

getFactorParams(end_t, factor_param)

声明:function

该函数一般在实现动态因子公式参数时需要重写,默认是直接返回设定的静态参数。用户在

可见性:public

参数 类型 说明
end_t date_time 调仓日T
factor_param array 通过 config_Set('因子公式参数',value)配置的静态自定义因子公式参数。参看 静态参数

返回:array

getGroupFactorValue()

声明:function

获取调仓日因子值及分组结果;支持按日期、组号或组名查询

可见性:public

返回:var_array

getGroupFactorValue(v_end_t)

声明:function

获取调仓日因子值及分组结果;支持按日期、组号或组名查询

可见性:public

参数 类型 说明
v_end_t datetime 指定调仓日

返回:var_array

getGroupFactorValue(group_id)

声明:function

获取调仓日因子值及分组结果;支持按日期、组号或组名查询

可见性:public

参数 类型 说明
group_id integer 组号,1 代表第 1 组,2 代表第 2 组,依次类推;GroupID:组号,-1 代表倒数第 1 组,-2 代表倒数第2组,依次类推

返回:var_array

getGroupFactorValue(group_name)

声明:function

获取调仓日因子值及分组结果;支持按日期、组号或组名查询

可见性:public

参数 类型 说明
group_name string 组名,"第1组"代表第1组,"第2组"代表第2组,依次类推

返回:var_array

getGroupFactorValue(v_end_t, group_id)

声明:function

获取调仓日因子值及分组结果;支持按日期、组号或组名查询

可见性:public

参数 类型 说明
v_end_t datetime 日期,当前时点。 (2)GroupID:组号,1代表第1组,2代表第2组,依次类推;-1代表倒数第1组,-2代表倒数第 2 组,依次类推
group_id integer 分组编号

返回:var_array

factorValue_QueryfactorfullTable(endt, query_typ)

声明:function

查询指定期分组前的完整因子暴露矩阵

可见性:public

参数 类型 说明
endt date 指定期,因子计算日,为nil,表示不对日期做限制
query_typ int 查询类型,默认nil 等价Querytyp =3

返回:var_array

factortccq_quaeyhistory(begt, endt, filtertype)

声明:function

查询因子截止日与对应检验截止日

可见性:public

参数 类型 说明
begt date 日期,开始日
endt date 日期,截止日
filtertype int 整数,过滤方式, 0:根据【因子截止日】过滤 1:根据【检验截止日】过滤 其他:不过滤

返回:array

getGroupReturn(p_type, cy)

声明:function

获取各分组收益率、累计收益率或相对净值数据

可见性:public

参数 类型 说明
p_type int 数值类型,返回的收益类型
cy string 行情或统计周期

返回:array

getGroupTurnOver(weight_type)

声明:function

获取各分组相邻调仓期之间的换手率

可见性:public

参数 类型 说明
weight_type int 换手率计算方法 取值 含义 备注 1 个数法换手率 默认 2 权重法换手率

getTrailingReturn(cy, if_benchmark)

声明:function

检验各因子分组在不同阶段的收益表现与区分度

可见性:public

参数 类型 说明
cy string 考察对象的收益率序列的周期。 取值 含义 备注 -1 得到按调仓周期分的阶段收益 Tsl 中的周期字符串 得到按对应周期分割的收益 如:cy_month() 2 if_benchmark:是否返回基准组,默认0
if_benchmark boolean 是否同时计算基准收益

返回:array

getSignificanceStatistics(cy)

声明:function

执行因子分组收益的显著性检验

可见性:public

参数 类型 说明
cy string 考察对象的收益率序列的周期

返回:array

getLongShortStatistics(cy)

声明:function

是第一组与最后一组的比较

可见性:public

参数 类型 说明
cy string 考察对象的收益率序列的周期

返回:array

getInformationCoefficient(ret_type)

声明:function

获取因子得分与后续收益之间的信息系数 IC

可见性:public

参数 类型 说明
ret_type int 控制返回格式 取值 说明 备注 0 返回详情【默认】 1 返回简单统计 2 返回详情统计

返回:array

getInformationCoefficientbyICType(ic_type)

声明:function

按指定 IC 计算方法获取因子信息系数

可见性:public

参数 类型 说明
ic_type integer 整数类型,IC 类型 取值 含义 备注 0 NormIC 默认 1 RankIC 2 kendall 秩相关 200 行业调整 IC(等权) 同 3 210 行业调整 IC(流通市值加权) 同 4 20 加权 IC(基准权重加权) 同 5

返回:array

getSignalStability()

声明:function

描述T-1期到T 期的信号稳定性

可见性:public

返回:array

getLinearEvaluationResult(show_type)

声明:function

使用线性回归评估各因子对下期收益的贡献

可见性:public

参数 类型 说明
show_type int 返回类型。 取值 含义 备注 0 或者空 拿每期的数据做最小二乘参数估计(带常数项) 1 拿所有期的数据一起做最小二乘参数估计(带常数项) 每期变因子法不能使用该种方法

返回:array

getPrincipalComponentResult(fep, show_type)

声明:function

因变量是下期收益

可见性:public

参数 类型 说明
fep float 累计贡献率阀值。当Fep取到整数时,代表取的主成分的个数。 取值 范例 说明 小数 0.85 代表累计贡献率的阀值(阀值的时候 100%用1.000 表示,一定要用小数)。 整数 2 代表取的主成分的个数
show_type int 返回类型。 取值 说明 备注 0 或者空 分别用每期的数据做主成分回归 1 用所有期数据一起做主成分回归

返回:array

getDecay_InformationCoefficient(begt, endt, ret_type, lag_n)

声明:function

参考延续性检验的说明,来选择ic类型

可见性:public

参数 类型 说明
begt date 调仓日筛选开始日
endt date 调仓日筛选截止日
ret_type int 0、返回详情 1、返回简单统计【默认】 2、返回详情统计 3、0+2
lag_n int 最大间隔期数,默认为5,支持数组给定,例如array(1,2,3,4,5)与给定5的含义一样

返回:array

getDecay_SignalStability(begt, endt, ret_type, lag_n)

声明:function

获取指定区间与滞后期的因子信号稳定性衰减结果

可见性:public

参数 类型 说明
begt date 调仓日筛选开始日
endt date 调仓日筛选截止日
ret_type int 0、返回详情 1、返回统计【默认】
lag_n int 最大间隔期数,默认为5

返回:array

getDecay_IC(lag_n, cycle, ret_type)

声明:function

参考延续性检验的说明,来选择ic类型

可见性:public

参数 类型 说明
lag_n array 一维数组,间隔期数配置,计算IC时相隔的周期(cycle)数 array(1,5,10,15,20),同样 支持给定整数,例如给定3,与array(1,2,3)等效
cycle string 周期,字符串,例如"日线"或者cy_day()
ret_type int 0、返回详情【默认】 1、返回简单统计 2、返回详情统计 3、0+2

返回:array

getDecay_ICByICType(lag_n, cycle, ret_type, ic_type)

声明:function

按指定 IC 类型获取因子延续性衰减结果

可见性:public

参数 类型 说明
lag_n array IC 衰减分析使用的滞后期数组
cycle string 行情或统计周期
ret_type int 控制计算口径的类型选择项
ic_type int 参考GetInformationCoefficientbyICType接口的ICType参数

返回:array

getIndustryIC(beg_t, end_t, ret_type, ic_type)

声明:function

计算并比较因子在不同行业中的信息系数

可见性:public

参数 类型 说明
beg_t date 日期,区间开始日,可为空,不给则为Fbegt
end_t date 日期,区间截止日,可为空,不给则为Fendt
ret_type int 0、返回详情【默认】 1、返回简单统计 2、返回详情统计 3、0+2
ic_type int 整数,IC计算类型 取值 含义 备注

返回:array

getStockZoneIC(beg_t, end_t, ret_type, indesx, ic_type)

声明:function

计算指定股票域或指数成分范围内的因子 IC

可见性:public

参数 类型 说明
beg_t date 日期,区间开始日,可为空,不给则为Fbegt
end_t date 日期,区间截止日,可为空,不给则为Fendt
ret_type int 0、返回详情【默认】 1、返回简单统计 2、返回详情统计 3、0+2
indesx array 一维数组,样本指数序列,默认array("SH000300","SH000905","SH000852")
ic_type int 整数,IC计算类型 取值 含义 备注 0 NormIC 默认 1 RankIC

返回:array

updateStockInfoData(factor_raw_table, v_endt)

声明:function

补充当期股票市值、行业等基本信息,供加权、标准化和中性化使用

可见性:public

参数 类型 说明
factor_raw_table array 因子原值,主要包含代码、截止日、因子原值
v_endt datetime 调仓日

industrializeData(factortable, v_end_t)

声明:function

如果用户需要使用自定义行业且分组考虑行业时候,才需要重载此方法 。即当以下情形才会

可见性:public

参数 类型 说明
factortable array 完成数据处理之后的数组,主要包含代码、截止日、因子原值、奇异值处理后的 值、无量纲化后的值、综合因子得分这些。 (2) vEndT: 调仓日
v_end_t t_date_time 当前计算日期或查询区间的结束日期

返回:array

getBenchmarkWeight(v_end_t)

声明:function

获取指定日期的基准指数成分股权重;可重写

可见性:public

参数 类型 说明
v_end_t t_date_time 当前计算日期或查询区间的结束日期

返回:array

getBenchmarkDailyReturn(v_beg_t, v_end_t)

声明:function

返回基准的每日收益率序列;可重写

可见性:public

参数 类型 说明
v_beg_t date 开始日
v_end_t date 截止日

返回:array

fillMissData(factor_matrix, factors, index)

声明:function

处理因子矩阵缺失值,并同步返回保留样本索引;可重写

可见性:public

参数 类型 说明
factor_matrix array 矩阵,未进行缺失值处理之前的数据。每一列代表一个因子的取值,跟用 户所给因子表的因子顺序相同
factors array 二维数组,因子表的关键信息,包含"因子名称"、"因子公式"、"因子方 向"、"因子比例(%)"字段
index array 一维数组,数据缺失值处理后的索引。因为缺失值处理可能会删除无效数据,需要 返回索引

返回:array

normalizeData(factor_matrix, factors)

声明:function

对因子矩阵执行极值处理;可重写

可见性:public

参数 类型 说明
factor_matrix array 矩阵,未进行极值处理之前的数据。每一列代表一个因子的取值,跟用户 所给因子表的因子顺序相同
factors array 二维数组,当期因子配置

返回:array

standarizeData(factor_matrix, factors)

声明:function

对极值处理后的因子矩阵执行标准化;可重写

可见性:public

参数 类型 说明
factor_matrix array 矩阵,极值处理之后的矩阵。接下来是对这个矩阵进行标准化处理。 (2) Factors:当期因子配置
factors array 参与标准化处理的因子列或因子名称数组

返回:array

neutralizeData(factor_table, factors)

声明:function

对因子表执行行业或市值中性化;可重写

可见性:public

参数 类型 说明
factor_table array 二维数组,未进行中性化处理之前的数据。字段名包含"代码"、"名称"、 "截止日"、"报告期"和因子名称
factors array 二维数组,当期因子配置

返回:array

orthData(factor_table)

声明:function

对因子表执行历史正交化处理;新代码优先使用 OrthDataCore

可见性:public

参数 类型 说明
factor_table array 二维数组,未进行正交化处理之前的数据。字段名包含"代码"、"名称"、 "截止日"、"报告期"和因子名称

返回:array

orthDataCore(factor_table, factors)

声明:function

按配置对因子表执行正交化,支持分组正交;可重写

可见性:public

参数 类型 说明
factor_table array 二维数组,未进行正交化处理之前的数据。字段名包含"代码"、"名称"、 "截止日"、"报告期"和因子名称
factors array 二维数组,因子表

返回:array

scoreData(factor_matrix, my_factor_arr)

声明:function

根据标准化因子矩阵与因子配置计算综合因子得分

可见性:public

参数 类型 说明
factor_matrix array 标准化处理之后的矩阵。 (2) MyFactorArr:当期因子配置
my_factor_arr array 用户自定义因子数组;重写评分逻辑时使用

返回:array

groupData(data, v_end_t)

声明:function

可重写,但一般不需要重写

可见性:public

参数 类型 说明
data array 多因子打分处理之后的矩阵,主要用到"代码"、"截止日"、"综合因子"等字段。 2 VEndT
v_end_t t_date_time 当前计算日期或查询区间的结束日期

返回:array

allocateWeight(data, v_end_t)

声明:function

可重写,但一般不需要重写

可见性:public

参数 类型 说明
data array 因子分组之后的所有组。 (2) VEndT :调仓日
v_end_t date_time 当前计算日期或查询区间的结束日期

返回:array

allocateWeightByGroup(data, v_end_t)

声明:function

注意此方法与 AllocateWeight 的区别, AllocateWeight是要对所有组数挨个个券比例分

可见性:public

参数 类型 说明
data array 因子分组之后的某组成分,为一维数组。 (2) VEndT :调仓日
v_end_t date_time 当前计算日期或查询区间的结束日期

返回:array

getShowPeriod()

声明:function

获取因子评价使用的近一年、近两年、近三年及整体区间;可重写

可见性:public

返回:array

userCalFactors(data, end_t)

声明:function

获取本地自定义因子值并与天软因子数据合并;需按数据来源重写

可见性:public

参数 类型 说明
data array 二维数组,天软因子值表;用于提取本地因子样本,并与本地因子值合并后返回
end_t datetime 需要获取并合并本地因子值的指定日期

返回:array

tsmf_factory_byFactorarr(factorarr, indexid)

声明:function

多因子评价构造器-01.1-每期固定因子库

可见性:public

参数 类型 说明
factorarr array 每期固定的因子库配置数组
indexid index_list 作为基准指数与选股域的指数标识

返回:array

示例

范例01:范例01

factors := unit(MF_Demo_Data_YS_03).samplefactors();
mobj := tsmf_factory_byFactorarr(factors,'SZ399903');
mobj.Fcycle := cy_month();
mobj.fbegt := 20200101T;
mobj.fendt := 20210101T;
mobj.backtest();
return mobj.getgroupreturn(1,cy_day());//更多见多因子框架相关文档。

范例02:调用示例

factorarr := TSUT_Data_factorRandN()['因子库'];
obj := tsmf_factory_byFactorarr(factorarr,'SH000300');
obj.backtest();
return obj.getgroupreturn(1,cy_day());//更多见多因子框架相关文档。

tsmf_factory_bySigleStockFormula(formula, indexid)

声明:function

多因子评价构造器-01.2-单个股票因子公式

可见性:public

参数 类型 说明
formula string 字符串,因子公式
indexid index_list 指数,基准指数&选股域

返回:array

示例

范例01:调用示例

obj := tsmf_factory_bySigleStockFormula('close()','SH000300');
  obj.backtest();
return obj.getgroupreturn(1,cy_day());//更多见多因子框架相关文档。

范例02:范例01

//代码:最近20 日 在沪深300 的表现(数据处理等按默认设置,默认5 组,详见属性汇总)
obj := tsmf_factory_bySigleStockFormula('stockzf2(20)','SH000300');
   obj.FBegT := 20250101T;
   obj.FEndT := 20260428T;
   obj.FCycle := cy_month();
   obj.backtest();
   return mulfactor_Invoker_ExportfactorBackTestData(obj);//返回常用结果