# 风险模型 / 横截面回归

## `tsrm_CrossSection`

声明：class

横截面回归框架

<!-- tags: 拟合 截面回归 因子收益 风险模型 -->

### `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

进行回归求解，返回相关回归结果数据

<!-- tags: 拟合 因子收益 -->

可见性：`public`

### `Query_Factor_Ret()`

声明：function

查询因子收益

<!-- tags: 回报率 投资收益 因子分析 因子指标 -->

可见性：`public`

### `Query_Specific_Ret()`

声明：function

查询特质收益

<!-- tags: 回报率 投资收益 -->

可见性：`public`

### `Query_Pure_Factor_Portfolio_Weight()`

声明：function

查询纯因子组合权重，一列一个纯因子组合，一般不具投资性，单位为 1

<!-- tags: 因子分析 因子指标 资产配置 投资组合 资产组合 -->

可见性：`public`

### `CstTest()`

声明：function

计算回归系数的显著性检验的 T 值

<!-- tags: 检查 判定 验证 拟合 T检验 -->

可见性：`public`

### `CsrSquare()`

声明：function

计算总 R 方和相对 R 方

<!-- tags: 计算 总R方 相对R方 -->

可见性：`public`

### `Csvif()`

声明：function

计算方差膨胀系数

<!-- tags: 计算 方差膨胀因子 多重共线性 -->

可见性：`public`

### `CsrSquare_CV()`

声明：function

计算交叉验证 R2 和学生化 R 方

<!-- tags: 检查 判定 拟合优度 决定系数 -->

可见性：`public`

### `Rms_Return_Decomposing()`

声明：function

截面波动率分解

<!-- tags: 计算 截面波动率 风险分解 -->

可见性：`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

回测主函数

<!-- tags: 执行 多期回归 横截面回归 -->

可见性：`public`

返回：array

### `GetTradeDays()`

声明：function

根据 FBegT/FEndT/FCycle 获取市场交易日，用户可重载自定义股票池交易日筛选逻辑，返

<!-- tags: 查询 过滤 样本池 证券池 买卖 交易策略 证券 个股 -->

可见性：`public`

返回：array

### `GetFactorData(endt)`

声明：function

单期因子数据计算，用户必须重写

<!-- tags: 查询 因子分析 因子指标 -->

可见性：`public`

| 参数   | 类型 | 说明   |
| ------ | ---- | ------ |
| `endt` | date | 截止日 |

返回：array

### `Getcsr(factor_data, endt)`

声明：function

单期横截面回归对象，支持用户重写，选择不带常数项回归等

<!-- tags: 创建 横截面回归 回归对象 -->

可见性：`public`

| 参数          | 类型     | 说明                                      |
| ------------- | -------- | ----------------------------------------- |
| `factor_data` | array    | 二维表，GetFactorData(endt)每期返回的结果 |
| `endt`        | datetime | 截止日                                    |

返回：obj

### `GetFactorPerformance()`

声明：function

全因子绩效汇总，单因子一行，包含累计 / 年化收益、年化波动、夏普、最大回撤、基准相

<!-- tags: 查询 业绩表现 因子分析 因子指标 亏损幅度 夏普比率 风险调整收益 比较基准 -->

可见性：`public`

返回：array

### `GetR2Performance(ma_length)`

声明：function

R 方时序 + 自定义窗口滚动均值，缺省 MALength=12

<!-- tags: 查询 绩效 业绩表现 拟合优度 决定系数 -->

可见性：`public`

| 参数        | 类型 | 说明             |
| ----------- | ---- | ---------------- |
| `ma_length` | int  | 滚动计算窗口长度 |

返回：array

### `GetFactorReturn(return_type)`

声明：function

因子收益输出，ReturnType=0 原始每期收益，ReturnType=1 累计收益

<!-- tags: 查询 打印 回报率 投资收益 因子分析 因子指标 -->

可见性：`public`

| 参数          | 类型 | 说明             |
| ------------- | ---- | ---------------- |
| `return_type` | int  | 输出类型，默认 0 |

返回：array

### `GetFactorCorr()`

声明：function

基于因子收益率时序，计算各因子间相关系数矩阵

<!-- tags: 查询 回报率 投资收益 因子分析 因子指标 相关性 关联关系 -->

可见性：`public`

返回：array

### `GetRMS(ma_length)`

声明：function

RMS 收益分解时序 + 自定义窗口滚动均值，缺省 MALength=12

<!-- tags: 查询 RMS 风险分解 滚动均值 -->

可见性：`public`

| 参数        | 类型 | 说明     |
| ----------- | ---- | -------- |
| `ma_length` | int  | 滚动窗口 |

返回：array

### `GetR2Mean()`

声明：function

R 方均值

<!-- tags: 查询 R方均值 拟合优度 截面回归 -->

可见性：`public`

返回：array
