『壹』 python實現資產配置(1)----Markowitz 投資組合模型
現假設有A, B, C, D, E五隻股票的收益率數據((第二日收盤價-第一日收盤價)/第一日收盤價)), 如果投資人的目標是達到20%的年收益率,那麼該如何進行資產配置,才能使得投資的風險最低?
更一般的問題,假設現有x 1 ,x 2 ,...,x n , n支風險資產,且收益率已知,如果投資人的預期收益為goalRet,那麼該如何進行資產配置,才能使得投資的風險最低?
1952年,芝加哥大學的Markowitz提出現代資產組合理論(Modern Portfolio Theory,簡稱MPT),為現代西方證券投資理論奠定了基礎。其基本思想是,證券投資的風險在於證券投資收益的不確定性。如果將收益率視為一個數學上的隨機變數的話,證券的期望收益是該隨機變數的數學期望(均值),而風險可以用該隨機變數的方差來表示。
對於投資組合而言,如何分配各種證券上的投資比例,從而使風險最小而收益最大?
答案是將投資比例設定為變數,通過數學規劃,對每一固定收益率求最小方差,對每一個固定的方差求最大收益率,這個多元方程的解可以決定一條曲線,這條曲線上的每一個點都對應著最優投資組合,即在給定風險水平下,收益率最大,這條曲線稱作「有效前沿」 (Efficient Frontier)。
對投資者而言,不存在比有效前沿更優的投資組合,只需要根據自己的風險偏好在有效前沿上尋找最優策略。
簡化後的公式為:
其中 p 為投資人的投資目標,即投資人期待的投資組合的期望值. 目標函數說明投資人資產分配的原則是在達成投資目標 p 的前提下,要將資產組合的風險最小化,這個公式就是Markowitz在1952年發表的'Portfolio Selection'一文的精髓,該文奠定了現代投資組合理論的基礎,也為Markowitz贏得了1990年的諾貝爾經濟學獎. 公式(1)中的決策變數為w i , i = 1,...,N, 整個數學形式是二次規劃(Quadratic Programming)問題,在允許賣空的情況下(即w i 可以為負,只有等式約束)時,可以用拉格朗日(Lagrange)方法求解。
有效前緣曲線如下圖:
我們考慮如下的二次規劃問題
運用拉格朗日方法求解,可以得到
再看公式(1),則將目標函數由 min W T W 調整為 min 1/2(W T W), 兩問題等價,寫出的求解矩陣為:
工具包: CVXOPT python凸優化包
函數原型: CVXOPT.solvers.qp(P,q,G,h,A,b)
求解時,將對應的P,q,G,h,A,b寫出,帶入求解函數即可.值得注意的是輸入的矩陣必須使用CVXOPT 中的matrix函數轉化,輸出的結果要使用 print(CVXOPT.solvers.qp(P,q,G,h,A,b)['x']) 函數才能輸出。
這里選取五支股票2014-01-01到2015-01-01的收益率數據進行分析.
選取的五支股票分別為: 白雲機場, 華夏銀行, 浙能電力, 福建高速, 生益科技
先大體了解一下五支股票的收益率情況:
看來,20%的預期收益是達不到了。
接下來,我們來看五支股票的相關系數矩陣:
可以看出,白雲機場和福建高速的相關性較高,因為二者同屬於交通版塊。在資產配置時,不利於降低非系統性風險。
接下來編寫一個MeanVariance類,對於傳入的收益率數據,可以進行給定預期收益的最佳持倉配比求解以及有效前緣曲線的繪制。
繪制的有效前緣曲線為:
將數據分為訓練集和測試集,並將隨機模擬的資產配比求得的累計收益與測試集的數據進行對比,得到:
可以看出,在前半段大部分時間用Markowitz模型計算出的收益率要高於隨機模擬的組合,然而在後半段卻不如隨機模擬的數據,可能是訓練的數據不夠或者沒有動態調倉造成的,在後面寫策略的時候,我會加入動態調倉的部分。
股票分析部分:
Markowitz 投資組合模型求解
蔡立專:量化投資——以python為工具. 電子工業出版社
『貳』 問一個Python分析股票價格的問題......
你先把價格按日期排序之後變成一個list的話,比如:
price=[70,74, 73, 72, 71,75]
你可以這么辦:
operations=[]
isLong=False
for i in range(len(price)-1):
if(not isLong):
if(price[i]<price[i+1]):
print "Go long on day " + str(i)
operations.append(-1);
isLong=True;
else:
operations.append(0);
else:
if(price[i]>price[i+1]):
print "Go short on day " + str(i)
operations.append(1);
isLong=False;
else:
operations.append(0);
if(isLong):
print "Go short on day " + str(len(price)-1)
operations.append(1)
else:
operations.append(0)
ProfitPerShare=0
for i in range(len(price)):
ProfitPerShare+=price[i]*operations[i]
print "Summary profit per share: "+str(ProfitPerShare)
這裡面就是說,如果你是空倉,那麼如果明天比今天高就買,否則明天買就比今天買更劃算;如果你不空倉,那麼如果明天比今天價低你就要清倉,否則明天賣就會更劃算。然後用一個叫operations的list來記錄你每天的操作,-1表示買,0表示沒有,1表示賣,所以最後可以計算每股獲得的收入price[i]*operations[i]的總和。
『叄』 怎樣用python處理股票
用Python處理股票需要獲取股票數據,以國內股票數據為例,可以安裝Python的第三方庫:tushare;一個國內股票數據獲取包。可以在網路中搜索「Python tushare」來查詢相關資料,或者在tushare的官網上查詢說明文檔。
『肆』 如何用python炒股
你就是想找個軟體或者券商的介面去上傳交易指令,你前期的數據抓取和分析可能python都寫好了,所以差這交易指令介面最後一步。對於股票的散戶,正規的法子是華寶,國信,興業這樣願意給介面的券商,但貌似開戶費很高才給這權利,而且只有lts,ctp這樣的c++介面,沒python版就需要你自己封裝。還有的法是wind這樣的軟體也有直接的介面,支持部分券商,但也貴,幾萬一年是要的,第三種就是走野路子,滑鼠鍵盤模擬法,很復雜的,就是模擬鍵盤滑鼠去操作一些軟體,比如券商版交易軟體和大智慧之類的。還有一種更野的方法,就是找到這些軟體的關於交易指令的底層代碼並更改,我網路看到的,不知道是不是真的可行。。散戶就這樣,沒資金就得靠技術,不過我覺得T+1的規則下,預測准確率的重要性高於交易的及時性,花功夫做數據分析就好,交易就人工完成吧
『伍』 用Python 進行股票分析 有什麼好的入門書籍或者課程嗎
Packt出版社有一本Python for Finance,講得比較雜,包括Python入門,和一些Finance相關的數據分析基礎(比如Time Series等)。Python for Finance
更新:O'Reilly出了本同名的書,篇幅更長,可以關注一下。Python for Finance - O'Reilly Media
『陸』 如何用Python炒股
python可以用於爬蟲,爬取指定股票的數據,更准確,更便捷,利於數據分析和買賣的把控
『柒』 怎麼開始python 在股票中的一些使用技巧
(1)設置環境變數:我的電腦-右鍵-屬性-高級-環境變數 在Path中加入
;c:\python26 (注意前面的分號和路徑)
(2)此時,還是只能通過"python *.py"運行python腳本,若希望直接運行*.py,只需再修改另一個環境變數PATHEXT:
;.PY;.PYM
3,測試是否安裝成功
cmd進入命令行 輸入python –v 若是輸出版本信息,則表示安裝完畢
4,建一個hello.py
print ("hello world")
5,cmd 進入命令行 找到文件路徑 hello.py
會輸出"hello world"
6,接受用戶輸入
x= input("x:")
y= input("y:")
print (x * y)
『捌』 用Python 進行股票分析 有什麼好的入門書籍或者課程嗎
個人覺得這問題問的不太對,說句不好的話,你是來搞編程的還是做股票的。
當然,如果題主只是用來搜集資料,看數據的話那還是可以操作一波的,至於python要怎麼入門,個人下面會推薦一些入門級的書籍,通過這些書籍,相信樓主今後會有一個清晰的了解(我們以一個完全不會編程的的新手來看待)。
《Learn Python The Hard Way》,也就是我們所說的笨辦法學python,這絕對是新手入門的第一選擇,裡面話題簡練,是一本以練習為導向的教材。有淺入深,而且易懂。
其它的像什麼,《Python源碼剖析》,《集體智慧編程》,《Python核心編程(第二版)》等題主都可以適當的選擇參讀下,相信都會對題主有所幫助。
最後,還是要重復上面的話題,炒股不是工程學科,它有太多的變數,對於現在的智能編程來說,它還沒有辦法及時的反映那些變數,所以,只能當做一種參考,千萬不可過渡依賴。
結語:pyhton相對來說是一種比較高端的學科,需要有很強的邏輯能力。所以入門是非常困難的,如果真的要學習,是需要很大的毅力去堅持下去的,而且不短時間就能入門了,要有所心理准備。
『玖』 自學3年Python的我成了數據分析師,總結成一張思維導圖
大家好,我是一名普通畢業生,現就職於某互聯網公司。之前很多同學問我「 為什麼自學3年Python,最後卻成為了數據分析師 ?」
首先肯定是數據分析師的前景和薪資條件,打動了我
下面是我的學習之路,附帶一些必備學習的資料,可以 免費領取 ,相信感興趣的你看完也可以找到自己的方向。
眾所周知:Python是當今最火的編程語言之一,各大招聘網站上都會要求求職者會這門語言,並且它很容易上手,業務面寬泛,像Web網頁工程師、網路爬蟲工程師、自動化運維、自動化測試、 游戲 開發、數據分析、AI等等。
我們首先明確一個大的方向,知道自己以後要做什麼。因為我是統計學專業,所以我會選擇從事數據分析行業,那麼 用Python做數據分析成了一個最佳選擇 。
要想使用Python做數據分析,首先就應該知道「 數據分析的流程是怎樣的? 」
我這次特地總結了一張 思維導圖 給大家,點擊放大看更清楚哦。
(點擊查看高清大圖)
基於此,我這里將我以前學習過程中用過的電子書(技能類、統計類、業務類),還有相關視頻免費分享給大家,省去了你們挑選視頻的時間,也希望能夠對你們的學習有所幫助。
PS:我總結的資料有點多哦,差不多有4G,大家一定要給你的網路雲盤空出位置來哦!
如果遇到一些環境配置,還有一些錯誤異常等bug,資料就顯得不太夠用,這時就需要找到老師,給我們特別講解。
或者是想 快速學習 數據分析領域知識,不妨先找一找 直播課 看看, 了解當下最貼合實際的學習思路,確定自己的方向。
Day1 20:00&量化交易入門:
用Python做股票指標分析和買賣時機選擇
場景工具:Python工具分解RSI指標流程處理: 業務場景分析建模和可視化學習成果:使用RSI指標模型做買賣點搜索、交易回溯實戰案例:分析A股數據模型,制定投資策略
Day2 20:00&職場晉升必備:
製作酷炫報表,4步帶你學習數據可視化
場景工具:用Tableau學習如何管理數據流程處理: 利用業務拆解找到數據指標、進行數據可視化學習成果:高效的對數據驅動型業務作出精準決策實戰案例:利用可視化工具構建 旅遊 客流量趨勢地圖
Day3 20:00&量化交易進階:
0基礎用Python搭建量化分析平台
場景工具:利用pandas工具分解KDJ指標構成流程處理: 交易數據爬取,業務場景分析建模和可視化分析結果:用KDJ指標模型對比特幣行情買賣點搜索&交易回溯實戰項目:掌握根據數據指數和分析工具尋找虛擬貨幣買賣原理
他們 每周都會定期分享 一些 干貨 供大家學習參考,對學習很有幫助。
(深度學習DeepLearning.ai實驗室認證)
(微軟/甲骨文/Cloudera等公司頒發的數據分析證書)
4步學會數據可視化,辦公效率提高三倍
(更多精彩內容 等你解鎖)
『拾』 python對股票分析有什麼作用
你好,Python對於股票分析來說,用處是很大的
Python,用數據軟體分析可以做股票的量化程序,因為股票量化是未來的一種趨勢,能夠解決人為心理波動和沖動下單等不良行為,所以學好python量化的話,那麼對股票來說有很大很大幫助