知识库 > 数学方法 > 优化方法 > 组合优化

组合优化接口    


  • 定义:CombinatorialOptimizer(PFInfoData,Constraints: Array,BegT,EndT:Date);
    参数:
    PFInfoData:组合基本信息,配置比例
    Constraints:优化模型类型及约束条件信息
    BegT:数据开始时间
    EndT:数据截止时间
    返回值:
    优化目标;
    组合权重;
    最优权重下的约束条件值。

    输入参数PFInfoData字段
    字段含义类型单位缺省值备注
    IndexId指数代码VarcharSH000300优化模型0、1、3
    StockId股票代码Varchar优化模型0、1、2、3
    StockName股票名称Varchar
    Weight初始权重Numeric(%)等比例
    Industry行业名称Varchar申万一级行业

    注意:上表备注中的0、1、2、3表示在对应的优化目标下,该字段不为空,优化模型详细请参考优化模型函数说明:
    约束信息Constraints
    字段类型单位缺省值备注
    优化模型Int%0(跟踪误差最小)详细参考:表9-7
    收益数据类型Int00涨幅,1对数收益率
    组合收益计算Int00:Rebalance1:非Rebalance
    权重和Real%1000,1,2,3
    分层优化BoolFalse使用分层优化方法(仅对模型0,1有效)
    是否用行业指数BoolTrueFalse:使用基准提供的个股计算复合指数(“分层优化”为真时有效)
    基准数据Array分层优化不使用行业指数时非空格式参考:表9-5(“分层优化”为真时有效)
    是否返回优化参数BoolFalseFalse:不返回优化信息(“分层优化”为真时有效)
    行业约束Array(%)0<=W行业<=100详细参考:表9-8
    股票约束Array(%)0<=W股票<=100详细参考:表9-9
    组合期望收益Real(%)不能缺省仅对优化模型2有意义
    收益率协方差矩阵Array(%)取数据计算仅对优化模型2有意义
    期望收益率序列Array(%)取数据计算仅对优化模型2有意义
    组合跟踪误差约束Real(%)不能缺省仅对优化模型3有意义

    优化模型
    参数含义备注
    0跟踪误差最小指数跟踪模型优化
    1信息比率最大指数跟踪模型优化
    2风险最小Markowitz均值—方差模型
    3收益最大Roll收益模型

    行业约束
    字段类型含义是否非空备注
    IndustryVarchar行业名称1“ALL”全部的行业范围为Lb到Ub
    LbArray下界1
    UbArray上界1

    注:表示某个行业的配比在Lb与Ub之间,如果Lb=Ub,则表示该行业的配比等于Lb。
    例如:
    //约束1, 5<= 申万采掘占比 <=10
    //约束2,申万房地产占比=30
       IndustryConstraints := array(
                (' Industry':'申万采掘','Lb':5,'Ub':10),
                (' Industry':'申万房地产','Lb':30,'Ub':30));
    股票约束
    字段类型含义是否非空备注
    StockIDVarchar股票代码1“All”全部的股票范围均为Lb到Ub
    LbArray下界1
    UbArray上界1

    例如:
    //约束1, 1<= SH000002占比 <=3
    //约束2,SH600000占比=5
       IndustryConstraints := array(
                ('StockId':'SZ000002','Lb':1,'Ub':3),
                ('StockId':'SH600000','Lb':5,'Ub':5));
    组合的收益有两种
    算法

    1.每天同比例配置,即,每天的权重都不变;
    2.首日配置后,一直不操作的计算方法,此时,由于个股每天变化,这个权重亦是每天都变化的。
    各种模型的输出各有不同:
    跟踪误差优化
    TE:优化后的跟踪误差,单位(%)
    NoOptimizationTE:初始值的跟踪误差,单位(%)
    Weight:优化后的新权重,单位(%)
    OptimizeInformation:优化信息
    信息比例优化
    InformationRatio:优化后的信息比率
    NoOptimizationTE:初始值的信息比率
    Weight:优化后的新权重,单位(%)
    OptimizeInformation:优化信息
    风险最小优化
    VAR:优化后的风险,单位(%)
    Return:优化后的收益,单位(%)
    Weight:优化后的新权重,单位(%)
    OptimizeInformation:优化信息
    收益最大优化
    Return:优化后的收益,单位(%)
    TE:优化后的跟踪误差,单位(%)
    Weight:优化后的新权重,单位(%)
    OptimizeInformation:优化信息
    组合优化模型的使用,用户可以在Tinysoft.net 上打开参考函数Combinato rialOptimizer_Demo。这里附上更简单的一个例子:

    //风险最小模型
    //输入参数1,组合的信息
    PFInfoData := array(
           ("StockId":"SZ000002","Industry":"申万房地产"),
           ("StockId":"SH600000","Industry":"申万金融服务"),
           ("StockId":"SH600031","Industry":"申万机械设备"),
           ("StockId":"SH601857","Industry":"申万采掘"),
           ("StockId":"SH600366","Industry":"申万有色金属"),
           ("StockId":"SH600123","Industry":"申万采掘"),
           ("StockId":"SH600085","Industry":"申万医药生物"));
    //输入参数2,约束信息
    Constraints := array();
    Constraints[0,'优化模型'] := 2;
    Constraints[0,'权重和'] := 100.0;
    Constraints[0,'组合期望收益']:= 0.1;
    Threshold := array(('StockId':'SZ000002','Lb':15,'Ub':40));
    Constraints[0,'股票约束']:= Threshold;
    //输入参数3,开始时间
    BegT := inttodate(20110630);
    //输入参数4,截止时间
    EndT := inttodate(20110930);
    Return CombinatorialOptimizer(PFInfoData,Constraints,BegT,EndT);
    结果是:array("VAR":3.48,"Return":0.1,"Weight":(15.00,0.00,0.00,25.35,29.82, 29.57,0.26),"OptimizeInformation":"优化成功")。