[Python數據分析]新股破板買入,賺錢幾率如何?


這是本人一直比較好奇的問題,網上沒搜到,最近在看python數據分析,正好自己動手做一下試試。作者對於python是零基礎,需要從頭學起。

在寫本文時,作者也沒有完成這個小分析目標,邊學邊做吧。

================================================================

Python基礎:

中國大學Mooc,南京大學,張莉老師 -《用Python玩轉數據》

了解基本的語法和常用函數就行了,其他的用的時候再搜。

財經數據源:

TuShare - http://tushare.org/index.html

免費,開源Python財經數據接口包。

GitHub: https://github.com/waditu/tushare

基本的資料目前就看了這些,其他的都是網上即時搜的,以前的沒保存,接下來會慢慢加。

================================================================

既然是新股發行后破板的表現,要設一個時間段,否則沒意義,所以先以半年為時間段,統計破板后的數據,時間太久了也沒用,次新股一年為限,但我們可以以一個月為限,本別分析,破板買入,30個交易日內每天的盈利概率。

要做的事情可以分為以下幾步:

1. 獲取近半年來的新股數據

2. 拿到每支股票上市后的數據

3. 篩選出破板后三十天的數據,並匯總

4. 計算整體上每天盈利的概率

-----

第一步:如何獲取近半年的新股數據。

TuShare新股數據接口:

輸入參數:retry_count, pause

返回數據較多,是Pandas DataFrame格式的數據,下面折疊的部分是測試輸出結果,其中很多對於現在要做的沒有用,需要篩選一下。

關心的返回值:code - 股票代碼,name - 股票名稱, issue_date - 上市日期

import tushare as ts
ts.new_stocks()
Last login: Fri Oct 28 23:50:59 on ttys001
localhost:~ shengtianhe$ python
Python 3.5.2 |Anaconda 4.2.0 (x86_64)| (default, Jul  2 2016, 17:52:12) 
[GCC 4.2.1 Compatible Apple LLVM 4.2 (clang-425.0.28)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import tushare as ts
>>> ts.new_stocks()
[Getting data:]########       code  name    ipo_date  issue_date   amount  markets  price     pe  \
0    603319   湘油泵  2016-11-21         NaN   2023.0    723.0  10.46  22.98   
1    603323  吳江銀行  2016-11-16         NaN  11150.0   3345.0   6.83  12.62   
2    601229  上海銀行  2016-11-02         NaN  60045.0  18000.0  17.77   8.26   
3    603977  國泰集團  2016-11-01         NaN   5528.0   2028.0   0.00   0.00   
4    603556  海興電力  2016-10-31         NaN   9334.0   3734.0  23.63  21.32   
5    603060  國檢集團  2016-10-28         NaN   5500.0   2200.0  10.04  22.97   
6    002819  東方中科  2016-10-28         NaN   2834.0   1124.0   4.96  22.95   
7    603203  快克股份  2016-10-27         NaN   2300.0   2070.0  16.50  21.04   
8    300558  貝達葯業  2016-10-27         NaN   4100.0   3690.0  17.57  22.99   
9    300556  絲路視覺  2016-10-26         NaN   2780.0   2502.0   5.54  22.99   
10   002818   富森美  2016-10-25         NaN   4400.0   3960.0  23.49  22.99   
11   601882  海天精工  2016-10-25         NaN   5220.0   4698.0   1.50  22.98   
12   300557  理工光科  2016-10-21         NaN   1400.0   1400.0  13.91  22.99   
13   300560   中富通  2016-10-20         NaN   1753.0   1753.0  10.26  22.99   
14   603716   塞力斯  2016-10-19  2016-10-31   1274.0   1274.0  26.91  22.98   
15   300559  佳發安泰  2016-10-19         NaN   1800.0   1800.0  17.56  22.99   
16   603888   新華網  2016-10-18  2016-10-28   5190.0   4672.0  27.69  22.99   
17   603258  電魂網絡  2016-10-17  2016-10-26   6000.0   5400.0  15.62  18.16   
18   600926  杭州銀行  2016-10-14  2016-10-27  26175.0  23558.0  14.39  10.23   
19   002817  黃山膠囊  2016-10-13  2016-10-25   2167.0   1950.0  13.88  22.98   
20   603667  五洲新春  2016-10-12  2016-10-25   5060.0   4554.0   8.80  22.96   
21   002816   和科達  2016-10-12  2016-10-25   2500.0   2250.0   8.29  22.98   
22   603859  能科股份  2016-10-11  2016-10-21   2839.0   2555.0   7.54  22.97   
23   300552  萬集科技  2016-10-11  2016-10-21   2670.0   2403.0  12.25  20.91   
24   300553  集智股份  2016-10-10  2016-10-21   1200.0   1200.0  14.08  22.99   
25   300550  和仁科技  2016-09-30  2016-10-18   2000.0   2000.0  12.53  22.99   
26   300555  路通視信  2016-09-29  2016-10-18   2000.0   2000.0  15.40  22.99   
27   603160  匯頂科技  2016-09-28  2016-10-17   4500.0   4050.0  19.42  22.99   
28   300551  古鰲科技  2016-09-28  2016-10-18   1836.0   1836.0  12.48  22.88   
29   603816  顧家家居  2016-09-27  2016-10-14   8250.0   7425.0  24.66  22.99   
..      ...   ...         ...         ...      ...      ...    ...    ...   
270  002755  東方新星  2015-05-06  2015-05-15   2534.0   2281.0   7.49  20.49   
271  603718  海利生物  2015-05-06  2015-05-15   7000.0   6300.0   6.81  21.28   
272  603227  雪峰科技  2015-05-06  2015-05-15   8235.0   7412.0   4.98  22.95   
273  300451  創業軟件  2015-05-05  2015-05-14   1700.0   1530.0  14.02  22.98   
274  002756  永興特鋼  2015-05-05  2015-05-15   5000.0   4500.0  21.74  17.97   
275  603355  萊克電氣  2015-05-05  2015-05-13   4100.0   3690.0  19.08  22.99   
276  300460  惠倫晶體  2015-05-05  2015-05-15   4208.0   3787.0   6.43  22.96   
277  300457  贏合科技  2015-05-05  2015-05-14   1950.0   1755.0  12.41  20.34   
278  300452  山河葯輔  2015-05-05  2015-05-15   1160.0   1044.0  14.96  22.99   
279  300414  中光防雷  2015-05-05  2015-05-13   2107.0   1896.0  14.74  13.24   
280  300452  山河葯輔  2015-05-05  2015-05-15   1160.0   1044.0  14.96  22.99   
281  300414  中光防雷  2015-05-05  2015-05-13   2107.0   1896.0  14.74  13.24   
282  300442   普麗盛  2015-04-16  2015-04-24   2500.0   2250.0  19.17  22.55   
283  300434  金石東方  2015-04-16  2015-04-24   1700.0   1530.0  10.57  22.98   
284  300438  鵬輝能源  2015-04-16  2015-04-24   2100.0   1890.0  14.87  22.99   
285  002751  易尚展示  2015-04-16  2015-04-24   1756.0   1580.0  10.48  22.98   
286  300404  博濟醫葯  2015-04-16  2015-04-24   1667.0   1500.0  12.87  22.98   
287  300446  樂凱新材  2015-04-15  2015-04-23   1540.0   1386.0   8.85   7.11   
288  300444  雙傑電氣  2015-04-15  2015-04-23   3449.0   3104.0  12.13  22.89   
289  603021  山東華鵬  2015-04-15  2015-04-23   2640.0   2376.0   8.73  22.97   
290  300441  鮑斯股份  2015-04-15  2015-04-23   2112.0   1901.0   9.81  22.81   
291  603315  福鞍股份  2015-04-15  2015-04-24   2500.0   2250.0  10.77  22.91   
292  600959  江蘇有線  2015-04-15  2015-04-28  59700.0  53730.0   5.47  22.98   
293  300448  浩雲科技  2015-04-15  2015-04-24   2000.0   1800.0  15.79  22.88   
294  300440  運達科技  2015-04-15  2015-04-23   2800.0   2520.0  21.70  22.97   
295  300437   清水源  2015-04-15  2015-04-23   1670.0   1503.0  10.53  19.30   
296  603567   珍寶島  2015-04-14  2015-04-24   6458.0   5812.0  23.60  22.91   
297  603025  大豪科技  2015-04-14  2015-04-22   5100.0   4590.0  11.17  22.98   
298  300436   廣生堂  2015-04-14  2015-04-22   1750.0   1260.0  21.47  18.67   
299  002752   NaN         NaN         NaN      NaN      NaN    NaN    NaN   

     limit    funds  ballot  
0     0.70    2.116    0.00  
1     3.30    7.615    0.00  
2    18.00  106.700    0.00  
3     0.00    3.566    0.00  
4     3.70   22.065    0.00  
5     2.20    5.522    0.00  
6     1.10    1.406    0.00  
7     0.90    3.795    0.03  
8     1.20    7.204    0.04  
9     1.10    1.540    0.03  
10    1.30   10.336    0.04  
11    1.50    4.305    0.05  
12    1.40    1.947    0.01  
13    1.75    1.799    0.02  
14    1.20    3.428    0.02  
15    1.80    3.161    0.02  
16    2.00   14.372    0.04  
17    2.40    9.372    0.05  
18    7.80   37.666    0.13  
19    0.85    3.008    0.02  
20    2.00    4.453    0.04  
21    1.00    2.072    0.03  
22    1.10    2.141    0.03  
23    1.05    3.271    0.03  
24    1.20    1.690    0.01  
25    2.00    2.506    0.02  
26    2.00    3.080    0.02  
27    1.30    8.739    0.05  
28    1.80    2.291    0.02  
29    2.40   20.345    0.06  
..     ...      ...     ...  
270   1.00    1.898    0.32  
271   2.80    4.774    0.31  
272   3.20    3.875    0.30  
273   0.65    2.384    0.20  
274   2.00   10.872    0.48  
275   1.20    7.823    0.40  
276   1.55    2.706    0.34  
277   0.75    2.421    0.33  
278   0.45    1.736    0.30  
279   0.80    3.106    0.30  
280   0.45    1.736    0.30  
281   0.80    3.106    0.30  
282   1.00    4.212    0.62  
283   0.65    1.475    0.44  
284   0.80    2.782    0.45  
285   0.65    1.550    0.34  
286   0.65    1.884    0.30  
287   0.60    1.115    0.46  
288   1.30    3.698    0.77  
289   1.00    1.934    0.47  
290   0.80    1.732    0.68  
291   1.00    2.399    0.47  
292  17.70   31.220    1.24  
293   0.80    2.841    0.46  
294   1.10    5.578    0.61  
295   0.60    1.523    0.50  
296   1.80   14.275    0.83  
297   1.50    5.183    0.62  
298   0.70    2.588    0.30  
299    NaN      NaN     NaN  

[300 rows x 11 columns]
View Code

篩選規則:

issue_date 在半年之內。

Pandas API:

http://pandas.pydata.org/pandas-docs/stable/api.html

其中pandas.DataFrame.Sort可以帶參數過濾DataFrame:

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.sort.html

但覺得這樣還得進一步過濾,搜了一下,發現可以直接操作。

import tushare as ts
df=ts.new_stocks()
df=df[df['issue_date']>'2016-06-01']

這樣我們就直接取到了所有六月一日后上市的新股數據:

>>> import tushare as ts
>>> df=ts.new_stocks()
[Getting data:]########>>> df=df[df['issue_date']>'2016-06-01']
>>> df
       code  name    ipo_date  issue_date    amount   markets  price     pe  \
14   603716   塞力斯  2016-10-19  2016-10-31    1274.0    1274.0  26.91  22.98   
16   603888   新華網  2016-10-18  2016-10-28    5190.0    4672.0  27.69  22.99   
17   603258  電魂網絡  2016-10-17  2016-10-26    6000.0    5400.0  15.62  18.16   
18   600926  杭州銀行  2016-10-14  2016-10-27   26175.0   23558.0  14.39  10.23   
19   002817  黃山膠囊  2016-10-13  2016-10-25    2167.0    1950.0  13.88  22.98   
20   603667  五洲新春  2016-10-12  2016-10-25    5060.0    4554.0   8.80  22.96   
21   002816   和科達  2016-10-12  2016-10-25    2500.0    2250.0   8.29  22.98   
22   603859  能科股份  2016-10-11  2016-10-21    2839.0    2555.0   7.54  22.97   
23   300552  萬集科技  2016-10-11  2016-10-21    2670.0    2403.0  12.25  20.91   
24   300553  集智股份  2016-10-10  2016-10-21    1200.0    1200.0  14.08  22.99   
25   300550  和仁科技  2016-09-30  2016-10-18    2000.0    2000.0  12.53  22.99   
26   300555  路通視信  2016-09-29  2016-10-18    2000.0    2000.0  15.40  22.99   
27   603160  匯頂科技  2016-09-28  2016-10-17    4500.0    4050.0  19.42  22.99   
28   300551  古鰲科技  2016-09-28  2016-10-18    1836.0    1836.0  12.48  22.88   
29   603816  顧家家居  2016-09-27  2016-10-14    8250.0    7425.0  24.66  22.99   
30   300548  博創科技  2016-09-26  2016-10-12    2067.0    1860.0  11.75  22.97   
31   603313  恆康家居  2016-09-26  2016-10-13    6000.0    5400.0  15.41  22.66   
32   002813  路暢科技  2016-09-23  2016-10-12    3000.0    2700.0   6.89  22.97   
33   603777   來伊份  2016-09-23  2016-10-12    6000.0    5400.0  11.67  22.98   
34   603421  鼎信通訊  2016-09-22  2016-10-11    4340.0    3906.0  14.02  22.99   
35   002815  崇達技術  2016-09-22  2016-10-12    5000.0    4500.0  16.31  22.98   
36   603887  城地股份  2016-09-21  2016-10-10    2460.0    2214.0  12.13  22.97   
37   300547  川環科技  2016-09-21  2016-09-30    1495.0    1495.0  22.07  22.99   
38   300549  優德精密  2016-09-20  2016-09-30    1667.0    1667.0  15.03  22.99   
39   601128  常熟銀行  2016-09-20  2016-09-30   22227.0   20005.0   4.28   9.89   
40   300546  雄帝科技  2016-09-19  2016-09-28    1334.0    1334.0  20.43  22.99   
41   603738  泰晶科技  2016-09-14  2016-09-28    1668.0    1668.0  16.14  22.99   
42   300545  聯得裝備  2016-09-14  2016-09-28    1783.0    1783.0  13.50  22.98   
43   600908  無錫銀行  2016-09-08  2016-09-23   18481.0   16633.0   4.47   9.91   
44   300536  農尚環境  2016-09-06  2016-09-20    2328.0    2095.0   9.06  18.12   
..      ...   ...         ...         ...       ...       ...    ...    ...   
85   300529  健帆生物  2016-07-22  2016-08-02    4200.0    3780.0  10.80  22.98   
86   300526  中潛股份  2016-07-21  2016-08-02    2125.0    1913.0  10.50  22.99   
87   600919  江蘇銀行  2016-07-20  2016-08-02  115445.0  103900.0   6.27   7.64   
88   603663  三祥新材  2016-07-19  2016-08-01    3355.0    3020.0   5.28  22.98   
89   603322  超訊通信  2016-07-18  2016-07-28    2000.0    2000.0  11.99  22.98   
90   300525  博思軟件  2016-07-15  2016-07-26    1710.0    1710.0  11.68  22.99   
91   002806  華鋒股份  2016-07-14  2016-07-26    2000.0    2000.0   6.20  22.96   
92   300523  辰安科技  2016-07-13  2016-07-26    2000.0    2000.0  21.92  22.99   
93   300517  海波重科  2016-07-07  2016-07-19    2560.0    2304.0  10.04  22.97   
94   002803  吉宏股份  2016-06-30  2016-07-12    2900.0    2610.0   6.37  22.84   
95   603069  海汽集團  2016-06-29  2016-07-12    7900.0    7110.0   3.82  18.20   
96   300520  科大國創  2016-06-28  2016-07-08    2300.0    2070.0  10.05  22.84   
97   002805  豐元股份  2016-06-27  2016-07-07    2423.0    2181.0   5.80  22.97   
98   300521   愛司凱  2016-06-24  2016-07-05    2000.0    2000.0  11.26  22.98   
99   300522  世名科技  2016-06-23  2016-07-05    1667.0    1667.0  18.55  22.98   
100  601966  玲瓏輪胎  2016-06-22  2016-07-06   20000.0   18000.0  12.98  22.97   
101  603016   新宏泰  2016-06-21  2016-07-01    3705.0    3335.0   8.49  19.30   
102  002802  洪匯新材  2016-06-20  2016-06-29    2700.0    2430.0   9.52  22.98   
103  603958  哈森股份  2016-06-17  2016-06-29    5436.0    4892.0   9.15  22.98   
104  603909  合誠股份  2016-06-16  2016-06-28    2500.0    2250.0  10.55  21.00   
105  300518   盛訊達  2016-06-15  2016-06-24    2334.0    2101.0  22.22  22.68   
106  002801  微光股份  2016-06-13  2016-06-22    1472.0    1472.0  19.51  15.24   
107  300519  新光葯業  2016-06-08  2016-06-24    2000.0    2000.0  12.20   8.26   
108  601127  小康股份  2016-05-31  2016-06-15   14250.0   12825.0   5.81  18.19   
109  300515  三德科技  2016-05-30  2016-06-08    2500.0    2250.0   8.57  22.98   
110  002799  環球印務  2016-05-27  2016-06-08    2500.0    2250.0   7.98  22.99   
111  603131  上海滬工  2016-05-26  2016-06-07    2500.0    2250.0  10.09  22.98   
112  601611  中國核建  2016-05-25  2016-06-06   52500.0   47250.0   3.47  15.60   
113  300516   久之洋  2016-05-24  2016-06-02    3000.0    2700.0  22.50  22.98   
114  603737   三棵樹  2016-05-23  2016-06-03    2500.0    2250.0  15.94  18.09   

     limit   funds  ballot  
14    1.20   3.428    0.02  
16    2.00  14.372    0.04  
17    2.40   9.372    0.05  
18    7.80  37.666    0.13  
19    0.85   3.008    0.02  
20    2.00   4.453    0.04  
21    1.00   2.072    0.03  
22    1.10   2.141    0.03  
23    1.05   3.271    0.03  
24    1.20   1.690    0.01  
25    2.00   2.506    0.02  
26    2.00   3.080    0.02  
27    1.30   8.739    0.05  
28    1.80   2.291    0.02  
29    2.40  20.345    0.06  
30    0.80   2.429    0.03  
31    2.40   9.246    0.05  
32    1.20   2.067    0.03  
33    2.40   7.002    0.05  
34    1.30   6.085    0.05  
35    1.50   8.155    0.04  
36    0.90   3.647    0.03  
37    1.45   3.299    0.02  
38    1.65   2.506    0.02  
39    6.60   9.513    0.12  
40    1.30   2.725    0.01  
41    1.60   2.692    0.02  
42    1.75   2.407    0.02  
43    5.50   8.261    0.10  
44    0.90   2.110    0.03  
..     ...     ...     ...  
85    1.20   4.536    0.05  
86    0.70   2.231    0.04  
87   34.60  72.384    0.47  
88    1.30   1.771    0.04  
89    2.00   2.398    0.02  
90    1.70   1.997    0.02  
91    2.00   1.240    0.02  
92    2.00   4.384    0.02  
93    1.00   2.570    0.04  
94    1.15   3.004    0.03  
95    2.30   3.018    0.08  
96    0.90   2.312    0.04  
97    0.95   1.405    0.03  
98    2.00   2.252    0.02  
99    1.65   3.092    0.02  
100   6.00  25.960    0.14  
101   1.40   3.148    0.05  
102   1.05   2.570    0.03  
103   2.10   4.974    0.06  
104   1.00   2.638    0.04  
105   0.90   5.188    0.04  
106   1.45   2.872    0.02  
107   2.00   2.440    0.02  
108   4.20   8.550    0.11  
109   1.00   2.143    0.04  
110   1.00   1.995    0.03  
111   1.00   2.522    0.04  
112  15.70  20.212    0.28  
113   1.20   6.750    0.04  
114   1.00   3.987    0.04  

[100 rows x 11 columns]
View Code

但我們只需要code, name 和 issue_date的信息,所以再加一行:

import tushare as ts
df=ts.new_stocks()
df=df[df['issue_date']>'2016-06-01']
df=df[['code','name','issue_date']]

這是運行結果:

>>> df=df[['code','name','issue_date']]
>>> df
       code  name  issue_date
14   603716   塞力斯  2016-10-31
16   603888   新華網  2016-10-28
17   603258  電魂網絡  2016-10-26
18   600926  杭州銀行  2016-10-27
19   002817  黃山膠囊  2016-10-25
20   603667  五洲新春  2016-10-25
21   002816   和科達  2016-10-25
22   603859  能科股份  2016-10-21
23   300552  萬集科技  2016-10-21
24   300553  集智股份  2016-10-21
25   300550  和仁科技  2016-10-18
26   300555  路通視信  2016-10-18
27   603160  匯頂科技  2016-10-17
28   300551  古鰲科技  2016-10-18
29   603816  顧家家居  2016-10-14
30   300548  博創科技  2016-10-12
31   603313  恆康家居  2016-10-13
32   002813  路暢科技  2016-10-12
33   603777   來伊份  2016-10-12
34   603421  鼎信通訊  2016-10-11
35   002815  崇達技術  2016-10-12
36   603887  城地股份  2016-10-10
37   300547  川環科技  2016-09-30
38   300549  優德精密  2016-09-30
39   601128  常熟銀行  2016-09-30
40   300546  雄帝科技  2016-09-28
41   603738  泰晶科技  2016-09-28
42   300545  聯得裝備  2016-09-28
43   600908  無錫銀行  2016-09-23
44   300536  農尚環境  2016-09-20
..      ...   ...         ...
85   300529  健帆生物  2016-08-02
86   300526  中潛股份  2016-08-02
87   600919  江蘇銀行  2016-08-02
88   603663  三祥新材  2016-08-01
89   603322  超訊通信  2016-07-28
90   300525  博思軟件  2016-07-26
91   002806  華鋒股份  2016-07-26
92   300523  辰安科技  2016-07-26
93   300517  海波重科  2016-07-19
94   002803  吉宏股份  2016-07-12
95   603069  海汽集團  2016-07-12
96   300520  科大國創  2016-07-08
97   002805  豐元股份  2016-07-07
98   300521   愛司凱  2016-07-05
99   300522  世名科技  2016-07-05
100  601966  玲瓏輪胎  2016-07-06
101  603016   新宏泰  2016-07-01
102  002802  洪匯新材  2016-06-29
103  603958  哈森股份  2016-06-29
104  603909  合誠股份  2016-06-28
105  300518   盛訊達  2016-06-24
106  002801  微光股份  2016-06-22
107  300519  新光葯業  2016-06-24
108  601127  小康股份  2016-06-15
109  300515  三德科技  2016-06-08
110  002799  環球印務  2016-06-08
111  603131  上海滬工  2016-06-07
112  601611  中國核建  2016-06-06
113  300516   久之洋  2016-06-02
114  603737   三棵樹  2016-06-03

[100 rows x 3 columns]
View Code

現在我們已經取到過去半年上市的新股的數據,包括股票代碼,名稱和上市日期。

-----

第二步:如何拿到每支股票上市后的數據

TuShare歷史交易數據接口:

輸入參數:code, start, end, ktype(數據類型,默認是日K線), retry_count, pause

返回數據較多,同樣也是Pandas DataFrame格式的數據,下面折疊的部分是測試輸出結果,其中很多對於現在要做的沒有用,需要篩選一下。

關心的返回值:date - 日期,open - 開盤價, close - 收盤價, p_change - 漲跌幅

我們以六月三日上市的新股三棵樹(603737)為例:

import tushare as ts
df=ts.get_hist_data('603737')

測試運行如下:

>>> df=ts.get_hist_data('603737')
>>> df
              open    high   close     low     volume  price_change  p_change  \
date                                                                            
2016-10-28   82.50   82.70   81.53   81.10    8990.79         -0.57     -0.69   
2016-10-27   82.30   82.35   82.19   81.34    6959.08          0.24      0.29   
2016-10-26   82.04   84.18   81.99   81.51   11004.83         -0.11     -0.13   
2016-10-25   82.68   83.32   82.09   82.03   14014.53         -0.89     -1.07   
2016-10-24   78.98   83.79   83.00   78.31   26251.55          3.93      4.97   
2016-10-21   79.19   79.34   79.08   77.32   12459.65         -0.17     -0.21   
2016-10-20   78.50   79.50   79.25   78.05   10224.54          0.75      0.95   
2016-10-19   80.60   80.60   78.49   78.44   17851.50         -1.27     -1.59   
2016-10-18   77.72   79.80   79.77   77.72   12765.18          1.76      2.26   
2016-10-17   78.60   79.70   78.01   77.80   15855.89         -1.07     -1.35   
2016-10-14   79.42   80.10   79.00   78.21   11452.91         -0.14     -0.18   
2016-10-13   78.85   79.88   79.15   78.20   11277.68          0.18      0.23   
2016-10-12   77.17   79.47   78.95   76.60   18557.77          0.90      1.15   
2016-10-11   77.95   79.30   78.07   76.63   21518.05          0.05      0.06   
2016-10-10   72.93   79.95   78.03   72.93   25128.50          5.11      7.01   
2016-09-30   73.08   73.29   72.90   71.90    7940.73         -0.15     -0.20   
2016-09-29   73.18   74.16   73.46   73.08    9711.11          0.05      0.07   
2016-09-28   73.25   74.10   73.37   72.30    8694.66          0.10      0.14   
2016-09-27   72.02   73.31   73.30   71.88   10588.05          0.78      1.08   
2016-09-26   76.24   76.24   72.51   72.30   18983.21         -3.77     -4.94   
2016-09-23   78.18   78.18   76.31   76.12   13200.18         -1.59     -2.04   
2016-09-22   79.10   79.80   77.90   77.61   15900.57         -0.78     -0.99   
2016-09-21   79.10   79.80   78.67   77.80   13804.02         -0.96     -1.21   
2016-09-20   81.60   81.60   79.64   78.80   15751.28         -1.07     -1.33   
2016-09-19   80.56   81.39   80.71   80.48    8901.68          0.12      0.15   
2016-09-14   81.80   82.80   80.57   80.28   23667.66         -3.47     -4.13   
2016-09-13   86.20   88.16   83.99   83.62   38293.43         -2.19     -2.54   
2016-09-12   82.50   86.22   86.19   81.30   30861.92          1.55      1.83   
2016-09-09   83.78   85.96   84.66   83.55   23143.33          0.95      1.14   
2016-09-08   82.50   83.87   83.71   82.50   13567.35          0.90      1.09   
...            ...     ...     ...     ...        ...           ...       ...   
2016-07-18  100.00  100.98   97.17   96.66   25811.42         -3.71     -3.68   
2016-07-15  100.50  103.20  100.90   99.01   35970.92          1.18      1.18   
2016-07-14   98.00  100.84   99.73   97.50   29597.28          0.87      0.88   
2016-07-13   99.00  101.66   98.87   96.50   38939.97         -1.65     -1.64   
2016-07-12   96.96  101.58  100.51   92.06   54520.75          1.13      1.14   
2016-07-11  110.00  110.80   99.38   99.38   63645.73        -11.04    -10.00   
2016-07-08  111.51  113.40  110.47  110.00   42732.83         -3.25     -2.86   
2016-07-07  111.12  118.50  113.71  111.02   64406.13          0.96      0.85   
2016-07-06  114.00  115.60  112.75  110.00   57436.00         -2.93     -2.53   
2016-07-05  110.11  117.99  115.63  109.10   96591.87          5.25      4.76   
2016-07-04  111.89  112.00  110.46  108.33   56773.07         -1.35     -1.21   
2016-07-01  111.00  116.00  111.82  108.50   87725.18         -4.26     -3.67   
2016-06-30  111.00  116.08  116.08  106.00  179909.75         10.55     10.00   
2016-06-29  105.53  105.53  105.53  105.53    1748.55          9.59     10.00   
2016-06-28   95.94   95.94   95.94   95.94    2631.18          8.72     10.00   
2016-06-27   87.22   87.22   87.22   87.22   10737.11          7.93     10.00   
2016-06-24   79.29   79.29   79.29   79.29    2013.69          7.21     10.00   
2016-06-23   72.08   72.08   72.08   72.08    2413.01          6.55      9.99   
2016-06-22   65.53   65.53   65.53   65.53    1152.33          5.96     10.01   
2016-06-21   59.57   59.57   59.57   59.57     998.79          5.42     10.01   
2016-06-20   54.15   54.15   54.15   54.15    1332.01          4.92      9.99   
2016-06-17   49.23   49.23   49.23   49.23    1086.13          4.48     10.01   
2016-06-16   44.75   44.75   44.75   44.75     257.15          4.07     10.01   
2016-06-15   40.68   40.68   40.68   40.68     286.50          3.70     10.01   
2016-06-14   36.98   36.98   36.98   36.98     627.34          3.36      9.99   
2016-06-13   33.62   33.62   33.62   33.62     346.27          3.06     10.01   
2016-06-08   30.56   30.56   30.56   30.56     158.75          2.78     10.01   
2016-06-07   27.78   27.78   27.78   27.78      35.00          2.53     10.02   
2016-06-06   25.25   25.25   25.25   25.25      22.00          2.30     10.02   
2016-06-03   22.95   22.95   22.95   22.95     155.00          7.01     43.98   

                ma5     ma10    ma20     v_ma5    v_ma10    v_ma20  turnover  
date                                                                          
2016-10-28   82.160   80.540  78.207  13444.16  13637.75  14011.51      3.60  
2016-10-27   81.670   80.287  77.946  14137.93  13883.97  14221.98      2.78  
2016-10-26   81.082   79.983  77.732  14791.02  14315.83  14669.05      4.40  
2016-10-25   80.382   79.679  77.566  16160.35  15071.12  14809.01      5.61  
2016-10-24   79.918   79.277  77.443  15910.48  15821.47  14895.85     10.50  
2016-10-21   78.920   78.780  77.329  13831.35  15709.17  14028.36      4.98  
2016-10-20   78.904   78.162  77.403  13630.00  15257.28  14588.76      4.09  
2016-10-19   78.884   77.583  77.640  13840.63  15205.93  15992.20      7.14  
2016-10-18   78.976   77.071  78.025  13981.89  14290.25  16642.72      5.11  
2016-10-17   78.636   76.424  78.270  15732.46  14072.54  17161.63      6.34  
2016-10-14   78.640   75.874  78.555  17586.98  14385.27  17047.20      4.58  
2016-10-13   77.420   75.605  78.744  16884.55  14559.99  16960.55      4.51  
2016-10-12   76.282   75.480  78.975  16571.23  15022.28  17103.11      7.42  
2016-10-11   75.166   75.452  79.172  14598.61  14546.91  16525.29      8.61  
2016-10-10   74.212   75.609  79.420  12412.61  13970.23  15914.86     10.05  
2016-09-30   73.108   75.877  79.673  11183.55  12347.55  15266.72      3.18  
2016-09-29   73.790   76.644  80.274  12235.44  13920.24  15776.66      3.88  
2016-09-28   74.678   77.697  80.795  13473.33  16778.47  15717.01      3.48  
2016-09-27   75.738   78.979  81.333  14495.21  18995.20  15837.12      4.24  
2016-09-26   77.006   80.115  81.848  15527.85  20250.73  16159.17      7.59  
2016-09-23   78.646   81.235  82.447  13511.55  19709.14  16344.07      5.28  
2016-09-22   79.498   81.883  82.944  15605.04  19361.10  16273.08      6.36  
2016-09-21   80.716   82.470  83.386  20083.61  19183.94  16362.07      5.52  
2016-09-20   82.220   82.891  83.768  23495.19  18503.67  17271.29      6.30  
2016-09-19   83.224   83.231  84.417  24973.60  17859.48  17452.37      3.56  
2016-09-14   83.824   83.469  85.042  25906.74  18185.89  18336.10      9.47  
2016-09-13   84.268   83.905  85.753  23117.16  17633.07  18567.30     15.32  
2016-09-12   84.224   83.894  86.355  18284.26  14655.54  18866.01     12.34  
2016-09-09   83.562   83.686  86.659  13512.14  12679.05  19115.24      9.26  
2016-09-08   83.238   83.580  86.929  10745.36  12067.61  19107.11      5.43  
...             ...      ...     ...       ...       ...       ...       ...  
2016-07-18   99.436  104.912  97.632  36968.07  50965.29  42787.78     10.32  
2016-07-15   99.878  106.241  95.481  44534.93  54061.45  41563.81     14.39  
2016-07-14  101.792  107.333  92.898  45887.31  59236.88  39819.57     11.84  
2016-07-13  104.588  108.968  90.149  52849.08  74268.13  38352.56     15.58  
2016-07-12  107.364  109.634  87.239  56548.29  70548.99  36419.89     21.81  
2016-07-11  110.388  109.177  84.063  64962.51  65360.03  33725.22     25.46  
2016-07-08  112.604  107.961  80.774  63587.98  60069.17  30560.24     17.09  
2016-07-07  112.874  104.843  76.779  72586.45  55997.25  28431.54     25.76  
2016-07-06  113.348  100.680  72.483  95687.17  49797.94  25212.98     22.97  
2016-07-05  111.904   95.958  68.108  84549.68  44169.57  22342.28     38.64  
2016-07-04  107.966   90.352  63.474  65757.55  34610.27  17520.44     22.71  
2016-07-01  103.318   84.721  61.001  56550.35  29066.16  15454.51     35.09  
2016-06-30   96.812   78.462  58.177  39408.06  20402.25  11439.48     71.96  
2016-06-29   88.012   71.329  54.771   3908.71   2437.00   1529.46      0.70  
2016-06-28   80.012   64.844  51.599   3789.46   2290.79   1515.77      1.05  
2016-06-27   72.738   58.948  48.643   3462.99   2090.41   1441.41      4.29  
2016-06-24   66.124   53.588  45.887   1581.97   1051.32    777.43      0.81  
2016-06-23   60.112   48.715  43.318   1396.45    865.83    682.33      0.97  
2016-06-22   54.646   44.285  40.921    965.28    628.03    538.11      0.46  
2016-06-21   49.676   40.257  38.684    792.12    514.99    482.27      0.40  
2016-06-20   45.158   36.595  36.595    717.83    430.62    430.62      0.53  
2016-06-17   41.052   34.644  34.644    520.68    330.46    330.46      0.43  
2016-06-16   37.318   32.821  32.821    335.20    236.00    236.00      0.10  
2016-06-15   33.924   31.117  31.117    290.77    232.98    232.98      0.11  
2016-06-14   30.838   29.523  29.523    237.87    224.06    224.06      0.25  
2016-06-13   28.032   28.032  28.032    143.40    143.40    143.40      0.14  
2016-06-08   26.635   26.635  26.635     92.69     92.69     92.69      0.06  
2016-06-07   25.327   25.327  25.327     70.67     70.67     70.67      0.01  
2016-06-06   24.100   24.100  24.100     88.50     88.50     88.50      0.01  
2016-06-03   22.950   22.950  22.950    155.00    155.00    155.00      0.06  

[97 rows x 14 columns]
View Code

同樣,按照第一步的思路對數據稍加處理:

df=df[['date','open','close','p_change']]

此時卻出了問題,報錯如下:

>>> df=df[['date','open','close','p_change']]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/shengtianhe/anaconda/lib/python3.5/site-packages/pandas/core/frame.py", line 1991, in __getitem__
    return self._getitem_array(key)
  File "/Users/shengtianhe/anaconda/lib/python3.5/site-packages/pandas/core/frame.py", line 2035, in _getitem_array
    indexer = self.ix._convert_to_indexer(key, axis=1)
  File "/Users/shengtianhe/anaconda/lib/python3.5/site-packages/pandas/core/indexing.py", line 1214, in _convert_to_indexer
    raise KeyError('%s not in index' % objarr[mask])
KeyError: "['date'] not in index"

檢查打出來的數據名稱沒問題,就考慮,第一列會不會是其他的東西,搜到幾個有用的命令:

from pandas import DataFrame #從pandas庫中引用DataFrame

df_obj = DataFrame() #創建DataFrame對象
df_obj.dtypes #查看各行的數據格式
df_obj.head() #查看前幾行的數據,默認前5行
df_obj.tail() #查看后幾行的數據,默認后5行
df_obj.index #查看索引
df_obj.columns #查看列名
df_obj.values #查看數據值
df_obj.describe #描述性統計
df_obj.T #轉置
df_obj.sort(columns = ‘’)#按列名進行排序
df_obj.sort_index(by=[‘’,’’])#多列排序,使用時報該函數已過時,請用sort_values
df_obj.sort_values(by=['',''])同上

運行index和columns,果然date是index:

>>> df.columns
Index(['open', 'high', 'close', 'low', 'volume', 'price_change', 'p_change',
       'ma5', 'ma10', 'ma20', 'v_ma5', 'v_ma10', 'v_ma20', 'turnover'],
      dtype='object')
>>> df.index
Index(['2016-10-28', '2016-10-27', '2016-10-26', '2016-10-25', '2016-10-24',
       '2016-10-21', '2016-10-20', '2016-10-19', '2016-10-18', '2016-10-17',
       '2016-10-14', '2016-10-13', '2016-10-12', '2016-10-11', '2016-10-10',
       '2016-09-30', '2016-09-29', '2016-09-28', '2016-09-27', '2016-09-26',
       '2016-09-23', '2016-09-22', '2016-09-21', '2016-09-20', '2016-09-19',
       '2016-09-14', '2016-09-13', '2016-09-12', '2016-09-09', '2016-09-08',
       '2016-09-07', '2016-09-06', '2016-09-05', '2016-09-02', '2016-09-01',
       '2016-08-31', '2016-08-30', '2016-08-29', '2016-08-26', '2016-08-25',
       '2016-08-24', '2016-08-23', '2016-08-22', '2016-08-19', '2016-08-18',
       '2016-08-17', '2016-08-16', '2016-08-15', '2016-08-12', '2016-08-11',
       '2016-08-10', '2016-08-09', '2016-08-08', '2016-08-05', '2016-08-04',
       '2016-08-03', '2016-08-02', '2016-08-01', '2016-07-29', '2016-07-28',
       '2016-07-27', '2016-07-26', '2016-07-25', '2016-07-22', '2016-07-21',
       '2016-07-20', '2016-07-19', '2016-07-18', '2016-07-15', '2016-07-14',
       '2016-07-13', '2016-07-12', '2016-07-11', '2016-07-08', '2016-07-07',
       '2016-07-06', '2016-07-05', '2016-07-04', '2016-07-01', '2016-06-30',
       '2016-06-29', '2016-06-28', '2016-06-27', '2016-06-24', '2016-06-23',
       '2016-06-22', '2016-06-21', '2016-06-20', '2016-06-17', '2016-06-16',
       '2016-06-15', '2016-06-14', '2016-06-13', '2016-06-08', '2016-06-07',
       '2016-06-06', '2016-06-03'],
      dtype='object', name='date')
View Code

所以選取列的語句應該是:

df=df[['open','close','p_change']]

結果如下:

>>> df=df[['open','close','p_change']]
>>> df
              open   close  p_change
date                                
2016-10-28   82.50   81.53     -0.69
2016-10-27   82.30   82.19      0.29
2016-10-26   82.04   81.99     -0.13
2016-10-25   82.68   82.09     -1.07
2016-10-24   78.98   83.00      4.97
2016-10-21   79.19   79.08     -0.21
2016-10-20   78.50   79.25      0.95
2016-10-19   80.60   78.49     -1.59
2016-10-18   77.72   79.77      2.26
2016-10-17   78.60   78.01     -1.35
2016-10-14   79.42   79.00     -0.18
2016-10-13   78.85   79.15      0.23
2016-10-12   77.17   78.95      1.15
2016-10-11   77.95   78.07      0.06
2016-10-10   72.93   78.03      7.01
2016-09-30   73.08   72.90     -0.20
2016-09-29   73.18   73.46      0.07
2016-09-28   73.25   73.37      0.14
2016-09-27   72.02   73.30      1.08
2016-09-26   76.24   72.51     -4.94
2016-09-23   78.18   76.31     -2.04
2016-09-22   79.10   77.90     -0.99
2016-09-21   79.10   78.67     -1.21
2016-09-20   81.60   79.64     -1.33
2016-09-19   80.56   80.71      0.15
2016-09-14   81.80   80.57     -4.13
2016-09-13   86.20   83.99     -2.54
2016-09-12   82.50   86.19      1.83
2016-09-09   83.78   84.66      1.14
2016-09-08   82.50   83.71      1.09
...            ...     ...       ...
2016-07-18  100.00   97.17     -3.68
2016-07-15  100.50  100.90      1.18
2016-07-14   98.00   99.73      0.88
2016-07-13   99.00   98.87     -1.64
2016-07-12   96.96  100.51      1.14
2016-07-11  110.00   99.38    -10.00
2016-07-08  111.51  110.47     -2.86
2016-07-07  111.12  113.71      0.85
2016-07-06  114.00  112.75     -2.53
2016-07-05  110.11  115.63      4.76
2016-07-04  111.89  110.46     -1.21
2016-07-01  111.00  111.82     -3.67
2016-06-30  111.00  116.08     10.00
2016-06-29  105.53  105.53     10.00
2016-06-28   95.94   95.94     10.00
2016-06-27   87.22   87.22     10.00
2016-06-24   79.29   79.29     10.00
2016-06-23   72.08   72.08      9.99
2016-06-22   65.53   65.53     10.01
2016-06-21   59.57   59.57     10.01
2016-06-20   54.15   54.15      9.99
2016-06-17   49.23   49.23     10.01
2016-06-16   44.75   44.75     10.01
2016-06-15   40.68   40.68     10.01
2016-06-14   36.98   36.98      9.99
2016-06-13   33.62   33.62     10.01
2016-06-08   30.56   30.56     10.01
2016-06-07   27.78   27.78     10.02
2016-06-06   25.25   25.25     10.02
2016-06-03   22.95   22.95     43.98

[97 rows x 3 columns]
View Code

現在我們已經取得了過去半年新上市的股票和他們上市后的數據。

-----

第三步:如何篩選出破板后三十天的數據,並匯總

……此處省略長達二十分鍾的思考與百度……想到這樣一個辦法取得第一次破板的日期:

import tushare as ts 
df=ts.get_hist_data('603737')
df=df[['open','close','p_change']]
start_date=df[df['p_change']<9.8].tail(1).index[0]

釋一下:df是一個DataFrame, 可以提取某一列中值小於9.8的所有行,提取結果仍然是DataFrame,DF有個方法叫tail()取最后幾條數據,我們已經知道日期是index,所以取日期用index[0],由於本人python沒基礎…取日期的方法是試出來的……

接下來,用這個日期去過濾,我們只關心破板后的數據:

df=df[df.index>=start_date]

這里[]中的還是我試出來的……覺得應該這么寫……

>>> import tushare as ts 
>>> df=ts.get_hist_data('603737')
>>> 
>>> df=df[['open','close','p_change']]
>>> start_date=df[df['p_change']<9.8].tail(1).index[0]
>>> df=df[df.index>start_date]
>>> df
              open   close  p_change
date                                
2016-10-28   82.50   81.53     -0.69
2016-10-27   82.30   82.19      0.29
2016-10-26   82.04   81.99     -0.13
2016-10-25   82.68   82.09     -1.07
2016-10-24   78.98   83.00      4.97
2016-10-21   79.19   79.08     -0.21
2016-10-20   78.50   79.25      0.95
2016-10-19   80.60   78.49     -1.59
2016-10-18   77.72   79.77      2.26
2016-10-17   78.60   78.01     -1.35
2016-10-14   79.42   79.00     -0.18
2016-10-13   78.85   79.15      0.23
2016-10-12   77.17   78.95      1.15
2016-10-11   77.95   78.07      0.06
2016-10-10   72.93   78.03      7.01
2016-09-30   73.08   72.90     -0.20
2016-09-29   73.18   73.46      0.07
2016-09-28   73.25   73.37      0.14
2016-09-27   72.02   73.30      1.08
2016-09-26   76.24   72.51     -4.94
2016-09-23   78.18   76.31     -2.04
2016-09-22   79.10   77.90     -0.99
2016-09-21   79.10   78.67     -1.21
2016-09-20   81.60   79.64     -1.33
2016-09-19   80.56   80.71      0.15
2016-09-14   81.80   80.57     -4.13
2016-09-13   86.20   83.99     -2.54
2016-09-12   82.50   86.19      1.83
2016-09-09   83.78   84.66      1.14
2016-09-08   82.50   83.71      1.09
...            ...     ...       ...
2016-08-12   88.29   90.08      0.11
2016-08-11   89.00   90.16     -0.50
2016-08-10   87.18   90.58      3.70
2016-08-09   86.61   87.34      1.17
2016-08-08   85.00   86.35      1.41
2016-08-05   87.52   85.12     -3.47
2016-08-04   88.01   88.20     -0.68
2016-08-03   85.67   88.78      2.98
2016-08-02   84.93   86.21      1.51
2016-08-01   87.35   84.93     -4.30
2016-07-29   85.75   88.77      3.75
2016-07-28   86.10   85.53     -0.48
2016-07-27   91.50   85.95     -6.56
2016-07-26   87.90   91.97      4.54
2016-07-25   88.33   87.90     -0.66
2016-07-22   92.59   88.45     -4.69
2016-07-21   94.69   92.81     -1.91
2016-07-20   94.98   94.60      0.06
2016-07-19   97.00   94.56     -2.71
2016-07-18  100.00   97.17     -3.68
2016-07-15  100.50  100.90      1.18
2016-07-14   98.00   99.73      0.88
2016-07-13   99.00   98.87     -1.64
2016-07-12   96.96  100.51      1.14
2016-07-11  110.00   99.38    -10.00
2016-07-08  111.51  110.47     -2.86
2016-07-07  111.12  113.71      0.85
2016-07-06  114.00  112.75     -2.53
2016-07-05  110.11  115.63      4.76
2016-07-04  111.89  110.46     -1.21

[78 rows x 3 columns]
View Code

接下來,假設破板買入后最長持股10天,這樣我們只取妹紙股票之后10天的數據,這樣數據比較整齊,也便於后續處理。如果數據不滿10天,則跳過。

df=df.tail(11)['close']
>>> import tushare as ts 
>>> df=ts.get_hist_data('603737')
>>> 
>>> df=df[['open','close','p_change']]
>>> start_date=df[df['p_change']<9.8].tail(1).index[0]
>>> df=df[df.index>=start_date]
>>> df=df.tail(11)['close']
>>> df
date
2016-07-15    100.90
2016-07-14     99.73
2016-07-13     98.87
2016-07-12    100.51
2016-07-11     99.38
2016-07-08    110.47
2016-07-07    113.71
2016-07-06    112.75
2016-07-05    115.63
2016-07-04    110.46
2016-07-01    111.82
Name: close, dtype: float64
View Code

通過上一步,我們取到包含破板當日以及之后十天的收盤價,將數據轉換為numpy.array數據。

close_array=df.values
>>> close_array=df.values
>>> close_array
array([ 100.9 ,   99.73,   98.87,  100.51,   99.38,  110.47,  113.71,
        112.75,  115.63,  110.46,  111.82])
View Code

進一步進行處理,如果破板后某個交易日收盤價格高於破板當天收盤價,則將array中的值置為1,否則為0。

import tushare as ts
import numpy as np

df=ts.get_hist_data('603737')

df=df[['open','close','p_change']]
start_date=df[df['p_change']<9.8].tail(1).index[0]
df=df[df.index>=start_date]
df=df.tail(11)['close']

close_array=df.values
for i in range(1,11):
  if close_array[i]>close_array[0]:
    close_array[i]=1
  else:
    close_array[i]=0

close_array[0]=0

print (close_array)

輸出結果:

localhost:~ shengtianhe$ python find.py
[ 0.  0.  0.  0.  0.  1.  1.  1.  1.  1.  1.]

一只股票的數據組織好了,接下來把所有新股的數據取出來,這里需要用到合並array的方法numpy.concatenate,另外代碼里還有一些小地方的處理,搜了一圈才知道怎么做,比如如何返回值判斷非空:

import tushare as ts
import numpy as np
import pandas as pd

df=ts.new_stocks()
df=df[df['issue_date']>'2016-06-01']
df=df[['code','name','issue_date']]

df=df[['code']]
stock_code=df.values

# print(stock_code)

i=0
df_matrix = None

for stock in stock_code:
  detail=ts.get_hist_data(stock_code[i][0])
  if detail is None:
    i=i+1
    continue  

  detail=detail[['open','close','p_change']]
  hasbreak=detail[detail['p_change']<9.8]

  if hasbreak.size==0:
    i=i+1
    continue

  start_date=hasbreak.tail(1).index[0]
  hasbreak=hasbreak[hasbreak.index>=start_date]
  hasbreak=hasbreak.tail(11)['close']

  if hasbreak.size <11:
    i=i+1
    continue

  close_array=hasbreak.values
  for day in range(1,hasbreak.size):
    if close_array[day]>close_array[0]:
      close_array[day]=1
    else:
      close_array[day]=0
  close_array[0]=0

  df_matrix_thisRound=pd.DataFrame(close_array)
  df_matrix_thisRound=df_matrix_thisRound.T

  if df_matrix is None:
    df_matrix=df_matrix_thisRound
  else:
    df_matrix=np.concatenate((df_matrix,df_matrix_thisRound.values))

  i=i+1

print(df_matrix)  

運行結果如下:

localhost:~ shengtianhe$ python proData.py 
[Getting data:]########[[ 0.  1.  1.  0.  1.  1.  1.  1.  1.  1.  1.]
 [ 0.  1.  0.  1.  0.  0.  1.  1.  1.  0.  0.]
 [ 0.  1.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  1.  1.  1.  1.  1.  1.  1.  0.  0.  0.]
 [ 0.  1.  1.  1.  1.  0.  1.  0.  1.  1.  1.]
 [ 0.  0.  0.  0.  0.  1.  1.  1.  1.  1.  1.]
 [ 0.  1.  1.  1.  1.  1.  0.  1.  1.  1.  1.]
 [ 0.  1.  1.  1.  1.  1.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  1.  1.  1.  1.  1.  1.]
 [ 0.  1.  1.  1.  1.  0.  0.  1.  1.  1.  1.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  1.  0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  1.  0.  0.  0.  0.  0.  0.  0.  1.  1.]
 [ 0.  1.  0.  0.  0.  0.  0.  0.  0.  0.  1.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  1.  1.  1.  1.  1.  1.  1.]
 [ 0.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.]
 [ 0.  0.  1.  1.  1.  1.  1.  1.  1.  0.  0.]
 [ 0.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.]
 [ 0.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.]
 [ 0.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.]
 [ 0.  0.  0.  0.  0.  0.  1.  1.  1.  1.  1.]
 [ 0.  1.  0.  0.  0.  0.  0.  1.  1.  1.  1.]
 [ 0.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.]
 [ 0.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.]
 [ 0.  1.  0.  1.  1.  1.  1.  1.  1.  1.  1.]
 [ 0.  0.  1.  1.  1.  1.  1.  1.  1.  1.  1.]
 [ 0.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.]
 [ 0.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.]
 [ 0.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.]
 [ 0.  0.  1.  1.  1.  1.  1.  1.  1.  1.  1.]
 [ 0.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.]
 [ 0.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.]
 [ 0.  1.  1.  1.  1.  1.  1.  1.  1.  1.  0.]
 [ 0.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.]
 [ 0.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.]
 [ 0.  0.  0.  1.  0.  0.  1.  1.  1.  1.  0.]
 [ 0.  1.  1.  1.  1.  1.  1.  0.  0.  0.  0.]
 [ 0.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.]
 [ 0.  0.  1.  1.  1.  1.  1.  1.  1.  1.  1.]
 [ 0.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.]
 [ 0.  0.  0.  1.  1.  1.  1.  1.  1.  1.  1.]
 [ 0.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.]
 [ 0.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.]
 [ 0.  0.  1.  1.  1.  1.  1.  1.  0.  1.  1.]
 [ 0.  1.  1.  1.  1.  0.  0.  0.  0.  0.  1.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  1.  1.  1.  1.  1.  0.  0.  0.  0.]
 [ 0.  1.  1.  0.  0.  1.  1.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  1.  1.  1.  1.  1.  1.  1.  1.  1.]
 [ 0.  1.  1.  0.  0.  1.  1.  1.  1.  0.  1.]
 [ 0.  1.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  1.  1.  1.  1.  1.  1.  1.  1.  1.]
 [ 0.  1.  1.  0.  0.  1.  1.  1.  1.  1.  1.]
 [ 0.  0.  0.  0.  1.  1.  1.  1.  1.  1.  1.]
 [ 0.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.]
 [ 0.  1.  1.  1.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.]
 [ 0.  1.  0.  0.  0.  1.  1.  1.  1.  1.  0.]
 [ 0.  1.  0.  1.  1.  1.  1.  1.  1.  1.  1.]
 [ 0.  0.  1.  1.  1.  1.  1.  1.  1.  1.  1.]
 [ 0.  0.  1.  1.  1.  1.  1.  1.  1.  1.  1.]
 [ 0.  1.  1.  0.  1.  1.  1.  1.  1.  1.  1.]
 [ 0.  0.  0.  0.  0.  1.  1.  1.  1.  1.  1.]]
View Code

-----

第四步:如何計算整體上每天盈利的概率

這一步就相對簡單了,直接求每一列的均值即可,數值上就代表當天盈利的概率了。

http://pandas.pydata.org/pandas-docs/version/0.17.0/generated/pandas.DataFrame.mean.html

加入代碼如下:

mean=df_matrix.mean(0)
print(mean)

運行結果如下:

[ 0.          0.62686567  0.65671642  0.64179104  0.65671642  0.71641791
  0.74626866  0.73134328  0.71641791  0.70149254  0.70149254]
View Code

結論:

就目前時間段來看,破板后買入十個交易日內賺錢的概率還是蠻高的。

這段程序只是第一次寫,當然還有很多可以改進的地方,但想要的結果已經有了個大概了。下一步感興趣可以把結果用可視化的輸出表示出來,先去睡覺啦!

總體來說還是比較滿足的!

哈哈哈

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM