7.1 KiB
风险模型 / 横截面回归
TSRM_CrossSection
声明:class
横截面回归框架
fConstant
声明:field
是否包含截距项
可见性:public
类型:bool
fConfig
声明:field
配置项 算法配置项
可见性:public
类型:array
fBegT
声明:field
回测开始日期 20240101T
可见性:public
类型:date
fEndT
声明:field
回测结束日期 20240331T
可见性:public
类型:date
fCycle
声明:field
行情周期 '月线'
可见性:public
类型:string
fIndexid
声明:field
基准指数代码 'SH000300'
可见性:public
类型:string
fIndustryName
声明:field
行业字段名称 '行业名称'
可见性:public
类型:string
csRegress()
声明:function
进行回归求解,返回相关回归结果数据
可见性:public
query_Factor_Ret()
声明:function
查询因子收益
可见性:public
query_Specific_Ret()
声明:function
查询特质收益
可见性:public
query_Pure_Factor_Portfolio_Weight()
声明:function
查询纯因子组合权重,一列一个纯因子组合,一般不具投资性,单位为 1
可见性:public
cstTest()
声明:function
计算回归系数的显著性检验的 T 值
可见性:public
csrSquare()
声明:function
计算总 R 方和相对 R 方
可见性:public
csvif()
声明:function
计算方差膨胀系数
可见性:public
csrSquare_CV()
声明:function
计算交叉验证 R2 和学生化 R 方
可见性:public
rms_Return_Decomposing()
声明:function
截面波动率分解
可见性:public
示例
范例01:调用示例
Endt := 20201231t;
setsysparam(pn_date(),EndT);
//提取成分股
StockArr := GetABKByDate("A 股",EndT);
//提取数据
data := StockArr;
with *,array(PN_Date():Endt) do
data ::= spec(array('代码':mcell,
'下期收益':ref(StockZf3(),-1),
'市值':StockMarketValue(sp_time()),
'行业':StockSWIndustryNameLv1(),
)
union
ifthen(ifnil(t := StockStyleFactor(1)),array(),t),mcell);
Delete from data where ifnil(["市值因子"]); //剔除风格因子为空的股票
//截面回归
csr := new TSRM_CrossSection();
csr.FData := data;
csr.FConstant := 1;
csr.FIndField := array('行业');
csr.FIndustry := array('申万农林牧渔','申万采掘','申万化工','申万电子',
'申万家用电器','申万食品饮料','申万纺织服装','申万轻工制造',
'申万医药生物','申万公用事业','申万交通运输','申万房地产',
'申万商业贸易','申万综合','申万有色金属','申万钢铁',
'申万休闲服务','申万建筑材料','申万建筑装饰','申万电气设备',
'申万机械设备','申万国防军工','申万汽车','申万银行',
'申万非银金融','申万计算机','申万传媒','申万通信',
);
csr.FStyleField := mCols(data,1)[4:mcols(data)-1];
csr.CSRegress();
ret := array('因子收益率':csr.Query_Factor_Ret(),'特质收益率
':csr.Query_Specific_Ret(),
'纯因子组合权重':csr.Query_Pure_Factor_Portfolio_Weight(),
'---评估指标---':'-----') union csr.CSTTest()
union csr.CSRSquare() union csr.CSVIF() union
csr.CSRSquare_CV()
union array('截面波动率分解':csr.RMS_Return_Decomposing());
return ret;
backtest()
声明:function
回测主函数
可见性:public
返回:array
getTradeDays()
声明:function
根据 FBegT/FEndT/FCycle 获取市场交易日,用户可重载自定义股票池交易日筛选逻辑,返
可见性:public
返回:array
getFactorData(endt)
声明:function
单期因子数据计算,用户必须重写
可见性:public
| 参数 | 类型 | 说明 |
|---|---|---|
endt |
date | 截止日 |
返回:array
getcsr(factor_data, endt)
声明:function
单期横截面回归对象,支持用户重写,选择不带常数项回归等
可见性:public
| 参数 | 类型 | 说明 |
|---|---|---|
factor_data |
array | 二维表,GetFactorData(endt)每期返回的结果 |
endt |
datetime | 截止日 |
返回:obj
getFactorPerformance()
声明:function
全因子绩效汇总,单因子一行,包含累计 / 年化收益、年化波动、夏普、最大回撤、基准相
可见性:public
返回:array
getR2Performance(ma_length)
声明:function
R 方时序 + 自定义窗口滚动均值,缺省 MALength=12
可见性:public
| 参数 | 类型 | 说明 |
|---|---|---|
ma_length |
int | 滚动计算窗口长度 |
返回:array
getFactorReturn(return_type)
声明:function
因子收益输出,ReturnType=0 原始每期收益,ReturnType=1 累计收益
可见性:public
| 参数 | 类型 | 说明 |
|---|---|---|
return_type |
int | 输出类型,默认 0 |
返回:array
getFactorCorr()
声明:function
基于因子收益率时序,计算各因子间相关系数矩阵
可见性:public
返回:array
getRMS(ma_length)
声明:function
RMS 收益分解时序 + 自定义窗口滚动均值,缺省 MALength=12
可见性:public
| 参数 | 类型 | 说明 |
|---|---|---|
ma_length |
int | 滚动窗口 |
返回:array
getR2Mean()
声明:function
R 方均值
可见性:public
返回:array