例如:
//约束1, 5<= 申万采掘占比<=10
//约束2,申万房地产占比=30
IndustryConstraints := array(
('Industry':'申万采掘','Lb':5,'Ub':10),
('Industry':'申万房地产','Lb':30,'Ub':30));
表9-9 股票约束
字段 |
类型 |
含义 |
是否非空 |
备注 |
StockID |
Varchar |
股票代码 |
1 |
“All”全部的股票范围均为Lb到Ub |
Lb |
Array |
下界 |
1 |
|
Ub |
Array |
上界 |
1 |
|
例如:
//约束1, 1<= SH000002占比<=3
//约束2,SH600000占比=5
IndustryConstraints := array(
('StockId':'SZ000002','Lb':1,'Ub':3),
('StockId':'SH600000','Lb':5,'Ub':5));
组合的收益有两种算法
1.每天同比例配置,即

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