473 lines
12 KiB
Markdown
473 lines
12 KiB
Markdown
# 风险模型 / 风险矩阵
|
||
|
||
## `TSRM_RiskMatrix`
|
||
|
||
声明:class
|
||
|
||
风险矩阵计算框架
|
||
|
||
<!-- tags: 风险管理 风控 风险估计 协方差矩阵 风险模型 -->
|
||
|
||
### `fFactorRet`
|
||
|
||
声明:field
|
||
|
||
因子收益率(%)
|
||
|
||
可见性:`public`
|
||
|
||
类型:array
|
||
|
||
### `fSpecificRet`
|
||
|
||
声明:field
|
||
|
||
特异性收益率(%)
|
||
|
||
可见性:`public`
|
||
|
||
类型:array
|
||
|
||
### `fConstName`
|
||
|
||
声明:field
|
||
|
||
国家因子名称 国家因子
|
||
|
||
可见性:`public`
|
||
|
||
类型:string
|
||
|
||
### `fIndustry`
|
||
|
||
声明:field
|
||
|
||
行业因子名称
|
||
|
||
可见性:`public`
|
||
|
||
类型:array
|
||
|
||
### `fStyle`
|
||
|
||
声明:field
|
||
|
||
风格因子名称
|
||
|
||
可见性:`public`
|
||
|
||
类型:array
|
||
|
||
### `fEvalStockValue`
|
||
|
||
声明:field
|
||
|
||
计算股票市值的字符串表达式
|
||
|
||
可见性:`public`
|
||
|
||
类型:string
|
||
|
||
### `fEvalIndustry`
|
||
|
||
声明:field
|
||
|
||
获取行业名称的字符串表达式
|
||
|
||
可见性:`public`
|
||
|
||
类型:string
|
||
|
||
### `fEvalStyle`
|
||
|
||
声明:field
|
||
|
||
获取风格因子值的字符串表达式
|
||
|
||
可见性:`public`
|
||
|
||
类型:string
|
||
|
||
### `ffr_Cov_Half`
|
||
|
||
声明:field
|
||
|
||
计算因子收益率协方差的加权半衰期 504
|
||
|
||
可见性:`public`
|
||
|
||
类型:integer
|
||
|
||
### `ffr_Cov_Lag`
|
||
|
||
声明:field
|
||
|
||
因子收益率协方差 newey-west 调整的滞后期 2
|
||
|
||
可见性:`public`
|
||
|
||
类型:integer
|
||
|
||
### `ffr_IF_Eigen`
|
||
|
||
声明:field
|
||
|
||
是否进行 eigenfactor 调整 False
|
||
|
||
可见性:`public`
|
||
|
||
类型:bool
|
||
|
||
### `fsr_Half`
|
||
|
||
声明:field
|
||
|
||
计算特质收益率方差的加权半衰期 84
|
||
|
||
可见性:`public`
|
||
|
||
类型:integer
|
||
|
||
### `fsr_NW_Lag`
|
||
|
||
声明:field
|
||
|
||
特质收益率方差的 newey-west 调整的滞后期 5
|
||
|
||
可见性:`public`
|
||
|
||
类型:integer
|
||
|
||
### `fsr_IF_Struct`
|
||
|
||
声明:field
|
||
|
||
是否进行结构化调整 True
|
||
|
||
可见性:`public`
|
||
|
||
类型:bool
|
||
|
||
### `fsr_SH_q`
|
||
|
||
声明:field
|
||
|
||
特质收益率方差的贝叶斯收缩的经验系数 q 1
|
||
|
||
可见性:`public`
|
||
|
||
类型:real
|
||
|
||
### `ffr_Data_Len`
|
||
|
||
声明:field
|
||
|
||
计算因子收益率协方差矩阵时需要的数据长度 252
|
||
|
||
可见性:`public`
|
||
|
||
类型:integer
|
||
|
||
### `fsr_Data_Len`
|
||
|
||
声明:field
|
||
|
||
计算特质收益率方差的数据长度 252
|
||
|
||
可见性:`public`
|
||
|
||
类型:integer
|
||
|
||
### `fIfGrid`
|
||
|
||
声明:field
|
||
|
||
是否启用网格 True
|
||
|
||
可见性:`public`
|
||
|
||
类型:bool
|
||
|
||
### `fIfLimitGridN`
|
||
|
||
声明:field
|
||
|
||
是否限制网格个数 True
|
||
|
||
可见性:`public`
|
||
|
||
类型:bool
|
||
|
||
### `fGridN`
|
||
|
||
声明:field
|
||
|
||
网格数 3
|
||
|
||
可见性:`public`
|
||
|
||
类型:integer
|
||
|
||
### `ffrCov`
|
||
|
||
声明:field
|
||
|
||
因子收益率协方差矩阵,含调整过程
|
||
|
||
可见性:`public`
|
||
|
||
类型:array
|
||
|
||
### `fFinalFRCov`
|
||
|
||
声明:field
|
||
|
||
最终的因子收益率协方差矩阵
|
||
|
||
可见性:`public`
|
||
|
||
类型:array
|
||
|
||
### `main(begt, endt, index_id)`
|
||
|
||
声明:function
|
||
|
||
一般来说,用户直接调用该函数就可以计算因子收益率协方差矩阵和特质收益率方差
|
||
|
||
<!-- tags: 执行 回报率 投资收益 因子分析 因子指标 -->
|
||
|
||
可见性:`public`
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ---------- | -------- | ---------------------------------------------------------- |
|
||
| `begt` | datetime | 开始日,日期类型,获取因子收益率和特质收益率的开始日期 |
|
||
| `endt` | datetime | 截止日,日期类型,获取因子收益率和特质收益率的截止日期 |
|
||
| `index_id` | string | 指数代码,字符串,获取对应指数成分的因子收益率和特质收益率 |
|
||
|
||
### `calFRCov()`
|
||
|
||
声明:function
|
||
|
||
计算每一期因子收益率的协方差和各种调整后的协方差
|
||
|
||
<!-- tags: 回报率 投资收益 因子分析 因子指标 协方差矩阵 -->
|
||
|
||
可见性:`public`
|
||
|
||
### `calSRVar()`
|
||
|
||
声明:function
|
||
|
||
计算每一期股票特质收益率的方差
|
||
|
||
<!-- tags: 回报率 投资收益 证券 个股 -->
|
||
|
||
可见性:`public`
|
||
|
||
### `getStockValue(endt, stockarr)`
|
||
|
||
声明:function
|
||
|
||
计算股票列表在截止日的流通市值
|
||
|
||
<!-- tags: 查询 证券 个股 -->
|
||
|
||
可见性:`public`
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ---------- | -------- | ------------------ |
|
||
| `endt` | datetime | 截止日,日期类型 |
|
||
| `stockarr` | array | 一维数组,股票列表 |
|
||
|
||
### `getFRSR(begt, endt, index_id)`
|
||
|
||
声明:function
|
||
|
||
获取因子收益率和股票特质收益率数据,根据所给参数, 使用内置算法计算因子收益率和特
|
||
|
||
<!-- tags: 查询 回报率 投资收益 因子分析 因子指标 证券 个股 -->
|
||
|
||
可见性:`public`
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ---------- | -------- | ---------------------------------------------------------- |
|
||
| `begt` | datetime | 开始日,日期类型,获取因子收益率和特质收益率的开始日期 |
|
||
| `endt` | datetime | 截止日,日期类型,获取因子收益率和特质收益率的截止日期 |
|
||
| `index_id` | string | 指数代码,字符串,获取对应指数成分的因子收益率和特质收益率 |
|
||
|
||
### `neweyWest1(data, q, tao, ifvar, cov_var)`
|
||
|
||
声明:function
|
||
|
||
协方差矩阵或方差的 NeweyWest 调整
|
||
|
||
<!-- tags: 调整 NeweyWest 协方差矩阵 -->
|
||
|
||
可见性:`public`
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| --------- | ------- | ------------------------------------------------------------------------ |
|
||
| `data` | array | 二维表,需要计算协方差矩阵的原始数据,列数代表变量个数,行数代表样本长度 |
|
||
| `q` | integer | Integer, Newey West 调整的最大滞后期数 |
|
||
| `tao` | integer | Integer,协方差的指数加权的半衰期 |
|
||
| `ifvar` | boolean | Bool,是否方差调整,真表示做方差调整,假表示做协方差调整 |
|
||
| `cov_var` | array | 二维表,Newey West 调整前的协方差矩阵 |
|
||
|
||
### `neweyWest2(data, q, tao, vol_q, vol_tao, ifvar, cov_var)`
|
||
|
||
声明:function
|
||
|
||
协方差矩阵或方差的 NeweyWest 调整,与 NeweyWest1 的差别主要是:
|
||
|
||
<!-- tags: 调整 NeweyWest 协方差矩阵 -->
|
||
|
||
可见性:`public`
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| --------- | ------- | ------------------------------------------------------------------------ |
|
||
| `data` | array | 二维表,需要计算协方差矩阵的原始数据,列数代表变量个数,行数代表样本长度 |
|
||
| `q` | integer | Integer,相关系数的 Newey West 调整的最大滞后期数 |
|
||
| `tao` | integer | Integer, 相关系数的指数加权的半衰期 |
|
||
| `vol_q` | integer | 方差的 Newey West 调整的最大滞后期数 |
|
||
| `vol_tao` | integer | 方差的指数加权的半衰期 |
|
||
| `ifvar` | boolean | Bool,是否方差调整,真表示做方差调整,假表示做协方差调整 |
|
||
| `cov_var` | array | 二维表,Newey West 调整前的协方差矩阵 |
|
||
|
||
### `eigenFactor(cov, t, m_times, a, rand_data)`
|
||
|
||
声明:function
|
||
|
||
因子收益率协方差矩阵的 eigenfactor 调整
|
||
|
||
<!-- tags: 回报率 投资收益 因子分析 因子指标 -->
|
||
|
||
可见性:`public`
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ----------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| `cov` | array | 因子收益率协方差矩阵 |
|
||
| `t` | integer | Integer,模拟产生的数据长度 |
|
||
| `m_times` | integer | Integer,模拟次数 |
|
||
| `a` | real | Real,放缩经验系数 |
|
||
| `rand_data` | array | Array,模拟随机数据,用于测试算法的正确性,因为无法指定随机数生成的一致性, 只能通过传递确定的数据当作随机数据计算,用户不需要使用该参数 |
|
||
|
||
### `volR_B(f, sigma, weights)`
|
||
|
||
声明:function
|
||
|
||
计算波动率状态调整所需的 Bias 数据
|
||
|
||
<!-- tags: 风险波动 风险估计 -->
|
||
|
||
可见性:`public`
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| --------- | ----- | ------------------------ |
|
||
| `f` | array | 一维数组,当期收益率 |
|
||
| `sigma` | array | 一维数组,期初预测标准差 |
|
||
| `weights` | array | 一维数组,权重 |
|
||
|
||
### `volatility_Regime(cov_var, b, tao)`
|
||
|
||
声明:function
|
||
|
||
对协方差矩阵或方差执行波动率状态调整
|
||
|
||
<!-- tags: 调整 波动率状态 协方差矩阵 -->
|
||
|
||
可见性:`public`
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| --------- | ------- | ------------------------- |
|
||
| `cov_var` | array | 二维表,协方差矩阵 |
|
||
| `b` | array | 一维数组,Bias 统计量序列 |
|
||
| `tao` | integer | Integer,半衰期 |
|
||
|
||
### `structureAdjustment(var, ret, factor, e_0, industry, styles)`
|
||
|
||
声明:function
|
||
|
||
股票特质收益率方差的结构化调整
|
||
|
||
<!-- tags: 回报率 投资收益 证券 个股 -->
|
||
|
||
可见性:`public`
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| ---------- | ----- | -------------------------------- |
|
||
| `var` | array | 股票特质收益率方差向量或方差矩阵 |
|
||
| `ret` | array | 二维数组,股票特质收益率 |
|
||
| `factor` | array | 二维数组,因子值 |
|
||
| `e_0` | real | Real,调整系数 |
|
||
| `industry` | array | 一维数组,行业名称 |
|
||
| `styles` | array | 一维数组,风格因子名称 |
|
||
|
||
### `bayesian_Shrinkage(var, capital, n_group, q)`
|
||
|
||
声明:function
|
||
|
||
股票特质收益率方差的贝叶斯收缩调整
|
||
|
||
<!-- tags: 回报率 投资收益 证券 个股 -->
|
||
|
||
可见性:`public`
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
| --------- | ------- | -------------------------- |
|
||
| `var` | array | 股票特质收益率方差估计结果 |
|
||
| `capital` | array | 一维数组,市值 |
|
||
| `n_group` | integer | Integer,分组数 |
|
||
| `q` | real | Real,经验系数 |
|
||
|
||
### `tsrm_StockSWIndustryNameLv1()`
|
||
|
||
声明:function
|
||
|
||
使用 mf_industry 接口获取行业名称
|
||
|
||
<!-- tags: 查询 证券 个股 行业分类 板块 -->
|
||
|
||
可见性:`public`
|
||
|
||
### `tsrm_StockSWIndustryIDLv1()`
|
||
|
||
声明:function
|
||
|
||
利用 TSRM_StockSWIndustryNameLv1 获取新申万一级行业分类标准下的行业名称,返回对应
|
||
|
||
<!-- tags: 查询 证券 个股 板块 -->
|
||
|
||
可见性:`public`
|
||
|
||
#### 示例
|
||
|
||
范例01:调用示例
|
||
|
||
```tsl
|
||
BegT := 20210104T;
|
||
EndT := 20210106T;
|
||
IndexID := "SH000300";
|
||
mfm := new TSRM_RiskMatrix();
|
||
mfm.FFR_IF_Eigen := false; //不进行特征值调整
|
||
mfm.FSR_IF_Struct := false; //不进行结构化调整
|
||
mfm.Main(BegT,EndT,IndexID);
|
||
return
|
||
array('因子协方差矩阵':mfm.FFinalFRCov,'特质收益方差':mfm.FFinalFSRVar);
|
||
```
|
||
|
||
范例02:利用样例数据计算风险矩阵 (运行时间大概是 3 到 5 分钟)
|
||
|
||
```tsl
|
||
FactorRet := TSRM_Sample_Data(1); //获取因子收益样例数据
|
||
SpecificRet := TSRM_Sample_Data(2); //获取特质收益样例数据
|
||
|
||
mfm := new TSRM_RiskMatrix();
|
||
mfm.FFactorRet := FactorRet;
|
||
mfm.FSpecificRet := SpecificRet;
|
||
mfm.FFR_IF_Eigen := false; //不进行特征值调整
|
||
mfm.FSR_IF_Struct := false; //不进行结构化调整
|
||
mfm.Main();
|
||
return
|
||
array('因子协方差矩阵':mfm.FFinalFRCov,'特质收益率方差':mfm.FFinalFSRVar);
|
||
```
|