Files
playbook/skills/tsl-api-reference/references/codegen/module/ts-portfolio-optimizer.md
T

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
);