『壹』 python對股票分析有什麼作用
你好,Python對於股票分析來說,用處是很大的
Python,用數據軟體分析可以做股票的量化程序,因為股票量化是未來的一種趨勢,能夠解決人為心理波動和沖動下單等不良行為,所以學好python量化的話,那麼對股票來說有很大很大幫助
『貳』 如何用Python和機器學習炒股賺錢
相信很多人都想過讓人工智慧來幫你賺錢,但到底該如何做呢?瑞士日內瓦的一位金融數據顧問 Gaëtan Rickter 近日發表文章介紹了他利用 Python 和機器學習來幫助炒股的經驗,其最終成果的收益率跑贏了長期處於牛市的標准普爾 500 指數。雖然這篇文章並沒有將他的方法完全徹底公開,但已公開的內容或許能給我們帶來如何用人工智慧炒股的啟迪。
我終於跑贏了標准普爾 500 指數 10 個百分點!聽起來可能不是很多,但是當我們處理的是大量流動性很高的資本時,對沖基金的利潤就相當可觀。更激進的做法還能得到更高的回報。
這一切都始於我閱讀了 Gur Huberman 的一篇題為《Contagious Speculation and a Cure for Cancer: A Non-Event that Made Stock Prices Soar》的論文。該研究描述了一件發生在 1998 年的涉及到一家上市公司 EntreMed(當時股票代碼是 ENMD)的事件:
「星期天《紐約時報》上發表的一篇關於癌症治療新葯開發潛力的文章導致 EntreMed 的股價從周五收盤時的 12.063 飆升至 85,在周一收盤時接近 52。在接下來的三周,它的收盤價都在 30 以上。這股投資熱情也讓其它生物科技股得到了溢價。但是,這個癌症研究方面的可能突破在至少五個月前就已經被 Nature 期刊和各種流行的報紙報道過了,其中甚至包括《泰晤士報》!因此,僅僅是熱情的公眾關注就能引發股價的持續上漲,即便實際上並沒有出現真正的新信息。」
在研究者給出的許多有見地的觀察中,其中有一個總結很突出:
「(股價)運動可能會集中於有一些共同之處的股票上,但這些共同之處不一定要是經濟基礎。」
我就想,能不能基於通常所用的指標之外的其它指標來劃分股票。我開始在資料庫裡面挖掘,幾周之後我發現了一個,其包含了一個分數,描述了股票和元素周期表中的元素之間的「已知和隱藏關系」的強度。
我有計算基因組學的背景,這讓我想起了基因和它們的細胞信號網路之間的關系是如何地不為人所知。但是,當我們分析數據時,我們又會開始看到我們之前可能無法預測的新關系和相關性。
如果你使用機器學習,就可能在具有已知和隱藏關系的上市公司的寄生、共生和共情關系之上搶佔先機,這是很有趣而且可以盈利的。最後,一個人的盈利能力似乎完全關乎他在生成這些類別的數據時想出特徵標簽(即概念(concept))的強大組合的能力。
我在這類模型上的下一次迭代應該會包含一個用於自動生成特徵組合或獨特列表的單獨演算法。也許會基於近乎實時的事件,這可能會影響那些具有隻有配備了無監督學習演算法的人類才能預測的隱藏關系的股票組。
『叄』 怎麼開始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怎麼做量化投資
本文將會講解量化投資過程中的基本流程,量化投資無非這幾個流程,數據輸入------策略書寫------回測輸出
其中策略書寫部分還涉及到編程語言的選擇,如果不想苦惱數據輸入和回測輸出的話,還要選擇回測平台。
一、數據
首先,必須是數據,數據是量化投資的基礎
如何得到數據?
Wind:數據來源的最全的還是Wind,但是要付費,學生可以有免費試用的機會,之後還會和大家分享一下怎樣才Wind里摘取數據,Wind有很多軟體的借口,Excel,Matlab,Python,C++。
預測者網:不經意間發現,一個免費提供股票數據網站 預測者網,下載的是CSV格式
TB交易開拓者:Tradeblazer,感謝@孫存浩提供數據源
TuShare:TuShare -財經數據介麵包,基於Python的財經數據包,利用Python進行摘取
如何存儲數據?
Mysql
如何預處理數據?
空值處理:利用DataFrame的fill.na()函數,將空值(Nan)替換成列的平均數、中位數或者眾數
數據標准化
數據如何分類?
行情數據
財務數據
宏觀數據
二、計算語言&軟體
已經有很多人在網上詢問過該選擇什麼語言?筆者一開始用的是matlab,但最終選擇了python
python:庫很多,只有你找不到的,沒有你想不到,和量化這塊結合比較緊密的有:
Numpy&Scipy:科學計算庫,矩陣計算
Pandas:金融數據分析神器,原AQR資本員工寫的一個庫,處理時間序列的標配
Matplotlib:畫圖庫
scikit-learn:機器學習庫
statsmodels:統計分析模塊
TuShare:免費、開源的python財經數據介麵包
Zipline:回測系統
TaLib:技術指標庫
matlab:主要是矩陣運算、科學運算這一塊很強大,主要有優點是WorkSpace變數可視化
python的Numpy+Scipy兩個庫完全可以替代Matlab的矩陣運算
Matplotlib完克Matlab的畫圖功能
python還有很多其他的功能
pycharm(python的一款IDE)有很棒的調試功能,能代替Matlab的WorkSpace變數可視化
推薦的python學習文檔和書籍
關於python的基礎,建議廖雪峰Python 2.7教程,適合於沒有程序基礎的人來先看,涉及到python的基本數據類型、循環語句、條件語句、函數、類與對象、文件讀寫等很重要的基礎知識。
涉及到數據運算的話,其實基礎教程沒什麼應用,python各類包都幫你寫好了,最好的學習資料還是它的官方文檔,文檔中的不僅有API,還會有寫實例教程
pandas文檔
statsmodels文檔
scipy和numpy文檔
matplotlib文檔
TuShare文檔
第二,推薦《利用Python進行數據分析》,pandas的開發初衷就是用來處理金融數據的
三、回測框架和網站
兩個開源的回測框架
PyAlgoTrade - Algorithmic Trading
Zipline, a Pythonic Algorithmic Trading Library
『伍』 python炒股可行嗎
你好,只要這個軟體編程學的好,還是可以的,這是用來量化做交易的,很好
希望你能把這個軟體學好,然後用在股票或期貨的交易當中盈利
『陸』 如何用python實現Markowitz投資組合優化
多股票策略回測時常常遇到問題。
倉位如何分配?
你以為基金經理都是一拍腦袋就等分倉位了嗎?
或者玩點玄乎的斐波拉契數列?
OMG,誰說的黃金比例,讓我看到你的腦袋(不削才怪)!!
其實,這個問題,好多好多年前馬科維茨(Markowitz)我喜愛的小馬哥就給出答案——投資組合理論。
根據這個理論,我們可以對多資產的組合配置進行三方面的優化。
1.找到有效前沿。在既定的收益率下使組合的方差最小。
2.找到sharpe最優的組合(收益-風險均衡點)
3.找到風險最小的組合
跟著我,一步兩步,輕松實現。
該理論基於用均值和方差來表述組合的優劣的前提。將選取幾只股票,用蒙特卡洛模擬初步探究組合的有效前沿。
通過最大Sharpe和最小方差兩種優化來找到最優的資產組合配置權重參數。
最後,刻畫出可能的分布,兩種最優以及組合的有效前沿。
註:
文中的數據API來自量化平台聚寬,在此表示感謝。
原文見【組合管理】——投資組合理論(有效前沿)(包含正態檢驗部分)
0.導入需要的包
import pandas as pd
import numpy as np
import statsmodels.api as sm #統計運算
import scipy.stats as scs #科學計算
import matplotlib.pyplot as plt #繪圖
1.選取幾只感興趣的股票
000413 東旭光電,000063 中興通訊,002007 華蘭生物,000001 平安銀行,000002 萬科A
並比較一下數據(2015-01-01至2015-12-31)
In[1]:
stock_set = ['000413.XSHE','000063.XSHE','002007.XSHE','000001.XSHE','000002.XSHE']
noa = len(stock_set)
df = get_price(stock_set, start_date = '2015-01-01', end_date ='2015-12-31', 'daily', ['close'])
data = df['close']
#規范化後時序數據
(data/data.ix[0]*100).plot(figsize = (8,5))
Out[1]:
2.計算不同證券的均值、協方差
每年252個交易日,用每日收益得到年化收益。計算投資資產的協方差是構建資產組合過程的核心部分。運用pandas內置方法生產協方差矩陣。
In [2]:
returns = np.log(data / data.shift(1))
returns.mean()*252
Out[2]:
000413.XSHE 0.184516
000063.XSHE 0.176790
002007.XSHE 0.309077
000001.XSHE -0.102059
000002.XSHE 0.547441
In [3]:
returns.cov()*252
Out[3]:
3.給不同資產隨機分配初始權重
由於A股不允許建立空頭頭寸,所有的權重系數均在0-1之間
In [4]:
weights = np.random.random(noa)
weights /= np.sum(weights)
weights
Out[4]:
array([ 0.37505798, 0.21652754, 0.31590981, 0.06087709, 0.03162758])
4.計算預期組合年化收益、組合方差和組合標准差
In [5]:
np.sum(returns.mean()*weights)*252
Out[5]:
0.21622558669017816
In [6]:
np.dot(weights.T, np.dot(returns.cov()*252,weights))
Out[6]:
0.23595133640121463
In [7]:
np.sqrt(np.dot(weights.T, np.dot(returns.cov()* 252,weights)))
Out[7]:
0.4857482232609962
5.用蒙特卡洛模擬產生大量隨機組合
進行到此,我們最想知道的是給定的一個股票池(證券組合)如何找到風險和收益平衡的位置。
下面通過一次蒙特卡洛模擬,產生大量隨機的權重向量,並記錄隨機組合的預期收益和方差。
In [8]:
port_returns = []
port_variance = []
for p in range(4000):
weights = np.random.random(noa)
weights /=np.sum(weights)
port_returns.append(np.sum(returns.mean()*252*weights))
port_variance.append(np.sqrt(np.dot(weights.T, np.dot(returns.cov()*252, weights))))
port_returns = np.array(port_returns)
port_variance = np.array(port_variance)
#無風險利率設定為4%
risk_free = 0.04
plt.figure(figsize = (8,4))
plt.scatter(port_variance, port_returns, c=(port_returns-risk_free)/port_variance, marker = 'o')
plt.grid(True)
plt.xlabel('excepted volatility')
plt.ylabel('expected return')
plt.colorbar(label = 'Sharpe ratio')
Out[8]:
6.投資組合優化1——sharpe最大
建立statistics函數來記錄重要的投資組合統計數據(收益,方差和夏普比)
通過對約束最優問題的求解,得到最優解。其中約束是權重總和為1。
In [9]:
def statistics(weights):
weights = np.array(weights)
port_returns = np.sum(returns.mean()*weights)*252
port_variance = np.sqrt(np.dot(weights.T, np.dot(returns.cov()*252,weights)))
return np.array([port_returns, port_variance, port_returns/port_variance])
#最優化投資組合的推導是一個約束最優化問題
import scipy.optimize as sco
#最小化夏普指數的負值
def min_sharpe(weights):
return -statistics(weights)[2]
#約束是所有參數(權重)的總和為1。這可以用minimize函數的約定表達如下
cons = ({'type':'eq', 'fun':lambda x: np.sum(x)-1})
#我們還將參數值(權重)限制在0和1之間。這些值以多個元組組成的一個元組形式提供給最小化函數
bnds = tuple((0,1) for x in range(noa))
#優化函數調用中忽略的唯一輸入是起始參數列表(對權重的初始猜測)。我們簡單的使用平均分布。
opts = sco.minimize(min_sharpe, noa*[1./noa,], method = 'SLSQP', bounds = bnds, constraints = cons)
opts
Out[9]:
status: 0
success: True
njev: 4
nfev: 28
fun: -1.1623048291871221
x: array([ -3.60840218e-16, 2.24626781e-16, 1.63619563e-01, -2.27085639e-16, 8.36380437e-01])
message: 'Optimization terminated successfully.'
jac: array([ 1.81575805e-01, 5.40387481e-01, 8.18073750e-05, 1.03137662e+00, -1.60038471e-05, 0.00000000e+00])
nit: 4
得到的最優組合權重向量為:
In [10]:
opts['x'].round(3)
Out[10]:
array([-0. , 0. , 0.164, -0. , 0.836])
sharpe最大的組合3個統計數據分別為:
In [11]:
#預期收益率、預期波動率、最優夏普指數
statistics(opts['x']).round(3)
Out[11]:
array([ 0.508, 0.437, 1.162])
7.投資組合優化2——方差最小
接下來,我們通過方差最小來選出最優投資組合。
In [12]:
#但是我們定義一個函數對 方差進行最小化
def min_variance(weights):
return statistics(weights)[1]
optv = sco.minimize(min_variance, noa*[1./noa,],method = 'SLSQP', bounds = bnds, constraints = cons)
optv
Out[12]:
status: 0
success: True
njev: 7
nfev: 50
fun: 0.38542969450547221
x: array([ 1.14787640e-01, 3.28089742e-17, 2.09584008e-01, 3.53487044e-01, 3.22141307e-01])
message: 'Optimization terminated successfully.'
jac: array([ 0.3851725 , 0.43591119, 0.3861807 , 0.3849672 , 0.38553924, 0. ])
nit: 7
方差最小的最優組合權重向量及組合的統計數據分別為:
In [13]:
optv['x'].round(3)
Out[13]:
array([ 0.115, 0. , 0.21 , 0.353, 0.322])
In [14]:
#得到的預期收益率、波動率和夏普指數
statistics(optv['x']).round(3)
Out[14]:
array([ 0.226, 0.385, 0.587])
8.組合的有效前沿
有效前沿有既定的目標收益率下方差最小的投資組合構成。
在最優化時採用兩個約束,1.給定目標收益率,2.投資組合權重和為1。
In [15]:
def min_variance(weights):
return statistics(weights)[1]
#在不同目標收益率水平(target_returns)循環時,最小化的一個約束條件會變化。
target_returns = np.linspace(0.0,0.5,50)
target_variance = []
for tar in target_returns:
cons = ({'type':'eq','fun':lambda x:statistics(x)[0]-tar},{'type':'eq','fun':lambda x:np.sum(x)-1})
res = sco.minimize(min_variance, noa*[1./noa,],method = 'SLSQP', bounds = bnds, constraints = cons)
target_variance.append(res['fun'])
target_variance = np.array(target_variance)
下面是最優化結果的展示。
叉號:構成的曲線是有效前沿(目標收益率下最優的投資組合)
紅星:sharpe最大的投資組合
黃星:方差最小的投資組合
In [16]:
plt.figure(figsize = (8,4))
#圓圈:蒙特卡洛隨機產生的組合分布
plt.scatter(port_variance, port_returns, c = port_returns/port_variance,marker = 'o')
#叉號:有效前沿
plt.scatter(target_variance,target_returns, c = target_returns/target_variance, marker = 'x')
#紅星:標記最高sharpe組合
plt.plot(statistics(opts['x'])[1], statistics(opts['x'])[0], 'r*', markersize = 15.0)
#黃星:標記最小方差組合
plt.plot(statistics(optv['x'])[1], statistics(optv['x'])[0], 'y*', markersize = 15.0)
plt.grid(True)
plt.xlabel('expected volatility')
plt.ylabel('expected return')
plt.colorbar(label = 'Sharpe ratio')
Out[16]:
『柒』 《Python與量化投資從基礎到實戰》pdf下載在線閱讀,求百度網盤雲資源
《Python與量化投資》(王小川)電子書網盤下載免費在線閱讀
資源鏈接:
鏈接:https://pan..com/s/1az6G1OqbcA9LO1hrjP5xEA
書名:Python與量化投資
作者:王小川
豆瓣評分:6.8
出版社:電子工業出版社
出版年份:2018-3
頁數:424
內容簡介:
本書主要講解如何利用Python進行量化投資,包括對數據的獲取、整理、分析挖掘、信號構建、策略構建、回測、策略分析等。本書也是利用Python進行數據分析的指南,有大量的關於數據處理分析的應用,並將重點介紹如何高效地利用Python解決投資策略問題。本書分為Python基礎和量化投資兩大部分:Python基礎部分主要講解Python軟體的基礎、各個重要模塊及如何解決常見的數據分析問題;量化投資部分在Python基礎部分的基礎上,講解如何使用優礦(uqer.io)回測平台實現主流策略及高級定製策略等。
本書可作為專業金融從業者進行量化投資的工具書,也可作為金融領域的入門參考書。在本書中有大量的Python代碼、Python量化策略的實現代碼等,尤其是對於量化策略的實現代碼,讀者可直接自行修改並獲得策略的歷史回測結果,甚至可將代碼直接實盤應用,進行投資。
作者簡介:
王小川,華創證券研究所金融工程高級分析師,國內知名MATLAB、Python培訓專家,MATLABSKY創始人之一,人大經濟論壇CDA課程Python金牌講師。從事量化投資相關的工作,承擔了部分高校的統計課程教學任務,長期研究機器學習在統計學中的應用,精通MATLAB、Python、SAS等統計軟體,熱衷於數據分析和數據挖掘工作,有著扎實的理論基礎和豐富的實戰經驗。著有《MATLAB神經網路30個案例分析》和《MATLAB神經網路43個案例分析》。
陳傑,華創證券研究所金融工程團隊負責人,擁有CFA、FRM資格。從2009年開始從事量化開發工作。在入職華創之前,曾擔任申萬宏源研究所金融工程首席分析師。
盧威,華創證券研究所金融工程分析師,前優礦網量化分析師,為優礦網資深用戶,在優礦網分享過多篇高質量的量化研究報告,擅長使用Python進行量化投資研究。
劉昺軼,上海交通大學工學碩士,研究方向為斷裂力學、流體力學,擅長Python編程、統計建模與Web開發,現為量化投資界新兵,正在快速成長。
秦玄晉,上海對外經貿大學會計學碩士,有兩年量化投資經驗,研究方向為公司金融。
蘇博,上海財經大學金融信息工程碩士,主要研究方向為金融大數據分析。
徐晟剛,復旦大學西方經濟學碩士,數理功底深厚,熱愛編程與策略研究,精通Python、MATLAB等編程語言,有3年金融工程策略研究經驗,擅長擇時和事件類策略。
『捌』 如何用Python炒股
如果想直接執行python程序的話可以寫一個.bat新建一個記事本,然後寫一段下面的代碼,最後存成.bat文件,以後直接執行這段代碼就可以了。其實也可以直接執行.py文件c:\program files\python file.py
『玖』 用Python 進行股票分析 有什麼好的入門書籍或者課程嗎
問題不對,你拿股票當工科看了,理工學院里可沒有一個股票分析專業。股票或者投資這行有兩個特點,1.
除了市場數據必看,沒有什麼理論必看。理論跟你實際操作相比是垃圾,這么說不過分;2.
實際能賺錢的經驗,沒有人會公開的。公開會導致失效,會引來對手盤,沒人會跟自己過不去。能賺錢的人基本也沒什麼興趣出書或教課。所以,別嫌給你澆冷水,
如果你想要書籍或者課程的話,就在理工類裡面挑一個接近投資的專業吧,比如
quants。自己沒方向的話,恐怕想求助也難。我是做這個的,但完全是自己摸索。Python
是自學,股票分析也是自己攢經驗值。我的博客或許能給你點啟發:
Jacky
Liu's
Blog
,
但最多是啟發而已。你得想出你自己的點子,然後自己去跟市場求證,謝謝
~
『拾』 如何用python炒股
你就是想找個軟體或者券商的介面去上傳交易指令,你前期的數據抓取和分析可能python都寫好了,所以差這交易指令介面最後一步。對於股票的散戶,正規的法子是華寶,國信,興業這樣願意給介面的券商,但貌似開戶費很高才給這權利,而且只有lts,ctp這樣的c++介面,沒python版就需要你自己封裝。還有的法是wind這樣的軟體也有直接的介面,支持部分券商,但也貴,幾萬一年是要的,第三種就是走野路子,滑鼠鍵盤模擬法,很復雜的,就是模擬鍵盤滑鼠去操作一些軟體,比如券商版交易軟體和大智慧之類的。還有一種更野的方法,就是找到這些軟體的關於交易指令的底層代碼並更改,我網路看到的,不知道是不是真的可行。。散戶就這樣,沒資金就得靠技術,不過我覺得T+1的規則下,預測准確率的重要性高於交易的及時性,花功夫做數據分析就好,交易就人工完成吧