1. 用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
2. 用python做數據分析和數據挖掘用哪個IDE比較好
推薦使用
ipython和jupyter組合。下載安裝這個就行.集成包.數據分析的絕大部分包都有集成.而且自帶python環境與編譯器。地址:https://www.continuum.io/downloads/。具體使用請搜索:anaconda
3
如果你需要的僅僅是一款編譯器:推薦pycharm。可以搜一下
3. 用pycharm能做數據分析嗎
1 如果你是web開發工程師
那就選擇pycharm。針對大型的web框架修改調試,還是需要個大型IDE。
2 如果你是數據處理工程師
那就選擇spyder或者anaconda。安裝後就處理好集成環境。不用再處理環境依賴關系,也包含了numpy,matplotlib和pandas,可以做些數據處理。
3 如果你是初學者
那就用python+vscode。可以智能提示,語法檢查,逐行調試等
4. 利用python進行數據分析 用什麼軟體
與數據分析相關的 Python 庫
NumPy
NumPy 是 Python 科學計算的基礎包,它提供:
快速高效的多維數組對象 ndarray;
直接對數組執行數學運算及對數組執行元素級計算的函數;
線性代數運算、隨機數生成;
將 C、C++、Fortran 代碼集成到 Python 的工具等。
它專為進行嚴格的數字處理而產生。多為很多大型金融公司使用,以及核心的科學計算組織如:Lawrence Livermore,NASA 用其處理一些本來使用 C++,Fortran 或Matlab 等所做的任務。
Pandas
Pandas 主要提供快速便捷地處理結構化數據的大量數據結構和函數。
Matplotlib
Matplotlib 是最流行的用於繪制數據圖表的 Python 庫。
IPython
IPython 是 Python 科學計算標准工具集的組成部分,是一個增強的 Python Shell,目的是提高編寫、測試、調試 Python 代碼的速度。主要用於互動式數據處理和利用matplotlib 對數據進行可視化處理。
SciPy
SciPy 是一組專門解決科學計算中各種標准問題域的包的集合。主要包括以下包:
scipy.integrate: 數值積分常式和微分方程求解器;
scipy.linalg: 擴展了由 numpy.linalg 提供的線性代數常式和矩陣分解功能;
scipy.optimize: 函數優化器以及根查找演算法;
scipy.signal: 信號處理工具;
scipy.sparse: 稀疏矩陣和稀疏線性系統求解器;
scipy.special: SPECFUN(這是一個實現了許多常用數學函數的 Fortran 庫)的包裝器。
scipy.stats: 標准連續和離散概率分布、各種統計檢驗方法和更好的描述統計法;
scipy.weave: 利用內聯 C++ 代碼加速數組計算的工具。
5. python 數據分析 用什麼軟體
1.安裝Jupyter notebook(或者安裝pycharm直接下載安裝皆可,linux和windows同樣適用)
#如果是ubuntu16.04 默認已經安裝了python2和python3
#需要另行安裝pip,python2的pip安裝
sudo apt-get python-pip
#如果安裝python3的pip
sudo apt-get python3-pip
12345671234567
#安裝開發工具Jupyter notebook
sudo pip3 install jupyter1212
注意,只能安裝一個jupyter notebook,默認只能包含一個內核,如python3或者python2,請根據自己開發需求。
特殊需求:
需要python3和python2共存的,請看我另幾篇文章。Windows下Python多版本共存
2.在線安裝(windows/linux)主要的數據分析工具(輪子)
注意:Ubuntn中,默認的pip 是指python2的,pip3才是python3的,如果安裝python3的輪子,請將pip替換成pip3,反之亦然。
數據分析(為了避免依賴沖突,請按順序安裝)
sudo pip3 install numpy
sudo pip3 install pandas
#安裝matplotlib需要先安裝libpng和freetype
sudo apt-get install libpng-dev
#如果不知到需要下載工具的全稱,可以用來查找需要工具的關鍵詞sudo apt search freetype
sudo apt-get install libfreetype6-dev
sudo pip3 install matplotlib
sudo pip3 install scipy
#文本處理工具
sudo pip3 install gensim
#機器學習
sudo pip3 install scikit-
安裝完成某個輪子之後,應該是這樣的
以此方法安裝,隨著知識領域的擴展和經驗的增加,我們會發現更多更有趣的輪子。
查看已經安裝的輪子
pip3 list11
3.離線安裝(windows/linux)數據分析工具(輪子)
直接在上述網址下載對應的.whl(雖然本網址http://www.lfd.uci.e/~gohlke/pythonlibs/只有win的= =,但是方法適合任何平台,離線包可以去官網下載,如https://pypi.python.org/pypi/scipy/)
pip3 install 下載的本地路徑/numpy-1.11.1+mkl-cp35-cp35m-win_amd64.whl
pip3 install 下載的本地路徑/numpy-1.11.1-cp27-cp27mu-manylinux1_x86_64.whl
4.主要的大數據分析輪子介紹
博主比較懶,已經存在的介紹就不贅述了,直接上送包下載地址,且該地址對包有了大意的介紹。
6. 如何用python代碼判斷一段范圍內股票最高點
Copyright © 1999-2020, CSDN.NET, All Rights Reserved
登錄
python+聚寬 統計A股市場個股在某時間段的最高價、最低價及其時間 原創
2019-10-12 09:20:50
開拖拉機的大寶
碼齡4年
關注
使用工具pycharm + 聚寬數據源,統計A股市場個股在某時間段的最高價、最低價及其時間,並列印excel表格輸出
from jqdatasdk import *
import pandas as pd
import logging
import sys
logger = logging.getLogger("logger")
logger.setLevel(logging.INFO)
# 聚寬數據賬戶名和密碼設置
auth('username','password')
#獲取A股列表,包括代號,名稱,上市退市時間等。
security = get_all_securities(types=[], date=None)
pd2 = get_all_securities(['stock'])
# 獲取股票代號
stocks = list(get_all_securities(['stock']).index)
# 獲取股票名稱
stocknames = pd2['display_name']
start_date = '2015-01-01'
end_date = '2018-12-31'
def get_stocks_high_low(start_date,end_date):
# 新建表,表頭列
# 為:"idx","stockcode","stockname","maxvalue","maxtime","lowvalue","lowtime"
result = pd.DataFrame(columns=["idx", "stockcode", "stockname", "maxvalue", "maxtime", "lowvalue", "lowtime"])
for i in range(0,stocks.__len__()-1):
pd01 = get_price(stocks[i], start_date, end_date, frequency='daily',
fields=None, skip_paused=False,fq='pre', count=None)
result=result.append(pd.DataFrame({'idx':[i],'stockcode':[stocks[i]],'stockname':
[stocknames[i]],'maxvalue':[pd01['high'].max()],'maxtime':
[pd01['high'].idxmax()],'lowvalue': [pd01['low'].min()], 'lowtime':
[pd01['low'].idxmin()]}),ignore_index=True)
result.to_csv("stock_max_min.csv",encoding = 'utf-8', index = True)
logger.warning("執行完畢!