A:在多因子框架中,可以通过改写因子分组的成员方法
GroupData_EachGroup来自定义因子分组。
在该方法中通过区分
综合因子值的差异自定义分组,返回格式为
array(("组名":"第n组","详情":"第n组数据"))
参考:FAQ:
2025-03-31-应用专题-多因子框架01:天软多因子框架TSMultiFactor(更新版)
实现范例
按因子大小分组,大于等于0的为一组,小于0的为另一组
执行代码:
obj:=CreateObject('MyFactorclass');
obj.FBegT:= 20210101T;
obj.FEndT:= 20230331t;
obj.FIndexId:='SH000016';
obj.FCycle:=cy_month();
obj.FFactorArr:=array(("因子名称":"zf","因子公式":"StockZf3()-spec(stockzf3(),'SH000016')","因子方向":1,"因子比例(%)":50),
("因子名称":"pe","因子公式":"1/stockpe(EndT)","因子方向":1,"因子比例(%)":50));
obj.BackTest();
return array(
'调仓日':obj.GetTimeSeries(),
'所有调仓日因子值及分组':obj.GetGroupFactorValue(),
'-----收益率-----':'-----------',
'日累计收益率(%)':obj.GetGroupReturn(1,cy_day()),
'日累计超额收益率(%)':obj.GetGroupReturn(3,cy_day()),
'月度收益率(%)':obj.GetGroupReturn(0,cy_month()),
'月度超额收益率(%)':obj.GetGroupReturn(2,cy_month()),
'多空月度收益率(%)':obj.GetGroupReturn(4,cy_month()),
'-----因子检验-----':'-----------',
'因子收益率检验':obj.GetTrailingReturn(cy_month()),
'因子显著性检验':obj.GetSignificanceStatistics(cy_month()),
'因子区分度检验':obj.GetLongShortStatistics(cy_month()),
'因子延续性检验':obj.GetInformationCoefficient(),
);
继承重写类方法:
Type MyFactorclass=class(TSMultiFactor)
Function GroupData_EachGroup(Data,tGroup);virtual;
Begin
r:=Array();
r[0]['组名']:='第1组';
tmp:=select * from data where ['综合因子']>=0 end;
tmp[:,'组名']:='第1组';
r[0]['详情'] := tmp;
r[1]['组名']:='第2组';
tmp:=select * from data where ['综合因子']<0 end;
tmp[:,'组名']:='第2组';
r[1]['详情'] := tmp;
Return r;
End;
End
部分分组结果:
