Files
playbook/skills/tsl-api-reference/references/codegen/module/tsf-factor-ext-indicator-base.md
T

29 KiB
Raw Blame History

因子指标 / 扩展指标

tsf_factorExtindiCator_base

声明:class

因子指标计算框架

frf

声明:field

无风险收益率(%)/最低可接受收益率(%)

可见性:public

类型:real

configSet(key, value)

声明:function

设置配置项

可见性:public

参数 类型 说明
key string 要设置的配置项名称
value any 要写入配置项的值

示例

范例01:调用示例

Obj := new tsf_factorExtindicator_Base();
Obj.configSet('总组数',5);

configGet(key)

声明:function

获取配置项

可见性:public

参数 类型 说明
key string 要读取的配置项名称

示例

范例01:调用示例

Obj := new tsf_factorExtindicator_Base();
Return Obj.configGet('总组数');  //5

defaultConfig()

声明:function

默认配置,用户可重载,来设置默认配置,如'总组数''基准指数''回测周期''是否年化'

可见性:public

返回:array

getIC(begt, endt, ic_type)

声明:function

获得 IC 数据,需要用户重载,基类未实现,返回空数组,并提示报错:getIC 方法必须重写!

可见性:public

参数 类型 说明
begt end_date 日期,开始日
endt end_date 日期,截止日
ic_type int 整数,IC 类型,用户可自行对照

返回:array

getDailyGroupReturnAllG(begt, endt)

声明:function

获取全部分组的日收益数据;基类未实现,使用时必须重写

可见性:public

参数 类型 说明
begt end_date 日期,开始日
endt end_date 日期,截止日

返回:array

getDailyGroupReturn(begt, endt, group_name)

声明:function

获得指定组名的分组日收益数据

可见性:public

参数 类型 说明
begt end_date 日期,开始日
endt end_date 日期,截止日
group_name string_or_array 要返回的分组名称或名称数组;为空时返回全部分组

返回:array

getFactorReturn(begt, endt)

声明:function

获取因子回归分析数据;基类未实现,使用时必须重写

可见性:public

参数 类型 说明
begt end_date 日期,开始日
endt end_date 日期,截止日

返回:array

getgroupstocks(endt, gtype)

声明:function

获取指定日、指定分组的成分股及因子值;基类未实现,使用时必须重写

可见性:public

参数 类型 说明
endt end_date 日期,截止日
gtype int 分组类型:nil 全部分组;-1 最后一组;-2 多空组;正整数表示对应组号

返回:array

gettcrq(begt, endt)

声明:function

获得指定区间的调仓日序列

可见性:public

参数 类型 说明
begt end_date 日期,开始日
endt end_date 日期,截止日

返回:array

get_ICI_mean(begt, endt, ic_type)

声明:function

计算 IC 均值

可见性:public

参数 类型 说明
begt end_date 日期,开始日
endt end_date 日期,截止日
ic_type int 整数,IC 类型,取值与 getIC 模型一致

返回:real

get_ICI_StdDev(begt, endt, ic_type)

声明:function

计算 IC 标准差

可见性:public

参数 类型 说明
begt end_date 日期,开始日
endt end_date 日期,截止日
ic_type int 整数,IC 类型,取值与 getIC 模型一致

返回:real

get_ICI_Absmean(begt, endt, ic_type)

声明:function

计算 IC 绝对值的均值

可见性:public

参数 类型 说明
begt end_date 日期,开始日
endt end_date 日期,截止日
ic_type int 整数,IC 类型,取值与 getIC 模型一致

返回:real

get_ICI_Win_pct(begt, endt, ic_type)

声明:function

计算 IC 胜率(%)

可见性:public

参数 类型 说明
begt end_date 日期,开始日
endt end_date 日期,截止日
ic_type int 整数,IC 类型,取值与 getIC 模型一致

返回:real

get_ICI_ICIR(begt, endt, ic_type)

声明:function

计算 ICIR

可见性:public

参数 类型 说明
begt end_date 日期,开始日
endt end_date 日期,截止日
ic_type int 整数,IC 类型,取值与 getIC 模型一致

返回:real

get_Ri_CumReturn(begt, endt, rt_type)

声明:function

计算区间累计收益率(%)

可见性:public

参数 类型 说明
begt end_date 日期,开始日
endt end_date 日期,截止日
rt_type int 收益率类型:0 基准;1 多头(第 1 组);2 多头超额(第 1 组减基准);3 空头(最后 1 组);4 空头超额(最后 1 组减基准);5 多空(第 1 组减最后 1 组);6 多空超额(多空减基准);7 因子收益率

返回:real

get_Ri_volatility(begt, endt, rt_type)

声明:function

计算区间收益率标准差(%)

可见性:public

参数 类型 说明
begt end_date 日期,开始日
endt end_date 日期,截止日
rt_type int 整数,收益率类型,取值与 Get_Ri_CumReturn模型一致

返回:real

get_Ri_Sharpe_ratio(begt, endt, rt_type)

声明:function

计算指定收益类型在区间内的夏普比率

可见性:public

参数 类型 说明
begt end_date 日期,开始日
endt end_date 日期,截止日
rt_type int 整数,收益率类型,取值与 Get_Ri_CumReturn模型一致

返回:real

get_Ri_Win_pct(begt, endt, rt_type)

声明:function

计算收益率胜率(%)

可见性:public

参数 类型 说明
begt end_date 日期,开始日
endt end_date 日期,截止日
rt_type int 整数,收益率类型,取值与 Get_Ri_CumReturn模型一致

返回:real

get_Ri_cagr(begt, endt, rt_type)

声明:function

计算年化收益率 (%)

可见性:public

参数 类型 说明
begt end_date 日期,开始日
endt end_date 日期,截止日
rt_type int 整数,收益率类型,取值与Get_Ri_CumReturn模型一致

返回:real

get_Ri_mean(begt, endt, rt_type)

声明:function

计算平均收益率

可见性:public

参数 类型 说明
begt end_date 日期,开始日
endt end_date 日期,截止日
rt_type int 整数,收益率类型,取值与Get_Ri_CumReturn模型一致

返回:real

get_Ri_To_CumReturn(begt, endt, rt_type)

声明:function

指定类型的累计收益率(%)序列

可见性:public

参数 类型 说明
begt end_date 日期,开始日
endt end_date 日期,截止日
rt_type int 整数,收益率类型,取值与Get_Ri_CumReturn模型一致

返回:array

get_Ti_AbsMean(begt, endt)

声明:function

计算 T 值绝对值的均值

可见性:public

参数 类型 说明
begt end_date 日期,开始日
endt end_date 日期,截止日

返回:real

get_Ti_AbsSignProp(begt, endt, abstsignv)

声明:function

计算 T 值大于 abstsignv 的占比

可见性:public

参数 类型 说明
begt end_date 日期,开始日
endt end_date 日期,截止日
abstsignv real 实数

返回:real

get_Crowding_ValuPB(endt, alg_type)

声明:function

基于估值指标 PB 衡量的因子分化程度,其中 PB 为市净率,BP 为市净率的倒数

可见性:public

参数 类型 说明
endt end_date 日期,截止日
alg_type int 整数,算法类型 取值 含义 备注 0 差值 默认 1 比率

返回:real

get_Crowding_ValuPE(endt, alg_type)

声明:function

基于估值指标 PE 衡量因子分化程度,其中 PE 为市盈率,EP 为市盈率的倒数;

可见性:public

参数 类型 说明
endt end_date 日期,截止日
alg_type int 整数,算法类型 取值 含义 备注 0 差值 默认 1 比率

返回:real

get_Crowding_ValuFac(endt, alg_type)

声明:function

基于估值指标因子值衡量因子分化程度

可见性:public

参数 类型 说明
endt end_date 日期,截止日
alg_type int 整数,算法类型 取值 含义 备注 0 差值 默认 1 比率

返回:real

get_Crowding_Corr(begt, endt, alg_type, option)

声明:function

计算不同因子值的个股收益率之间的相关性

可见性:public

参数 类型 说明
begt end_date 日期,开始日
endt end_date 日期,截止日
alg_type int 整数,算法类型 取值 含义 备注 0 多头-空头 默认 1 多头+空头 2 多头 3 空头
option int 整数,计算相关系数的算法类型 取值 含义 备注 0 日均收益率与组内成分股 默认 1 组内成分股与成分股之间

返回:real

get_Crowding_Volatility(begt, endt, alg_type)

声明:function

基于波动率比率衡量因子波动率

可见性:public

参数 类型 说明
begt end_date 日期,开始日
endt end_date 日期,截止日
alg_type int 波动率比率算法:0 多头与空头的波动比率(默认);1 多头与市场的波动比率;2 多空与市场的波动比率;市场指全局配置的基准指数

返回:real

get_Crowding_AssetCentrality(begt, endt, ep)

声明:function

计算各分组的资产集中度,并以多头组资产集中度作为当期因子集中度;分组数使用全局配置

可见性:public

参数 类型 说明
begt end_date 日期,开始日
endt end_date 日期,截止日
ep real|integer 累计贡献度阈值或主成分个数:实数表示累计贡献度阈值,整数表示选用的主成分个数

返回:real

getFactor_Crowded_TopBottomStocks(begt, endt, zbarr, seq_standard, n)

声明:function

多空分组指标计算,价差法,即分别算出多组、空组股票池的指标值,加权后相减获得值

可见性:public

参数 类型 说明
begt end_date 计算区间的开始日期
endt end_date 计算区间的截止日期
zbarr array 自定义拥挤指标配置表;为空时使用文档列出的六项默认指标
seq_standard int 时序标准化方式:-1 不处理;0 百分位;1 Z 值
n int 移动时序标准化窗口期数,默认 3 期

返回:array

getFactor_Discrete(begt, end_t, seq_standard, n)

声明:function

计算因子值分化度, 支持移动时序标准化处理

可见性:public

参数 类型 说明
begt end_date 日期,开始日
end_t end_date 日期,截止日
seq_standard int 整数,结果时序标准化方式,与 GetFactor_Crowded_TopBottomStocks一致
n int 整数,移动窗口期数,默认为3 期,进行时序标准化处理时生效

返回:array

get_Seq_Rt(begt, endt, rt_type)

声明:function

返回指定类型的日收益率的一维数字序列

可见性:public

参数 类型 说明
begt end_date 日期,开始日
endt end_date 日期,截止日
rt_type integer 收益率类型选择项,取值与 Get_Ri_CumReturn 一致

返回:array

get_Seq_IC(begt, endt, ic_type)

声明:function

返回 IC 的一维数字序列

可见性:public

参数 类型 说明
begt end_date 日期,开始日
endt end_date 日期,截止日
ic_type integer IC 类型选择项,取值与 getIC 一致

返回:array

get_Seq_T(begt, endt)

声明:function

返回 T 值的一维数字序列

可见性:public

参数 类型 说明
begt end_date 日期,开始日
endt end_date 日期,截止日

返回:array

get_Seq2_Rt(begt, endt, rt_type)

声明:function

返回指定类型的日收益率

可见性:public

参数 类型 说明
begt end_date 日期,开始日
endt end_date 日期,截止日
rt_type integer 收益率类型选择项,取值与 Get_Ri_CumReturn 一致

返回:array

get_Seq2_IC(begt, endt, ic_type)

声明:function

返回 IC

可见性:public

参数 类型 说明
begt end_date 日期,开始日
endt end_date 日期,截止日
ic_type integer IC 类型选择项,取值与 getIC 一致

返回:array

get_Seq2_T(begt, endt)

声明:function

返回 T 值

可见性:public

参数 类型 说明
begt end_date 日期,开始日
endt end_date 日期,截止日

返回:array

getFactorReturnandIC(begt, endt, ic_type)

声明:function

同时获得因子回归分析数据和 IC 数据

可见性:public

参数 类型 说明
begt end_date 日期,开始日
endt end_date 日期,截止日
ic_type integer IC 类型选择项,取值与 getIC 一致

返回:array

getLongShortReturn(begt, endt, cycle)

声明:function

返回指定周期的多空收益率(%)和多空累计收益(%)

可见性:public

参数 类型 说明
begt end_date 日期,开始日
endt end_date 日期,截止日
cycle cycle 多空收益率的统计周期

返回:array

getGroupN()

声明:function

获取分组数,默认为系统配置的全局参数-总组数,可重载

可见性:public

返回:int

getLongName()

声明:function

获取多头组名称,默认第1 组,可重载

可见性:public

返回:string

getShortName()

声明:function

获取空头组名称,默认第最后一组,假设一共分为5 组,则返回:第 5 组,可重载

可见性:public

返回:string

transferGroupName(group_name)

声明:function

转化分组名称,将"多头"转化为"第 1 组",将"空头" ,"最后 1 组"转化为最后一组的实际组名

可见性:public

参数 类型 说明
group_name string 字符串或数组,被转化的数组/字符串

返回:array

getGroupNameByGType(g_type)

声明:function

将分组类型代码转换为分组名称

可见性:public

参数 类型 说明
g_type int 分组类型:-1 最后一组;-2 多空组;正整数表示对应组号

返回:string

getDaysInOneYear(cycle)

声明:function

根据周期获得年化系数

可见性:public

参数 类型 说明
cycle cycle 用于确定年化系数的统计周期

返回:real

getFdaysIn1y(begt, endt, rt_type)

声明:function

根据收益类型获取年化系数

可见性:public

参数 类型 说明
begt end_date 日期,开始日
endt end_date 日期,截止日
rt_type int 收益类型:0 基准;1 多头;2 多头超额;3 空头;4 空头超额

返回:real

示例

范例01:.4.1 范例一:如何设置配置

Obj := new tsf_factorExtindicator_test();
Obj.configSet('基准指数','SH000985'); //修改指数为中证全指
return obj.getDailyGroupReturnAllG(20260101T,20260331T);

范例02:可通过 tsf_factorExtindicator_test类来查看必须重写的方法的返回,为随机生成的数据

obj := new tsf_factorExtindicator_test();
   return array('分组收益-第一组
':obj.getDailyGroupReturn(20260101T,20260331T,'第1 组'),
         '分组收益':obj.getDailyGroupReturnAllG(20260101T,20260331T),
         'IC': obj.getIC(20260101T,20260331T,1),
         '回归分析':obj.getFactorReturn(20260101T,20260331T),
         '组成分详情':obj.getgroupstocks(20260331T,1));

tsfAdapterfun_mulfactor2Extindicator(obj_ts_multi_factor, if_cache)

声明:function

将已完成回测的多因子框架对象转换为因子指标框架对象;基础 IC、分组收益和回归分析数据取自多因子框架

可见性:public

参数 类型 说明
obj_ts_multi_factor tsl_object 已完成回测的 TSMultiFactor 框架对象
if_cache boolean 是否预缓存中间指标数据:1 预缓存;0 不缓存(默认)

返回:tsl_object

示例

范例01:调用示例

//详见 mulfactor_Invoker_GetFactorMetricsOverview
begt := 20260101T;
endt := 20260529T;
//多因子框架实例:中证200 域内,20 日动量因子
obj_TSMultiFactor :=
tsmf_factory_bySigleStockFormula('stockzf2(20)','SH000904');
obj_TSMultiFactor.FBegT := begt;
obj_TSMultiFactor.FEndT := endt;
obj_TSMultiFactor.FCycle := '月线';
obj_TSMultiFactor.BackTest();
//调用转化器
obj := tsfAdapterfun_mulfactor2Extindicator(obj_TSMultiFactor,1);
//获取缓存数据
Fdata := obj.Fdata;
//计算指标





rtlb := Fdata['分组日收益率数据'];
ic1 := Fdata['行业调整IC'];
ret := array();
ret[0,"开始日"] := begt;
ret[0,"截止日"] := endt;
ret[0,"多空分析@多空累计收益(%)"] := obj.Get_Ri_CumReturn(Begt,endt,5);
ret[0,"IC 分析@IC 均值"] := obj.Get_ICI_mean(Begt,endt,1);
ret[0,"IC 分析@IC_行业调整均值"] := mean(ic1[:,"行业调整@IC"]);
ret[0,"回归分析@|T 值|均值(%)"] := obj.Get_Ti_AbsMean(Begt,endt);
ret[0,"相关系数"] := correl(rtlb[:,'基准'],rtlb[:,'多空组']);
return ret;

范例02:调用示例

// 详见 mulfactor_Invoker_GetFactorCrowd
begt := 20260101T;
endt := 20260529T;
//多因子框架实例:中证200 域内,20 日动量因子
obj_TSMultiFactor :=
tsmf_factory_bySigleStockFormula('stockzf2(20)','SH000904');
obj_TSMultiFactor.FBegT := begt;
obj_TSMultiFactor.FEndT := endt;
obj_TSMultiFactor.FCycle := '月线';
obj_TSMultiFactor.BackTest();
//调用转化器
obj := tsfAdapterfun_mulfactor2Extindicator(obj_TSMultiFactor,1);
//计算指标: 多空拥挤度
data := obj.GetFactor_Crowded_TopBottomStocks(begt,endt,nil,0,10);






//叠加未来6 期累计涨幅
//未来2 期收益(%):以月线2026-10-31 为例,2026-11-01~2026-12-31 的累计涨幅
rt := obj.getFactorReturn(begt,endt);
reindex(rt,rt[:,'截止日']);
t := data[:,'截止日'];
n := length(t);
n2 := length(rt);
zfcol := array();
for i := 0 to length(t)-1 do
begin
   for j := 1 to 6 do
   begin
      if i = 0 then zfcol &= array('未来'$j$'期涨幅');
      if  i-1+j >= n-(n-n2) then
         data [i,'未来'$j$'期涨幅'] := '-';
      else begin
         rt_ := rt[t[i:i+j-1],'因子收益率'];
         data[i,'未来'$j$'期涨幅'] := FI_CumReturn(rt_);
      end
   end
end
return array('因子拥挤':data,
             '因子离散度':obj.GetFactor_Discrete(begt,endt,0,10));