17 KiB
组合优化 / 组合优化
TSPortfolioOptimizer
声明:class
按收益、风险或自定义目标求解资产权重,支持证券、分组及组合指标约束
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
优化主函数,按照组合优化目标和阀值,计算优化比例
可见性:public
返回:int
getXData()
声明:function
获得组合对数收益率矩阵
可见性:public
返回:array
getYData()
声明:function
获得指数对数收益率序列
可见性:public
返回:array
getCov()
声明:function
获得组合协方差矩阵
可见性:public
返回:array
getCorr()
声明:function
设置组合相关系数矩阵
可见性:public
返回:array
getObj(w)
声明:function
用户自定义优化的目标
可见性:public
| 参数 | 类型 | 说明 |
|---|---|---|
w |
array | 组合权重向量 |
返回:numeric
getCon(w)
声明:function
用户自定义优化的约束条件
可见性:public
| 参数 | 类型 | 说明 |
|---|---|---|
w |
array | 组合权重向量 |
返回:array
getPortfolioData()
声明:function
查询优化结果
可见性:public
返回:array
getReturnandRisk()
声明:function
查询优化前后组合收益和组合风险指标
可见性:public
返回:array
getSectorData()
声明:function
查询优化前后行业比例、超配比
可见性:public
返回:array
getPortfolioData2()
声明:function
优化前后资产风险贡献,其中总风险贡献(%)与风险贡献率(%)具有可加性,理论公式说明请
可见性:public
返回:array
getPortopt(numports, portreturn, r_type)
声明:function
带约束投资组合的有效前沿,底层调用模型 Portopt,在收益一定时,组合风险最小。目前约
可见性:public
| 参数 | 类型 | 说明 |
|---|---|---|
numports |
int | 有效前沿组合数,整型,默认取 10,使用情况较多 |
portreturn |
array | 要求组合收益,不带%,一维数字数组,当该参数非空时,Numports 失效,使用情 况较少 |
r_type |
int | 返回类型,控制比例的输出格式 取值 含义 备注 0(默认) 比例平铺展示 适用资产较少 1 比例折叠到一个多级数组 适用资产较多 |
返回:array
getData_OutSample(v_beg_t, v_end_t)
声明:function
样本外各资产与基准收益率(%)序列,收益率带%。默认情况下,框架会根据成员变量
可见性:public
| 参数 | 类型 | 说明 |
|---|---|---|
v_beg_t |
date | 样本外开始日,日期类型 |
v_end_t |
date | 样本外截止日,日期类型 |
返回:array
getPortfolioReturn_OutSample(v_beg_t, v_end_t, v_type)
声明:function
样本外组合优化前后的收益率(%)序列
可见性: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
样本外组合优化前后的收益风险指标
可见性:public
| 参数 | 类型 | 说明 |
|---|---|---|
v_beg_t |
date | 样本外开始日,日期类型 |
v_end_t |
date | 样本外截止日,日期类型 |
v_type |
int | 组合构造方式,整型,详情可参考 FAQ 组合不同构造方式说明 取值 含义 0(默认) 每期各资产权重不变 1 每期各资产权重根据涨幅自动变化 |
返回:array
initData()
声明:function
初始化数据用,在进行后续报表输出前必须调用,通常在PortfolioOptimize()后使用
可见性:public
getOptimizationTemplateTable()
声明:function
优化模版配置表,用户可重写模版配置
可见性:public
返回:array
getCumulativeReturnTable(cycle, qk_type)
声明:function
累计收益表(固定周期或滚动区间)组合层
可见性:public
| 参数 | 类型 | 说明 |
|---|---|---|
cycle |
string | 行情或统计周期 |
qk_type |
integer | 0:固定周期 1:滚动周期 |
返回:array
getRetsCumulativeReturnTable(cycle, qk_type)
声明:function
累计收益表(固定周期或滚动区间)资产层
可见性:public
| 参数 | 类型 | 说明 |
|---|---|---|
cycle |
string | 行情或统计周期 |
qk_type |
integer | 0:固定周期 1:滚动周期 |
返回:array
getCumulativeReturnTable2(cycle, qk_type)
声明:function
累计收益表(固定周期或滚动区间)组合层,指定返回列,与FReturnArray 有关
可见性:public
| 参数 | 类型 | 说明 |
|---|---|---|
cycle |
string | 行情或统计周期 |
qk_type |
integer | 0:固定周期 1:滚动周期 |
返回:array
getMaxDrawdownTable(cycle, qk_type)
声明:function
最大回撤表(固定周期或滚动区间)组合层
可见性:public
| 参数 | 类型 | 说明 |
|---|---|---|
cycle |
string | 行情或统计周期 |
qk_type |
integer | 0:固定周期 1:滚动周期 |
返回:array
getRetsMaxDrawdownTable(cycle, qk_type)
声明:function
最大回撤表(固定周期或滚动区间)资产层
可见性:public
| 参数 | 类型 | 说明 |
|---|---|---|
cycle |
string | 行情或统计周期 |
qk_type |
integer | 0:固定周期 1:滚动周期 |
返回:array
getMaxDrawdownTable2(cycle, qk_type)
声明:function
最大回撤表(固定周期或滚动区间)组合层,指定返回列,与FReturnArray 有关
可见性:public
| 参数 | 类型 | 说明 |
|---|---|---|
cycle |
string | 行情或统计周期 |
qk_type |
integer | 0:固定周期 1:滚动周期 |
返回:array
getPerformance()
声明:function
历史表现汇总
可见性:public
返回:array
getPerformance2()
声明:function
历史表现汇总,指定返回列,与 FReturnArray 有关
可见性:public
返回:array
getWeightsTable()
声明:function
权重汇总表
可见性:public
返回:array
getWeightsTable2()
声明:function
权重汇总表,指定返回列,与 FReturnArray 有关
可见性:public
返回:array
getReturnAndDrawdown(cycle)
声明:function
收益回撤表(同时包含组合收益序列和回撤序列)
可见性:public
| 参数 | 类型 | 说明 |
|---|---|---|
cycle |
string | 行情或统计周期 |
返回:array
示例
范例01:调用示例
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
常用配置模型对比
可见性: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:调用示例
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
);