本章涉及知識點
1、前言
2裸影、案例問題的提出
3挣轨、決策變量的選擇
4、基本情景的假設
5轩猩、模型的分析和建立
6卷扮、多目標函數(shù)簡化為單目標函數(shù)
7、python編程求解模型
8均践、案例結果分析
9晤锹、心得體會
一、前言
線性規(guī)劃有著廣泛的實踐應用浊猾,通過有效的組合現(xiàn)有資源來安排生產(chǎn)抖甘,來生成一個獲取最大經(jīng)濟效益的plan。在運籌學領域里葫慎,其已經(jīng)構成了一個重要分支—數(shù)學規(guī)劃衔彻。關于線性規(guī)劃的表述形式、單純形算法的原理偷办、以及使用單純形算法求解目標函數(shù)的知識點艰额,我已經(jīng)在上一篇文章線性規(guī)劃的算法分析討論分析過了
在解決實際問題的過程中,我們需要先把問題高度抽象為一個線性規(guī)劃的數(shù)學模型椒涯,通過選擇合適的決策變量柄沮,然后做出合理的情景假設,最后用嚴謹?shù)乃惴▉砬蠼饽P?/b>废岂,本篇文章打算用一個實際案例祖搓,來說明數(shù)學建模到編程實現(xiàn)的思維殿堂過程
二、案例問題的提出
市場上有n種資產(chǎn)si提供任意選擇湖苞,現(xiàn)在用數(shù)額相當大的M作一個時期的投資拯欧,已知這n中資產(chǎn)在這一時期內(nèi)購買si的平均收益率分別為ri,風險損失率分別為qi财骨,而投資的總體風險可以用購買若干個si中最大的一個風險來度量镐作,在購買si時要付交易費藏姐,費率分別為pi,當購買的金額不超過定值ui時该贾,交易費按照購買ui來計算羔杨,另外,假定同期的銀行存款利率為r0杨蛋,銀行利率既無交易費兜材,又沒有風險(r0=5%)
已知n=4時的相關數(shù)據(jù)如下
現(xiàn)用給定的資金M,有理性選擇地購買若干資產(chǎn)或者存放銀行生息六荒,使得這一時期的凈收益盡可能大护姆,總體風險盡可能小,求這個投資方案掏击?
三、決策變量的選擇
(1)si表示第i種投資項目秩铆,如股票砚亭,債券等,i=0,1,2,...n殴玛,且s0表示存入銀行生息
(2)ri捅膘,qi,pi分別表示si的平均收益率滚粟、風險損失率和交易費率寻仗,i=0,1,2,...n,且r0表示銀行存款利率凡壤,顯然當i=0的時候署尤,p0=q0=0,表示銀行生息既無交易費又無風險
(3)ui表示購買si時的交易常量定額亚侠,i=1,2,...n
(4)xi表示購買si的資金注入曹体,i=0,1,2,...n
(5)a表示投資風險界限
(6)Q表示總體收益
四、基本情景的假設
(1)投資數(shù)額M相當大
(2)投資越分散硝烂,總的風險越小
(3)投資方案的總體風險度箕别,用購買的si中最大的一個風險來度量
(4)這n+1種資產(chǎn)si之間是完全相互獨立的
(5)在購買投資的這一時期內(nèi),ri滞谢,pi串稀,qi為定值常量,不會受到外界政治因素的影響而改變
(6)凈收益和總體風險度只受限于ri狮杨,pi母截,qi這三個參數(shù),不會受到外界政治因素的影響而改變
五禾酱、模型的分析和建立
我們根據(jù)上述的決策變量和基本情景的假設微酬,可以有效的用數(shù)學語言來翻譯題目中的各個條件
購買si的需要承擔的風險為:
購買si產(chǎn)生的交易費為:
這里因為ui為一個定值常量绘趋,相對M顯得非常的小,故我們可以簡化分段函數(shù)的交易費為pixi
購買si產(chǎn)生的總收益為:
購買si產(chǎn)生的凈收益為:
購買si需要總花費為:
而我們的投資方案需求為:凈收益盡可能大颗管,總體風險盡可能小
翻譯為數(shù)學語言就變成如下的目標函數(shù)
而上述目標函數(shù)是有約束條件限制的陷遮,我們需要考慮購買若干si產(chǎn)生的總費用必須等于總投資數(shù)額M,故約束條件可以翻譯為如下數(shù)學語言
至此垦江,我們通過對問題的分析提取和情景的假設帽馋,將原始問題翻譯為一個個數(shù)學語言,最終建立了一個以線性規(guī)劃為基礎的數(shù)學模型比吭,而這個模型是帶著等式約束條件和兩個目標函數(shù)的多目標線性規(guī)劃模型
六绽族、多目標函數(shù)簡化為單目標函數(shù)
為了更好的使用單純形算法來求解模型,我們希望將模型中的多目標函數(shù)衩藤,化簡為單目標函數(shù)
由于在實際投資對象中吧慢,每個投資者都會承擔不一樣的風險程度,小戶型投資者只能承受低風險赏表,而賭徒型投資者愿意承擔高風險(只要他們愿意相信高回報)检诗,為此我們可以設置一個參數(shù)a用來表示該投資方案的風險界限,用它來約定限制投資方案的總風險和總投資數(shù)額的比率瓢剿,即:
則我們可以將風險最小的目標函數(shù)變化為用風險界限a來約束限制的不等式約束條件逢慌,原數(shù)學模型可以變形為:
至此,我們就轉化得到了單目標函數(shù)的線性規(guī)劃數(shù)學模型间狂,下面就可以使用單純形算法來求解模型了
七攻泼、python編程求解模型
我們根據(jù)上述建立的數(shù)學模型,帶入案例的數(shù)據(jù)來寫出案例的具體模型
其中我們假設總投資M=1鉴象,a即是風險界限忙菠,我們可以從a=0開始以常數(shù)值的步長來循環(huán)計算出與不同風險對應的目標函數(shù)最優(yōu)解收益
我們使用上一篇文章實現(xiàn)的單純形算法來求解,具體算法之前文章已經(jīng)詳細說明炼列,我們這里直接寫業(yè)務代碼即可
這里我們固定了總投資M=1只搁,循環(huán)迭代了在步長為0.001的風險度下,單純形算法求解出對應的最大利益俭尖,當風險超過0.05時停止計算并畫圖來顯示結果
八氢惋、案例結果分析
不同的風險,對應計算出不同的利潤如下
從結果上觀察分析稽犁,我們可以推理出以下幾點信息:
(1)當風險增大時焰望,收益也在隨之增大
(2)在a=0.006附近有第一個拐點A,在a=0.025附近有第二個拐點B
(3)當在A點的左邊時已亥,函數(shù)斜率很大熊赖,即風險增加很少時,利潤增長很快
(4)當在A點和B點之間時虑椎,函數(shù)斜率變小震鹉,即風險增加很多時俱笛,利潤增長較慢
(5)當在B點右邊時,函數(shù)的斜率達到最小传趾,即隨著風險的不斷增加迎膜,利潤基本保持不變
(6)當投資越分散的時候(即購買的產(chǎn)品越多),投資者承擔的風險就越小浆兰,利潤也相對較小
(7)當投資越集中的時候(即購買產(chǎn)品較為單一)磕仅,投資者承擔的風險就越大,利潤也相對較大
根據(jù)以上的推理簸呈,作為金融理財經(jīng)理或者交易員榕订,我們可以得出下面2條建議
(1)保守投資者,應該選擇拐點A作為最佳投資組合
(2)冒險投資者蜕便,應該選擇拐點B作為最佳投資組合劫恒,而B點之后的點由于收益增長太慢應該放棄
A點的投資組合為:
風險度a=0.006俗孝,收益Q=0.2019萤捆,x0=0,x1=0.24彼硫,x2=0.4吃溅,x3=0.1091,x4=0.2212(分散投資)
B點的投資組合為:
風險度a=0.025鸯檬,收益Q=0.2673决侈,x0=0,x1=0.9901喧务,x2=0赖歌,x3=0,x4=0(集中投資)
九功茴、心得體會
我們通過一個實際的案例庐冯,體驗了金融+數(shù)學+編程的整個思維建設推導過程,從現(xiàn)實問題的抽象坎穿、數(shù)學語言的翻譯展父、數(shù)學模型的建立,再到求解模型的算法分析和編程實現(xiàn)玲昧,最后從結果中證明了符合情景假設和得到最優(yōu)的收益方案栖茉,可以看到數(shù)學思維建模之美!
最后我們需要說明孵延,一切的編程推理都出自于數(shù)學模型的建立吕漂,而模型的建立往往依賴于我們的情景假設約定,如案例里我們約定ri尘应,qi惶凝,pi在投資的這一時期是常量吼虎,不會受到外界隱私的干擾,可是現(xiàn)實世界里苍鲜,這些參數(shù)往往會受到市場變動思灰,戰(zhàn)略生成,政策下達等影響而發(fā)生突變坡贺,為此我們數(shù)學建模計算得到的收益方案官辈,只能是存在于理論假設階段里,其作為最終制定投資方案的一個參考意見