c****y 发帖数: 3592 | 1 我有一个Portfolio,几百个股票,现在要max return
subject to:
0-1% 权重内的股票数要在50-100个之间
1%-3%的在20-50个之间
3%-5%的在10-15个之间
(这里的数字都是假设)
怎么做?
我想出一种做法,就是max y, y = A*x - 1000*变量m, A是return, x是需要求的
allocation
然后sub function里面m就是indicator, 目的是得到这个么矩阵
0-1 1-3 3-5
1 0 0
1 0 0
1 0 0
0 1 0
0 1 0
0 1 0
0 0 1
0 0 1
0 0 1
。。。。。。。
然后列相加,如果每一列都在给定范围内,这列=0,不然=1
变量m = 3列数据的总和,这样optimizor就是尽量让m=0。
但是老板说我这个求法不一定global optimal。让我在A和x里面直接动手脚,不要在加
Integer变量,有解么? |
z****t 发帖数: 78 | 2 Did not quite get your question, should not you always pick the stock with
the highest return first and give it the largest possible weight? |
c****y 发帖数: 3592 | 3 我明白你的意思,其实不用解什么方程直接给最好的满上就行了。问题要用Linprog的
方式列出来,就是看思路
【在 z****t 的大作中提到】 : Did not quite get your question, should not you always pick the stock with : the highest return first and give it the largest possible weight?
|
z****t 发帖数: 78 | 4 Then why not sort vector A, and add constraints x_i <= .05 for i from 1 to
15, etc? |
s********r 发帖数: 529 | 5
如果不需要考虑风险的话,我觉得这样做就可以了啊。。。
【在 z****t 的大作中提到】 : Did not quite get your question, should not you always pick the stock with : the highest return first and give it the largest possible weight?
|
c****y 发帖数: 3592 | 6 就是有别的constraint啊,我只是没有列出来罢了。不然还需要linprog干嘛呢 |