天天看點

用python做股市資料分析一_用python做股票資料分析(興趣篇)

本文我們一起用python來對某隻股票的所有曆史日資料,做一個探索性的分析,看看能不能有一些有趣的發現,希望能激起你對金融資料分析的興趣。主要用到numpy,pandas子產品的一些基本用法。本文的所有資料,包含所有A股的日資料,在文末有下載下傳。

一、熟悉資料集

我們先導入需要的子產品,然後用pandas的read_csv方法載入資料集。

觀察資料集,包含了代碼為000001的股票(平安銀行)從上市至今的共6000多天的交易記錄,包括每個交易日的交易日期,四個價格(最高,最低,開盤,收盤),漲跌(比),以及交易量和交易額。可以說,有了上面這些資料,可以造出任意一個技術分析名額。

畫個收盤價的均線圖試試看:

上文代碼解釋:我們先把“trade_date“這一列調整為時間格式,再把它設定為index。然後用df.rolling().mean()計算移動平均數。最後為了現實清晰,選取6500行以後的三個資料進行可視化顯示。

二、初步探索資料集

1.看一下目前的價格處于曆史中的什麼價位

知道了一隻股票的價格目前相對最高最低價所處的位置,我們就可以據此對它有一個總體的認識。我們還可以把上面的代碼封裝成一個函數,函數的輸入是股票代碼,然後周遊所有的股票,這樣我們就可以挑選出我們需要的股票進行進一步研究。比如你想要超低價股,那麼可以把p小于5%的股票列印出來,如果想要曆史最高價的股票,那就是p=1.

2.選擇合适的移動平均數

有些散戶喜歡利用移動平均線來判斷買入賣出,比如常見的,五日ma5上穿十日均線ma10時買入股票,反之賣出股票。那我們接下來先看看,這樣的政策效果怎麼樣。

上文代碼解釋:我們根據之前的df生成一個新的dataframe:signals。然後把ma5大于ma10的情況篩選出來,生成新的dataframe:upsig。再對所有ma5大于ma10的時候的漲跌絕對值進行一個簡單的相加。可以看出,結果還是比較大的,說明這個政策在這隻股票上其實還是有可行性的。

那麼我們不禁要問,5和10這兩個參數是不是最佳的呢?如果選5和20呢?結果怎麼樣?如果你能想到把上面的代碼封裝成函數,然後用這兩個參數作為輸入,用循環周遊的方法求出一個最大值,那麼也是很可以的了。當然我們還有更加犀利的工具,那就是機器學習!

用上面的代碼,一會兒就造出了接近500個特征,也就是我們機器學習重點的input_data,然後我們可以選取“change”作為我們的結果标簽,需要優化的兩個參數可以作為超參,使用LR,SVM,RF,ANN等模型把它們玩透。怎麼玩?請聽下回分解。

擷取所有A股股票日線資料,關注公_衆_号,回複‘stockdata‘即可。