货币汇率兑换数学模型
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
作为金融从业人员,在处理有关国际货币相互兑换结算时,会遇到这样的问题,每天将现有的欧元、人民币、英镑、美元四种货币按当天的兑算,按人民币结算价值最高。当天汇率满如下表:
欧元人民币英镑美元现有量需求量
欧元 1 7.856 .787 1.235 80000 60000
人民币.127 1 0.100 .157 10000 30000
英镑 1.271 9.980 1 1.569 80000 10000
美元0.810 6.360 .637 1 00000 100000
(人民币结算价值=(兑入价值+兑出价值)/2;兑入1美元,结算价值=(6.360+1/.157)/2;那么这种情况应该怎么操作呢,下面就来探讨这个问题。
首先我们先来建立模型:
欧元人民币英镑美元
欧元e11 e12 e13 e14
人民币e21 e22 e23 e24
英镑e31 e32 e33 e34
美元e41 e42 e43 e44
上图中的eij(eij>=0)代表把eij单位个i种货币兑换为j种货币(i,j=1,2,3,4其中当1代表欧元,2代表人民币,3代表英镑,4代表美元)。
现在我们用数学建模来解决这一类问题
接下来我们将上表的约束条件转化为数学表达式(建立约束条件);
e11+e12+e13+e14=80000;
e21+e22+e23+e24=10000;
e31+e32+e33+e34=80000;
e41+e42+e43+e44=0; (1)
e11+0.127*e21+1.271*e31+0.810*e41>=60000;
7.856*e12+e22+9.980*e32+6.360*e42>=30000;
0.787*e13+0.100*e23+e33+0.637*43>=10000;
1.235*e14+0.157*e24+1.569*e34+e44>=100000;
(2)
目标函数:
Max=( e11+0.127*e21+1.271*e31+0.810*e41)*r1
+(7.856*e12+e22+9.980*e32+6.360*e42)*r2
+(0.787*e13+0.100*e23+e33+0.637*43)*r3
+(1.235*e14+0.157*e24+1.569*e34+e44)*r4;
为了后续解决问题的方便现取min=-max;
(ri分别表示每种货币的人民币结算价值,
r1=(7.856+1/0.127)/2;
r2=(1+1/1)/2;
r3=(9.980+1/0.100)/2;
r4=(6.360+1/0.157)/2)
这样上述问题已经完全转换为一个高维的线性规划问题,其中方程组(1)(2)是约束条件,Max 是目标函数。对于这样一个高维线性规划人工计算是很复杂很难解决的而且也不满足金融市场实时性的要求,因此我们应该借助电子计算机来解决这个问题。
现在比较流行的数学建模软件有matlab,lingo,Mathematica和SAS;下面我们选择matlab来解决这个问题。
首先将上面的方程组用矩阵表述:
c=-[r1,7.856*r2, .787*r3,1.235*r4, .127*r1,r2,
0.100*r3,.157*r4,1.271*r1,9.980*r2, r3,1.569*r4];
a=[ 1,1,1,1,0,0,0,0,0,0,0,0
0,0,0,0,1,1,1,1,0,0,0,0
0,0,0,0,0,0,0,0,1,1,1,1
-1,0,0,0,-0.127,0,0,0,-1.271,0,0,0
0,-7.856,0,0,0,-1,0,0,0,-9.980,0,0
0,0,-0.787,0,0,0,-0.100,0,0,0,-1,0
0,0,0,-1.235,0,0,0,-0.157,0,0,0,-1.569];
b= [80000,10000,80000,-60000,-30000,-10000,-100000];
下面我们根据上面矩阵在matlab中输入以下命令;
r1=(7.856+1/0.127)/2;
r2=(1+1/1)/2;
r3=(9.980+1/0.100)/2;
r4=(6.360+1/0.157)/2;
c=-[r1,7.856*r2, .787*r3,1.235*r4, .127*r1,r2, 0.100*r3,.157*r4,1.271*r1,9.980*r2, r3,1.569*r4];
a=[ 1,1,1,1,0,0,0,0,0,0,0,0
0,0,0,0,1,1,1,1,0,0,0,0
0,0,0,0,0,0,0,0,1,1,1,1
-1,0,0,0,-0.127,0,0,0,-1.271,0,0,0
0,-7.856,0,0,0,-1,0,0,0,-9.980,0,0
0,0,-0.787,0,0,0,-0.100,0,0,0,-1,0
0,0,0,-1.235,0,0,0,-0.157,0,0,0,-1.569 ];
b= [80000,10000,80000,-60000,-30000,-10000,-100000];
v1=zeros(1,12);
[x,lag]=linprog(c,a,b,[],[],v1),
R=-c*x,
过程截图: