# 风险模型 / 风险矩阵 ## `TSRM_RiskMatrix` 声明:class 风险矩阵计算框架 ### `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 一般来说,用户直接调用该函数就可以计算因子收益率协方差矩阵和特质收益率方差 可见性:`public` | 参数 | 类型 | 说明 | | ---------- | -------- | ---------------------------------------------------------- | | `begt` | datetime | 开始日,日期类型,获取因子收益率和特质收益率的开始日期 | | `endt` | datetime | 截止日,日期类型,获取因子收益率和特质收益率的截止日期 | | `index_id` | string | 指数代码,字符串,获取对应指数成分的因子收益率和特质收益率 | ### `calFRCov()` 声明:function 计算每一期因子收益率的协方差和各种调整后的协方差 可见性:`public` ### `calSRVar()` 声明:function 计算每一期股票特质收益率的方差 可见性:`public` ### `getStockValue(endt, stockarr)` 声明:function 计算股票列表在截止日的流通市值 可见性:`public` | 参数 | 类型 | 说明 | | ---------- | -------- | ------------------ | | `endt` | datetime | 截止日,日期类型 | | `stockarr` | array | 一维数组,股票列表 | ### `getFRSR(begt, endt, index_id)` 声明:function 获取因子收益率和股票特质收益率数据,根据所给参数, 使用内置算法计算因子收益率和特 可见性:`public` | 参数 | 类型 | 说明 | | ---------- | -------- | ---------------------------------------------------------- | | `begt` | datetime | 开始日,日期类型,获取因子收益率和特质收益率的开始日期 | | `endt` | datetime | 截止日,日期类型,获取因子收益率和特质收益率的截止日期 | | `index_id` | string | 指数代码,字符串,获取对应指数成分的因子收益率和特质收益率 | ### `neweyWest1(data, q, tao, ifvar, cov_var)` 声明:function 协方差矩阵或方差的 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 的差别主要是: 可见性:`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 调整 可见性:`public` | 参数 | 类型 | 说明 | | ----------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | `cov` | array | 因子收益率协方差矩阵 | | `t` | integer | Integer,模拟产生的数据长度 | | `m_times` | integer | Integer,模拟次数 | | `a` | real | Real,放缩经验系数 | | `rand_data` | array | Array,模拟随机数据,用于测试算法的正确性,因为无法指定随机数生成的一致性, 只能通过传递确定的数据当作随机数据计算,用户不需要使用该参数 | ### `volR_B(f, sigma, weights)` 声明:function 计算波动率状态调整所需的 Bias 数据 可见性:`public` | 参数 | 类型 | 说明 | | --------- | ----- | ------------------------ | | `f` | array | 一维数组,当期收益率 | | `sigma` | array | 一维数组,期初预测标准差 | | `weights` | array | 一维数组,权重 | ### `volatility_Regime(cov_var, b, tao)` 声明:function 对协方差矩阵或方差执行波动率状态调整 可见性:`public` | 参数 | 类型 | 说明 | | --------- | ------- | ------------------------- | | `cov_var` | array | 二维表,协方差矩阵 | | `b` | array | 一维数组,Bias 统计量序列 | | `tao` | integer | Integer,半衰期 | ### `structureAdjustment(var, ret, factor, e_0, industry, styles)` 声明:function 股票特质收益率方差的结构化调整 可见性:`public` | 参数 | 类型 | 说明 | | ---------- | ----- | -------------------------------- | | `var` | array | 股票特质收益率方差向量或方差矩阵 | | `ret` | array | 二维数组,股票特质收益率 | | `factor` | array | 二维数组,因子值 | | `e_0` | real | Real,调整系数 | | `industry` | array | 一维数组,行业名称 | | `styles` | array | 一维数组,风格因子名称 | ### `bayesian_Shrinkage(var, capital, n_group, q)` 声明:function 股票特质收益率方差的贝叶斯收缩调整 可见性:`public` | 参数 | 类型 | 说明 | | --------- | ------- | -------------------------- | | `var` | array | 股票特质收益率方差估计结果 | | `capital` | array | 一维数组,市值 | | `n_group` | integer | Integer,分组数 | | `q` | real | Real,经验系数 | ### `tsrm_StockSWIndustryNameLv1()` 声明:function 使用 mf_industry 接口获取行业名称 可见性:`public` ### `tsrm_StockSWIndustryIDLv1()` 声明:function 利用 TSRM_StockSWIndustryNameLv1 获取新申万一级行业分类标准下的行业名称,返回对应 可见性:`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); ```