✨ feat(tsl-api-reference): expand API and module coverage
This commit is contained in:
@@ -0,0 +1,715 @@
|
||||
# 组合优化 / 组合优化
|
||||
|
||||
## `TSPortfolioOptimizer`
|
||||
|
||||
声明:class
|
||||
|
||||
按收益、风险或自定义目标求解资产权重,支持证券、分组及组合指标约束
|
||||
|
||||
<!-- tags: 聚合 风险管理 风控 数学优化 约束求解 约束条件 限制条件 组合权重 -->
|
||||
|
||||
### `fBegT`
|
||||
|
||||
声明:field
|
||||
|
||||
开始时间 FEndT-365
|
||||
|
||||
可见性:`public`
|
||||
|
||||
类型:datetime
|
||||
|
||||
### `fEndT`
|
||||
|
||||
声明:field
|
||||
|
||||
结束时间 DATE()
|
||||
|
||||
可见性:`public`
|
||||
|
||||
类型:datetime
|
||||
|
||||
### `fIndexId`
|
||||
|
||||
声明:field
|
||||
|
||||
指数代码 "SH000300"
|
||||
|
||||
可见性:`public`
|
||||
|
||||
类型:varchar
|
||||
|
||||
### `fCycle`
|
||||
|
||||
声明:field
|
||||
|
||||
行情数据所用周期 "日线"
|
||||
|
||||
可见性:`public`
|
||||
|
||||
类型:varchar
|
||||
|
||||
### `fDaysIn1y`
|
||||
|
||||
声明:field
|
||||
|
||||
收益率折算为年化收益率所用天数 根据 FCycle 自动匹配
|
||||
|
||||
可见性:`public`
|
||||
|
||||
类型:integer
|
||||
|
||||
### `fReturnType`
|
||||
|
||||
声明:field
|
||||
|
||||
收益率数据类型 1
|
||||
|
||||
可见性:`public`
|
||||
|
||||
类型:integer
|
||||
|
||||
### `fConfidenceInterval`
|
||||
|
||||
声明:field
|
||||
|
||||
计算 VaR 时的置信度 0.95
|
||||
|
||||
可见性:`public`
|
||||
|
||||
类型:real
|
||||
|
||||
### `fLambda`
|
||||
|
||||
声明:field
|
||||
|
||||
风险厌恶系数λ 1
|
||||
|
||||
可见性:`public`
|
||||
|
||||
类型:real
|
||||
|
||||
### `fRf`
|
||||
|
||||
声明:field
|
||||
|
||||
年化无风险利率(%),用于夏普比率计算 0
|
||||
|
||||
可见性:`public`
|
||||
|
||||
类型:real
|
||||
|
||||
### `fObjType`
|
||||
|
||||
声明:field
|
||||
|
||||
目标函数 0
|
||||
|
||||
可见性:`public`
|
||||
|
||||
类型:integer
|
||||
|
||||
### `fObjEvalStr`
|
||||
|
||||
声明:field
|
||||
|
||||
自定义优化目标表达式 ""
|
||||
|
||||
可见性:`public`
|
||||
|
||||
类型:string
|
||||
|
||||
### `fConType`
|
||||
|
||||
声明:field
|
||||
|
||||
指标约束函数 nil
|
||||
|
||||
可见性:`public`
|
||||
|
||||
类型:integer
|
||||
|
||||
### `fConIfAnnual`
|
||||
|
||||
声明:field
|
||||
|
||||
约束是否年化,控制指标约束上下界输入 0:不年化,兼容历史
|
||||
|
||||
可见性:`public`
|
||||
|
||||
类型:bool
|
||||
|
||||
### `fThresholdLower`
|
||||
|
||||
声明:field
|
||||
|
||||
指标约束下界 和 FConType 配合使用 nil
|
||||
|
||||
可见性:`public`
|
||||
|
||||
类型:number
|
||||
|
||||
### `fThresholdUpper`
|
||||
|
||||
声明:field
|
||||
|
||||
指标约束上界 和 FConType 配合使用 nil
|
||||
|
||||
可见性:`public`
|
||||
|
||||
类型:number
|
||||
|
||||
### `fConStr`
|
||||
|
||||
声明:field
|
||||
|
||||
组合约束 Array()
|
||||
|
||||
可见性:`public`
|
||||
|
||||
类型:array
|
||||
|
||||
### `fMulticon`
|
||||
|
||||
声明:field
|
||||
|
||||
多个指标约束 Array()
|
||||
|
||||
可见性:`public`
|
||||
|
||||
类型:array
|
||||
|
||||
### `fxData`
|
||||
|
||||
声明:field
|
||||
|
||||
组合对数收益率矩阵,二维数字数组,
|
||||
|
||||
可见性:`public`
|
||||
|
||||
类型:array
|
||||
|
||||
### `fyData`
|
||||
|
||||
声明:field
|
||||
|
||||
指数对数收益率序列,一维数字数组
|
||||
|
||||
可见性:`public`
|
||||
|
||||
类型:array
|
||||
|
||||
### `fCov`
|
||||
|
||||
声明:field
|
||||
|
||||
组合收益率协方差
|
||||
|
||||
可见性:`public`
|
||||
|
||||
类型:array
|
||||
|
||||
### `fCorr`
|
||||
|
||||
声明:field
|
||||
|
||||
组合相关系数矩阵
|
||||
|
||||
可见性:`public`
|
||||
|
||||
类型:array
|
||||
|
||||
### `fReturnArray`
|
||||
|
||||
声明:field
|
||||
|
||||
返回字段,控制返回(影响部分接口)
|
||||
|
||||
可见性:`public`
|
||||
|
||||
类型:array
|
||||
|
||||
### `portfolioOptimize()`
|
||||
|
||||
声明:function
|
||||
|
||||
优化主函数,按照组合优化目标和阀值,计算优化比例
|
||||
|
||||
<!-- tags: 数学优化 约束求解 投资组合 资产组合 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
返回:int
|
||||
|
||||
### `getXData()`
|
||||
|
||||
声明:function
|
||||
|
||||
获得组合对数收益率矩阵
|
||||
|
||||
<!-- tags: 查询 回报率 投资收益 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
返回:array
|
||||
|
||||
### `getYData()`
|
||||
|
||||
声明:function
|
||||
|
||||
获得指数对数收益率序列
|
||||
|
||||
<!-- tags: 查询 回报率 投资收益 基准指数 指数产品 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
返回:array
|
||||
|
||||
### `getCov()`
|
||||
|
||||
声明:function
|
||||
|
||||
获得组合协方差矩阵
|
||||
|
||||
<!-- tags: 查询 风险矩阵 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
返回:array
|
||||
|
||||
### `getCorr()`
|
||||
|
||||
声明:function
|
||||
|
||||
设置组合相关系数矩阵
|
||||
|
||||
<!-- tags: 查询 配置 相关性 关联关系 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
返回:array
|
||||
|
||||
### `getObj(w)`
|
||||
|
||||
声明:function
|
||||
|
||||
用户自定义优化的目标
|
||||
|
||||
<!-- tags: 查询 数学优化 约束求解 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
| ---- | ----- | ------------ |
|
||||
| `w` | array | 组合权重向量 |
|
||||
|
||||
返回:numeric
|
||||
|
||||
### `getCon(w)`
|
||||
|
||||
声明:function
|
||||
|
||||
用户自定义优化的约束条件
|
||||
|
||||
<!-- tags: 查询 数学优化 约束求解 限制条件 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
| ---- | ----- | ------------ |
|
||||
| `w` | array | 组合权重向量 |
|
||||
|
||||
返回:array
|
||||
|
||||
### `getPortfolioData()`
|
||||
|
||||
声明:function
|
||||
|
||||
查询优化结果
|
||||
|
||||
<!-- tags: 数学优化 约束求解 投资组合 资产组合 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
返回:array
|
||||
|
||||
### `getReturnandRisk()`
|
||||
|
||||
声明:function
|
||||
|
||||
查询优化前后组合收益和组合风险指标
|
||||
|
||||
<!-- tags: 回报率 投资收益 风险管理 风控 数学优化 约束求解 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
返回:array
|
||||
|
||||
### `getSectorData()`
|
||||
|
||||
声明:function
|
||||
|
||||
查询优化前后行业比例、超配比
|
||||
|
||||
<!-- tags: 数学优化 约束求解 行业分类 板块 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
返回:array
|
||||
|
||||
### `getPortfolioData2()`
|
||||
|
||||
声明:function
|
||||
|
||||
优化前后资产风险贡献,其中总风险贡献(%)与风险贡献率(%)具有可加性,理论公式说明请
|
||||
|
||||
<!-- tags: 查询 影响度 收益分解 风险管理 风控 数学优化 约束求解 投资组合 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
返回:array
|
||||
|
||||
### `getPortopt(numports, portreturn, r_type)`
|
||||
|
||||
声明:function
|
||||
|
||||
带约束投资组合的有效前沿,底层调用模型 Portopt,在收益一定时,组合风险最小。目前约
|
||||
|
||||
<!-- tags: 查询 执行 风险管理 风控 约束条件 限制条件 资产组合 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
| ------------ | ----- | --------------------------------------------------------------------------------------------------------------------- |
|
||||
| `numports` | int | 有效前沿组合数,整型,默认取 10,使用情况较多 |
|
||||
| `portreturn` | array | 要求组合收益,不带%,一维数字数组,当该参数非空时,Numports 失效,使用情 况较少 |
|
||||
| `r_type` | int | 返回类型,控制比例的输出格式 取值 含义 备注 0(默认) 比例平铺展示 适用资产较少 1 比例折叠到一个多级数组 适用资产较多 |
|
||||
|
||||
返回:array
|
||||
|
||||
### `getData_OutSample(v_beg_t, v_end_t)`
|
||||
|
||||
声明:function
|
||||
|
||||
样本外各资产与基准收益率(%)序列,收益率带%。默认情况下,框架会根据成员变量
|
||||
|
||||
<!-- tags: 查询 回报率 投资收益 比较基准 业绩基准 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
| --------- | ---- | ---------------------- |
|
||||
| `v_beg_t` | date | 样本外开始日,日期类型 |
|
||||
| `v_end_t` | date | 样本外截止日,日期类型 |
|
||||
|
||||
返回:array
|
||||
|
||||
### `getPortfolioReturn_OutSample(v_beg_t, v_end_t, v_type)`
|
||||
|
||||
声明:function
|
||||
|
||||
样本外组合优化前后的收益率(%)序列
|
||||
|
||||
<!-- tags: 查询 回报率 投资收益 数学优化 约束求解 投资组合 资产组合 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
| --------- | ---- | ------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `v_beg_t` | date | 样本外开始日,日期类型 |
|
||||
| `v_end_t` | date | 样本外截止日,日期类型 |
|
||||
| `v_type` | int | 组合构造方式,整型,详情可参考 FAQ 组合不同构造方式说明 取值 含义 0(默认) 每期各资产权重不变 1 每期各资产权重根据涨幅自动变化 |
|
||||
|
||||
返回:array
|
||||
|
||||
### `getReturnandRisk_OutSample(v_beg_t, v_end_t, v_type)`
|
||||
|
||||
声明:function
|
||||
|
||||
样本外组合优化前后的收益风险指标
|
||||
|
||||
<!-- tags: 查询 风险管理 风控 数学优化 约束求解 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
| --------- | ---- | ------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `v_beg_t` | date | 样本外开始日,日期类型 |
|
||||
| `v_end_t` | date | 样本外截止日,日期类型 |
|
||||
| `v_type` | int | 组合构造方式,整型,详情可参考 FAQ 组合不同构造方式说明 取值 含义 0(默认) 每期各资产权重不变 1 每期各资产权重根据涨幅自动变化 |
|
||||
|
||||
返回:array
|
||||
|
||||
### `initData()`
|
||||
|
||||
声明:function
|
||||
|
||||
初始化数据用,在进行后续报表输出前必须调用,通常在PortfolioOptimize()后使用
|
||||
|
||||
<!-- tags: 执行 打印 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
### `getOptimizationTemplateTable()`
|
||||
|
||||
声明:function
|
||||
|
||||
优化模版配置表,用户可重写模版配置
|
||||
|
||||
<!-- tags: 查询 数学优化 约束求解 表数据 二维表 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
返回:array
|
||||
|
||||
### `getCumulativeReturnTable(cycle, qk_type)`
|
||||
|
||||
声明:function
|
||||
|
||||
累计收益表(固定周期或滚动区间)组合层
|
||||
|
||||
<!-- tags: 查询 回报率 投资收益 表数据 二维表 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
| --------- | ------- | ----------------------- |
|
||||
| `cycle` | string | 行情或统计周期 |
|
||||
| `qk_type` | integer | 0:固定周期 1:滚动周期 |
|
||||
|
||||
返回:array
|
||||
|
||||
### `getRetsCumulativeReturnTable(cycle, qk_type)`
|
||||
|
||||
声明:function
|
||||
|
||||
累计收益表(固定周期或滚动区间)资产层
|
||||
|
||||
<!-- tags: 查询 回报率 投资收益 表数据 二维表 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
| --------- | ------- | ----------------------- |
|
||||
| `cycle` | string | 行情或统计周期 |
|
||||
| `qk_type` | integer | 0:固定周期 1:滚动周期 |
|
||||
|
||||
返回:array
|
||||
|
||||
### `getCumulativeReturnTable2(cycle, qk_type)`
|
||||
|
||||
声明:function
|
||||
|
||||
累计收益表(固定周期或滚动区间)组合层,指定返回列,与FReturnArray 有关
|
||||
|
||||
<!-- tags: 查询 回报率 投资收益 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
| --------- | ------- | ----------------------- |
|
||||
| `cycle` | string | 行情或统计周期 |
|
||||
| `qk_type` | integer | 0:固定周期 1:滚动周期 |
|
||||
|
||||
返回:array
|
||||
|
||||
### `getMaxDrawdownTable(cycle, qk_type)`
|
||||
|
||||
声明:function
|
||||
|
||||
最大回撤表(固定周期或滚动区间)组合层
|
||||
|
||||
<!-- tags: 查询 亏损幅度 表数据 二维表 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
| --------- | ------- | ----------------------- |
|
||||
| `cycle` | string | 行情或统计周期 |
|
||||
| `qk_type` | integer | 0:固定周期 1:滚动周期 |
|
||||
|
||||
返回:array
|
||||
|
||||
### `getRetsMaxDrawdownTable(cycle, qk_type)`
|
||||
|
||||
声明:function
|
||||
|
||||
最大回撤表(固定周期或滚动区间)资产层
|
||||
|
||||
<!-- tags: 查询 亏损幅度 表数据 二维表 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
| --------- | ------- | ----------------------- |
|
||||
| `cycle` | string | 行情或统计周期 |
|
||||
| `qk_type` | integer | 0:固定周期 1:滚动周期 |
|
||||
|
||||
返回:array
|
||||
|
||||
### `getMaxDrawdownTable2(cycle, qk_type)`
|
||||
|
||||
声明:function
|
||||
|
||||
最大回撤表(固定周期或滚动区间)组合层,指定返回列,与FReturnArray 有关
|
||||
|
||||
<!-- tags: 查询 亏损幅度 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
| --------- | ------- | ----------------------- |
|
||||
| `cycle` | string | 行情或统计周期 |
|
||||
| `qk_type` | integer | 0:固定周期 1:滚动周期 |
|
||||
|
||||
返回:array
|
||||
|
||||
### `getPerformance()`
|
||||
|
||||
声明:function
|
||||
|
||||
历史表现汇总
|
||||
|
||||
<!-- tags: 查询 绩效 业绩表现 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
返回:array
|
||||
|
||||
### `getPerformance2()`
|
||||
|
||||
声明:function
|
||||
|
||||
历史表现汇总,指定返回列,与 FReturnArray 有关
|
||||
|
||||
<!-- tags: 查询 资产配置 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
返回:array
|
||||
|
||||
### `getWeightsTable()`
|
||||
|
||||
声明:function
|
||||
|
||||
权重汇总表
|
||||
|
||||
<!-- tags: 查询 组合权重 资产配置 表数据 二维表 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
返回:array
|
||||
|
||||
### `getWeightsTable2()`
|
||||
|
||||
声明:function
|
||||
|
||||
权重汇总表,指定返回列,与 FReturnArray 有关
|
||||
|
||||
<!-- tags: 查询 组合权重 资产配置 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
返回:array
|
||||
|
||||
### `getReturnAndDrawdown(cycle)`
|
||||
|
||||
声明:function
|
||||
|
||||
收益回撤表(同时包含组合收益序列和回撤序列)
|
||||
|
||||
<!-- tags: 查询 回报率 投资收益 最大回撤 亏损幅度 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
| ------- | ------ | -------------- |
|
||||
| `cycle` | string | 行情或统计周期 |
|
||||
|
||||
返回:array
|
||||
|
||||
#### 示例
|
||||
|
||||
范例01:调用示例
|
||||
|
||||
```tsl
|
||||
PortfolioData := Array(
|
||||
("代码":"SZ000001","比例下界(%)":0,"比例上界(%)":40,"分组":"股票"),
|
||||
("代码":"SZ000002","比例下界(%)":0,"比例上界(%)":40,"分组":"股票"),
|
||||
("代码":"SH019547","比例下界(%)":0,"比例上界(%)":60,"分组":"债券"),
|
||||
("代码":"SH019644","比例下界(%)":0,"比例上界(%)":60,"分组":"债券")
|
||||
);
|
||||
|
||||
|
||||
BegT := 20230101T;
|
||||
EndT := 20231231T;
|
||||
Cycle := cy_day();
|
||||
IndexId := "SH000300";
|
||||
ObjType := 1;
|
||||
|
||||
Constr := array();
|
||||
|
||||
// 设置大类资产约束
|
||||
GroupConStr := Array(
|
||||
("分组":Array("股票"), "比例下界(%)":50, "比例上界(%)":70),
|
||||
("分组":Array("债券"), "比例下界(%)":30, "比例上界(%)":50)
|
||||
|
||||
|
||||
|
||||
|
||||
);
|
||||
|
||||
|
||||
Config := array(("是否资产约束":1,"是否指标约束":0,"是否分组约束":1,"约束指标是
|
||||
否年化":1,
|
||||
"分组字段名称":"分组","有效前沿个数":nil,"返回周期":"月线"));
|
||||
|
||||
return
|
||||
TSFL_ZHYH_GetAssetAllocationOptimizer(PortfolioData,BegT,EndT,Cycle,Index
|
||||
Id,ObjType,
|
||||
ConStr,GroupConstr,Config);
|
||||
```
|
||||
|
||||
### `tsfl_ZHYH_CompareAllocModels(portfolio_data, beg_t, end_t, cycle, index_id, config)`
|
||||
|
||||
声明:function
|
||||
|
||||
常用配置模型对比
|
||||
|
||||
<!-- tags: 比较 配置模型 组合优化 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
| ---------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `portfolio_data` | array | Array,优化样本 |
|
||||
| `beg_t` | datetime | 日期,开始日,如 20250101T |
|
||||
| `end_t` | datetime | 日期,截止日,如 20251231T |
|
||||
| `cycle` | string | 周期,如 cy_day() |
|
||||
| `index_id` | string | 字符串,指数代码,如"SH000300" |
|
||||
| `config` | array | 可选。Array,高级选项,控制优化方法及返回配置,举例 array(("优化模版序号 ":array(1,2,3,4,5),"返回周期":"月线")),可选字段如下 字段 类型 默认值 说明 优化模版序号 数组 Array(1,2,3,4,5) 返回周期 周期 月线 优化模版序号可选如下 序号 优化模板名称 风险 等级 核心约束(生产典型值) 适用产品场景 |
|
||||
|
||||
#### 示例
|
||||
|
||||
范例01:调用示例
|
||||
|
||||
```tsl
|
||||
PortfolioData := Array(
|
||||
("代码":"SZ000001","比例下界(%)":0,"比例上界(%)":60),
|
||||
("代码":"SZ000002","比例下界(%)":0,"比例上界(%)":60),
|
||||
("代码":"SH600000","比例下界(%)":0,"比例上界(%)":60));
|
||||
|
||||
BegT := 20230101T;
|
||||
EndT := 20231231T;
|
||||
Cycle := cy_day();
|
||||
|
||||
|
||||
|
||||
|
||||
IndexId := "SH000300";
|
||||
|
||||
Config := array(("优化模版序号":array(1,2,3,4,5),"返回周期":"月线"));
|
||||
|
||||
return
|
||||
TSFL_ZHYH_CompareAllocModels(PortfolioData,BegT,EndT,Cycle,IndexId,Config
|
||||
);
|
||||
```
|
||||
Reference in New Issue
Block a user