A:
重要说明:
2022-03-14日起,天软不再公开101因子的衍生数据,因此,下面的提取衍生数据的相关接口已下架,需要该因子数据的用户可以通过商务了解天软因子库,或通过因子模型进行实时计算。
相关说明:FAQ:
2022-03-14-量化数据-因子研究:关于天软“终端“因子数据提取方式变更的说明
FAQ:
2022-03-10-应用专题-数据提取专题07:101alpha因子值的快速提取(更新版)
说明:通过上面的专题说明文档用户可以了解到,天软目前提供两种方式得到101因子值。一种是通过函数的计算,另一种是提取天软已经计算好的因子值。
其中,函数计算的方式是对101因子的封装实现,该类函数与证券,时间,证券组合(排名相关等),周期,复权等相关,用户在使用时可根据需求进行设置。
而快速提取的方式是在
固定的周期(日线)、证券组合(一定条件下过滤后的A股)、复权(指定日为基准向前复权)条件下(具体条件请参考专题文档中的5.1 入库规则),计算的证券组合中各个股票的各因子值,天软将这些因子值在每天收盘之后计算入库,用户通过快速提取的方式就可以直接从库中取到各个票的因子值。
PS:1、用户请注意两种方式的区别,根据自己的需求进行选择。
3、快速提取方式的数据更新具体请查看专题文档说明
2、若需要对两种方式的结果进行对比,可参考范例2。
异常因子值理解:
1、股票在指定日停牌时,因子值返回NAN
2、因子中涉及到相关系数的计算的,若在N日内股票存在停牌,则返回NAN
3、因子中价格在N日内排名每日都一样时,相关系数会返回NAN
4、其他侍补充
范例1:通过函数计算因子值-指定日沪深300中各个股票的因子值
BkArr:=getbk('沪深300');
Endt:=20190621T;
setsysparam(pn_StockArr(),BkArr); //必须写
SetSysParam(PN_Cycle(),cy_day());
SetSysParam(PN_Rate(),1);
SetSysParam(PN_RateDay(),Endt);
Setsysparam(pn_date(),Endt);//指定日
r:=array();
for i:=0 to length(BkArr)-1 do
begin
StockId:=BkArr[i];
SetSysParam(PN_Stock(),StockId);
r[i]['代码']:=StockId;
r[i]['名称']:=StockName(StockId);
r[i]['Alph002']:=OHO_Alpha_002();
r[i]['Alph003']:=OHO_Alpha_003();
//其他的模型类似的调用方法,如:OHO_Alpha_xxx,其中 xxx 为对应的序号
//r[i]['Alph00N']:=OHO_Alpha_xxx();
end
return r;
范例2:通过函数得到快速提取的因子值的计算结果
d:=20190605T;
alphaFuns:=1->5;
alphaFuns ::= 'OHO_Alpha_' + FormatFloat('000', mcell);
SetSysParam(PN_Cycle(),cy_day());
SetSysParam(PN_Date(), d);
SetSysParam(PN_Rate(),1);
SetSysParam(PN_RateDay(),d);
//样本股
stocks:=GetAbkbydate("上证A股;深证A股;创业板",d);//中小企业板 已被合并入深证A股板块中
stocks:=Sselect thisrow
from stocks where
spec(istradeday(d) and
StockGoMarketTradeDays()>240,thisrow)
end;
SetSysParam(pn_StockArr(),stocks);
r:=array();
strd:=datetostr(d);
for i:=0 to length(stocks)-1 do
begin
stockid:=stocks[i];
SetSysParam(pn_stock(),stockid);
r[i,"证券代码"]:=StockID;
r[i,"证券名称"]:=stockname(stockid);
r[i,"截止日"]:=strd;
for j:=0 to length(alphaFuns)-1 do
begin
alphaFun := alphaFuns[j];
r[i,alphaFun] := call(alphaFun);
end
end
return r;
范例2函数:
附件:alpha101_YSToDB_Demo.fun