導航:首頁 > 編程語言 > python量化策略交叉驗證

python量化策略交叉驗證

發布時間:2023-01-23 11:01:56

⑴ 想用python量化金融,需要掌握python哪些

urllib, urllib2, urlparse, BeautifulSoup, mechanize, cookielib 等等啦這些庫的掌握並不難,網路爬蟲難的是你要自己設計壓力控制演算法,還有你的解析演算法,還有圖的遍歷演算法等。

⑵ 量化投資用什麼編程語言研發策略好呢

么以下我就以程序語言的角度來回答
當然如果已經會了某些語言,那你可以使用熟悉的語言去找網上的學習資源會比較快
如果沒有特別熟悉的語言,或者是願意多學一種非常好用的語言
我的建議是學習Python

我從以下幾點來分別說明

平台資源

國內外使用Python做雲端回測以及運算的免費平台相當的多,例如有 寬客在線,發明者量化,優礦, 等等不勝枚舉,可以使用平台的支持以及社區的互相幫助來學習

容易學習

綜合以上所說,"目前的環境底下" 我推薦Python.(推薦直接下載 Anaconda的集成開發環境)

⑶ 如何用python和scikit learn實現神經網路

1:神經網路演算法簡介

2:Backpropagation演算法詳細介紹

3:非線性轉化方程舉例

4:自己實現神經網路演算法NeuralNetwork

5:基於NeuralNetwork的XOR實例

6:基於NeuralNetwork的手寫數字識別實例

7:scikit-learn中BernoulliRBM使用實例

8:scikit-learn中的手寫數字識別實例

一:神經網路演算法簡介

1:背景

以人腦神經網路為啟發,歷史上出現過很多版本,但最著名的是backpropagation

2:多層向前神經網路(Multilayer Feed-Forward Neural Network)

⑷ 怎麼學習python量化交易

下面教你八步寫個量化交易策略——單股票均線策略

1 確定策略內容與框架

若昨日收盤價高出過去20日平均價今天開盤買入股票
若昨日收盤價低於過去20日平均價今天開盤賣出股票

只操作一隻股票,很簡單對吧,但怎麼用代碼說給計算機聽呢?

想想人是怎麼操作的,應該包括這樣兩個部分

既然是單股票策略,事先決定好交易哪一個股票。

每天看看昨日收盤價是否高出過去20日平均價,是的話開盤就買入,不是開盤就賣出。每天都這么做,循環下去。

對應代碼也是這兩個部分

definitialize(context):
用來寫最開始要做什麼的地方
defhandle_data(context,data):
用來寫每天循環要做什麼的地方

2 初始化

我們要寫設置要交易的股票的代碼,比如 兔寶寶(002043)

definitialize(context):
g.security='002043.XSHE'#存入兔寶寶的股票代碼

3 獲取收盤價與均價

首先,獲取昨日股票的收盤價

#用法:變數=data[股票代碼].close
last_price=data[g.security].close#取得最近日收盤價,命名為last_price

然後,獲取近二十日股票收盤價的平均價

#用法:變數=data[股票代碼].mavg(天數,『close』)
#獲取近二十日股票收盤價的平均價,命名為average_price
average_price=data[g.security].mavg(20,'close')

4 判斷是否買賣

數據都獲取完,該做買賣判斷了

#如果昨日收盤價高出二十日平均價,則買入,否則賣出
iflast_price>average_price:
買入
eliflast_price<average_price:
賣出

問題來了,現在該寫買賣下單了,但是拿多少錢去買我們還沒有告訴計算機,所以每天還要獲取賬戶里現金量。

#用法:變數=context.portfolio.cash
cash=context.portfolio.cash#取得當前的現金量,命名為cash

5 買入賣出

#用法:order_value(要買入股票股票的股票代碼,要多少錢去買)
order_value(g.security,cash)#用當前所有資金買入股票
#用法:order_target(要買賣股票的股票代碼,目標持倉金額)
order_target(g.security,0)#將股票倉位調整到0,即全賣出

6 策略代碼寫完,進行回測

把買入賣出的代碼寫好,策略就寫完了,如下

definitialize(context):#初始化
g.security='002043.XSHE'#股票名:兔寶寶
defhandle_data(context,data):#每日循環
last_price=data[g.security].close#取得最近日收盤價
#取得過去二十天的平均價格
average_price=data[g.security].mavg(20,'close')
cash=context.portfolio.cash#取得當前的現金
#如果昨日收盤價高出二十日平均價,則買入,否則賣出。
iflast_price>average_price:
order_value(g.security,cash)#用當前所有資金買入股票
eliflast_price<average_price:
order_target(g.security,0)#將股票倉位調整到0,即全賣出

現在,在策略回測界面右上部,設置回測時間從20140101到20160601,設置初始資金100000,設置回測頻率,然後點擊運行回測。

7 建立模擬交易,使策略和行情實時連接自動運行

策略寫好,回測完成,點擊回測結果界面(如上圖)右上部紅色模擬交易按鈕,新建模擬交易如下圖。 寫好交易名稱,設置初始資金,數據頻率,此處是每天,設置好後點提交。

8 開啟微信通知,接收交易信號

點擊聚寬導航欄我的交易,可以看到創建的模擬交易,如下圖。 點擊右邊的微信通知開關,將OFF調到ON,按照指示掃描二維碼,綁定微信,就能微信接收交易信號了。

⑸ 使用python做量化交易策略測試和回驗,有哪些比較成熟一些的庫

比較成熟的庫可以參考如下幾個:
pybacktest
pyalgotrader
zipline
bt
backtrader

pybacktest基於vector,不是event based,快得多得多,缺點也明顯。

⑹ Python語言下的機器學習庫

Python語言下的機器學習庫
Python是最好的編程語言之一,在科學計算中用途廣泛:計算機視覺、人工智慧、數學、天文等。它同樣適用於機器學習也是意料之中的事。當然,它也有些缺點;其中一個是工具和庫過於分散。如果你是擁有unix思維(unix-minded)的人,你會覺得每個工具只做一件事並且把它做好是非常方便的。但是你也需要知道不同庫和工具的優缺點,這樣在構建系統時才能做出合理的決策。工具本身不能改善系統或產品,但是使用正確的工具,我們可以工作得更高效,生產率更高。因此了解正確的工具,對你的工作領域是非常重要的。
這篇文章的目的就是列舉並描述Python可用的最有用的機器學習工具和庫。這個列表中,我們不要求這些庫是用Python寫的,只要有Python介面就夠了。我們在最後也有一小節關於深度學習(Deep Learning)的內容,因為它最近也吸引了相當多的關注。
我們的目的不是列出Python中所有機器學習庫(搜索「機器學習」時Python包索引(PyPI)返回了139個結果),而是列出我們所知的有用並且維護良好的那些。另外,盡管有些模塊可以用於多種機器學習任務,我們只列出主要焦點在機器學習的庫。比如,雖然Scipy包含一些聚類演算法,但是它的主焦點不是機器學習而是全面的科學計算工具集。因此我們排除了Scipy(盡管我們也使用它!)。
另一個需要提到的是,我們同樣會根據與其他科學計算庫的集成效果來評估這些庫,因為機器學習(有監督的或者無監督的)也是數據處理系統的一部分。如果你使用的庫與數據處理系統其他的庫不相配,你就要花大量時間創建不同庫之間的中間層。在工具集中有個很棒的庫很重要,但這個庫能與其他庫良好集成也同樣重要。
如果你擅長其他語言,但也想使用Python包,我們也簡單地描述如何與Python進行集成來使用這篇文章列出的庫。
Scikit-LearnScikit Learn是我們在CB Insights選用的機器學習工具。我們用它進行分類、特徵選擇、特徵提取和聚集。我們最愛的一點是它擁有易用的一致性API,並提供了很多開箱可用的求值、診斷和交叉驗證方法(是不是聽起來很熟悉?Python也提供了「電池已備(譯註:指開箱可用)」的方法)。錦上添花的是它底層使用Scipy數據結構,與Python中其餘使用Scipy、Numpy、Pandas和Matplotlib進行科學計算的部分適應地很好。因此,如果你想可視化分類器的性能(比如,使用精確率與反饋率(precision-recall)圖表,或者接收者操作特徵(Receiver Operating Characteristics,ROC)曲線),Matplotlib可以幫助進行快速可視化。考慮到花在清理和構造數據的時間,使用這個庫會非常方便,因為它可以緊密集成到其他科學計算包上。
另外,它還包含有限的自然語言處理特徵提取能力,以及詞袋(bag of words)、tfidf(Term Frequency Inverse Document Frequency演算法)、預處理(停用詞/stop-words,自定義預處理,分析器)。此外,如果你想快速對小數據集(toy dataset)進行不同基準測試的話,它自帶的數據集模塊提供了常見和有用的數據集。你還可以根據這些數據集創建自己的小數據集,這樣在將模型應用到真實世界中之前,你可以按照自己的目的來檢驗模型是否符合期望。對參數最優化和參數調整,它也提供了網格搜索和隨機搜索。如果沒有強大的社區支持,或者維護得不好,這些特性都不可能實現。我們期盼它的第一個穩定發布版。
StatsmodelsStatsmodels是另一個聚焦在統計模型上的強大的庫,主要用於預測性和探索性分析。如果你想擬合線性模型、進行統計分析,或者預測性建模,那麼Statsmodels非常適合。它提供的統計測試相當全面,覆蓋了大部分情況的驗證任務。如果你是R或者S的用戶,它也提供了某些統計模型的R語法。它的模型同時也接受Numpy數組和Pandas數據幀,讓中間數據結構成為過去!
PyMCPyMC是做貝葉斯曲線的工具。它包含貝葉斯模型、統計分布和模型收斂的診斷工具,也包含一些層次模型。如果想進行貝葉斯分析,你應該看看。
ShogunShogun是個聚焦在支持向量機(Support Vector Machines, SVM)上的機器學習工具箱,用C++編寫。它正處於積極開發和維護中,提供了Python介面,也是文檔化最好的介面。但是,相對於Scikit-learn,我們發現它的API比較難用。而且,也沒提供很多開箱可用的診斷和求值演算法。但是,速度是個很大的優勢。
GensimGensim被定義為「人們的主題建模工具(topic modeling for humans)」。它的主頁上描述,其焦點是狄利克雷劃分(Latent Dirichlet Allocation, LDA)及變體。不同於其他包,它支持自然語言處理,能將NLP和其他機器學習演算法更容易組合在一起。如果你的領域在NLP,並想進行聚集和基本的分類,你可以看看。目前,它們引入了Google的基於遞歸神經網路(Recurrent Neural Network)的文本表示法word2vec。這個庫只使用Python編寫。
OrangeOrange是這篇文章列舉的所有庫中唯一帶有圖形用戶界面(Graphical User Interface,GUI)的。對分類、聚集和特徵選擇方法而言,它是相當全面的,還有些交叉驗證的方法。在某些方面比Scikit-learn還要好(分類方法、一些預處理能力),但與其他科學計算系統(Numpy, Scipy, Matplotlib, Pandas)的適配上比不上Scikit-learn。但是,包含GUI是個很重要的優勢。你可以可視化交叉驗證的結果、模型和特徵選擇方法(某些功能需要安裝Graphviz)。對大多數演算法,Orange都有自己的數據結構,所以你需要將數據包裝成Orange兼容的數據結構,這使得其學習曲線更陡。
PyMVPAPyMVPA是另一個統計學習庫,API上與Scikit-learn很像。包含交叉驗證和診斷工具,但是沒有Scikit-learn全面。
深度學習盡管深度學習是機器學習的一個子節,我們在這里創建單獨一節的原因是,它最新吸引了Google和Facebook人才招聘部門的很多注意。
TheanoTheano是最成熟的深度學習庫。它提供了不錯的數據結構(張量,tensor)來表示神經網路的層,對線性代數來說很高效,與Numpy的數組類似。需要注意的是,它的API可能不是很直觀,用戶的學習曲線會很高。有很多基於Theano的庫都在利用其數據結構。它同時支持開箱可用的GPU編程。
PyLearn2還有另外一個基於Theano的庫,PyLearn2,它給Theano引入了模塊化和可配置性,你可以通過不同的配置文件來創建神經網路,這樣嘗試不同的參數會更容易。可以說,如果分離神經網路的參數和屬性到配置文件,它的模塊化能力更強大。
DecafDecaf是最近由UC Berkeley發布的深度學習庫,在Imagenet分類挑戰中測試發現,其神經網路實現是很先進的(state of art)。
Nolearn如果你想在深度學習中也能使用優秀的Scikit-learn庫API,封裝了Decaf的Nolearn會讓你能夠更輕松地使用它。它是對Decaf的包裝,與Scikit-learn兼容(大部分),使得Decaf更不可思議。
OverFeatOverFeat是最近貓vs.狗(kaggle挑戰)的勝利者,它使用C++編寫,也包含一個Python包裝器(還有Matlab和Lua)。通過Torch庫使用GPU,所以速度很快。也贏得了ImageNet分類的檢測和本地化挑戰。如果你的領域是計算機視覺,你可能需要看看。
HebelHebel是另一個帶有GPU支持的神經網路庫,開箱可用。你可以通過YAML文件(與Pylearn2類似)決定神經網路的屬性,提供了將神級網路和代碼友好分離的方式,可以快速地運行模型。由於開發不久,就深度和廣度上說,文檔很匱乏。就神經網路模型來說,也是有局限的,因為只支持一種神經網路模型(正向反饋,feed-forward)。但是,它是用純Python編寫,將會是很友好的庫,因為包含很多實用函數,比如調度器和監視器,其他庫中我們並沒有發現這些功能。
NeurolabNeuroLab是另一個API友好(與Matlabapi類似)的神經網路庫。與其他庫不同,它包含遞歸神經網路(Recurrent Neural Network,RNN)實現的不同變體。如果你想使用RNN,這個庫是同類API中最好的選擇之一。
與其他語言集成你不了解Python但是很擅長其他語言?不要絕望!Python(還有其他)的一個強項就是它是一個完美的膠水語言,你可以使用自己常用的編程語言,通過Python來訪問這些庫。以下適合各種編程語言的包可以用於將其他語言與Python組合到一起:R -> RPythonMatlab -> matpythonJava -> JythonLua -> Lunatic PythonJulia -> PyCall.jl
不活躍的庫這些庫超過一年沒有發布任何更新,我們列出是因為你有可能會有用,但是這些庫不太可能會進行BUG修復,特別是未來進行增強。MDPMlPyFFnetPyBrain如果我們遺漏了你最愛的Python機器學習包,通過評論讓我們知道。我們很樂意將其添加到文章中。

⑺ python怎麼實現opencv3 svm訓練模型保存和載入

在做模型訓練的時候,尤其是在訓練集上做交叉驗證,通常想要將模型保存下來,然後放到獨立的測試集上測試,下面介紹的是python中訓練模型的保存和再使用。
scikit-learn已經有了模型持久化的操作,導入joblib即可
from sklearn.externals import joblib
模型保存
>>> os.chdir("workspace/model_save")>>> from sklearn import svm>>> X = [[0, 0], [1, 1]]>>> y = [0, 1]>>> clf = svm.SVC()>>> clf.fit(X, y) >>> clf.fit(train_X,train_y)>>> joblib.mp(clf, "train_model.m")
通過joblib的mp可以將模型保存到本地,clf是訓練的分類器
模型從本地調回
>>> clf = joblib.load("train_model.m")
通過joblib的load方法,載入保存的模型。
然後就可以在測試集上測試了
clf.predit(test_X,test_y)

閱讀全文

與python量化策略交叉驗證相關的資料

熱點內容
考駕照怎麼找伺服器 瀏覽:882
阿里雲伺服器如何更換地區 瀏覽:970
手機app調音器怎麼調古箏 瀏覽:501
銳起無盤系統在伺服器上需要設置什麼嗎 瀏覽:17
紅旗計程車app怎麼應聘 瀏覽:978
如何編寫linux程序 瀏覽:870
吉利車解壓 瀏覽:248
java輸入流字元串 瀏覽:341
安卓軟體沒網怎麼回事 瀏覽:785
dvd壓縮碟怎麼導出電腦 瀏覽:274
冒險島什麼伺服器好玩 瀏覽:541
如何在伺服器上做性能測試 瀏覽:793
命令序列錯 瀏覽:259
javaif的條件表達式 瀏覽:576
手機app上傳的照片怎麼找 瀏覽:531
雲伺服器面臨哪些威脅 瀏覽:748
c語言各種編譯特點 瀏覽:177
路由器多種加密方法 瀏覽:604
程序員阻止電腦自動彈出定位 瀏覽:168
如何做伺服器服務商 瀏覽:762