以前写的,你可以参考一下,上面的程序是用Mathematica写的,用Matlab也可以,语法方面Mathematica和Matlab差不多的.
符号说明:
Si: 投资第i 种资产的金额 M : 投资总额
ri : 第 i种投资的平均收益率 pi : 第i 种资产的交易费费率
ui : 第 i种资产的购买额的限定值 qi : 第 i种资产的风险损失率
n : 投资总数 Ci(Si) 第i 种资产的交易费用
DCi(Si) : 第 i种资产投资收益与交易费用之差
模型建立:
问题的决策变量是: Si ,Ci(Si) ,M ,n
当 i=0 时,表示了公司对银行的投资,这里 p0=0 ,q0=0 ,C0(S0)=0只有受到r0 的影响.
这里: Ci(Si)表示为Si 的函数,依题意,有:
ui*pi 当 0<Si<ui
Ci(Si)= Si*pi 当 Si>ui
0 当 Si=0
目标函数有两个:收益最大:Max: R=Sum((1+ri)Si-Ci(Si)) (i=1...n)
风险最小:Min: f=Max{Siqi}(i=1...n)
s.t Sum(Si)+Sum(Ci(Si))=M
用两个权衡目标的系数,a .b使得 a*R-b*f (a+b=1)
故目标函数为:W(S0,S1,...Sn)= a*R-b*f.
|