feat(tsl-api-reference): expand API and module coverage

This commit is contained in:
csh
2026-08-14 17:12:55 +08:00
parent 8f1056130d
commit 3d3036ebe1
571 changed files with 47842 additions and 14458 deletions
@@ -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
);
```