# 风险模型 / 横截面回归 ## `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:调用示例 ```tsl 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