用python告訴你,股市抄底的概率有多大

“抄底”指以某種估值指標衡量股價跌到最低點,尤其是短時間內大幅下跌時買入,預期股價將會很快反彈的操作策略。

拿今年的股市來說,可不畏是跌宕起伏啊,2月3日抄底的朋友肯定是賺的盆滿鉢滿,而3月5日以後抄底的“菜菜”們心情就不那麼美麗了,我就是其中的一個,總的情況可以用下圖表示,心情哇涼哇涼的:

很多人都覺得抄底能賺錢,但是抄底成功的概率有多大呢?

下面帶着大家從數據分析的角度尋找一下答案。

第一步:構建數據模型

用python爬取某基金網站任意10支基金數據,當天跌幅超過3%時,可判爲抄底時刻,第二天漲幅大於2%時,判爲抄底成功,否則判爲失敗,最後將所有基金的成功次數和失敗次數分別相加,計算出成功概率。

第二步:python爬數據

1.打開基金網站,用瀏覽器自帶流量分析工具找到數據接口

請求參數爲:

其中callback爲返回js回調函數,可以刪除,funCode爲基金代碼,pageIndex爲頁碼,pageSize爲每頁返回的數據條數是,startDate和endDate分別爲開始時間和結束時間。

正常情況下應該是一頁一頁爬,但是我這顆躁動的心不願安分,於是我把pageSize改爲10000,代碼如下

fundCode = '001618'  #基金代碼
pageIndex = 1
startDate = '2018-02-22'  #起始時間
endDate = '2020-03-21'   #截止時間
header = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0',
    'Referer': 'http://fundf10.eastmoney.com/jjjz_{0}.html'.format(fundCode)
}
url = 'http://api.fund.eastmoney.com/f10/lsjz?fundCode={0}&pageIndex={1}&pageSize=5000&startDate={2}&endDate={3}&_=1555586870418?'\
    .format(fundCode, pageIndex, startDate, endDate)
response = requests.get(url, headers=header)
關注公衆號:編程學習營,送Python入門學習資料+源碼+思維導圖

輸出結果爲:

一下子全出來了,簡直太意外了

這裏有個網站的反爬措施大家需要注意一下,就是我在requests的頭部信息中加入了Referer值,它會告訴服務器該網頁是從哪個頁面鏈接過來的,服務器因此可以獲得一些信息用於處理,如果不加Referer,將會出錯,這是一種常見的反爬措施。

用返回的數據畫個業績走勢圖,代碼爲:

minytick = (int(min(JZZZLs)/10)-1)*10
maxytick = (int(max(JZZZLs)/10)+1)*10
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用來正常顯示中文標籤
matplotlib.rcParams['axes.unicode_minus'] =False  #顯示負號
plt.figure(figsize=(15, 10), dpi=80)
plt.title('基金折線圖', color='y', fontweight=800, size=40)
plt.scatter(x, JZZZLs, s=50, c='r')
plt.plot(x, JZZZLs, c='b')
plt.xticks(x[::len(x)-1], FSRQs[::len(x)-1], size=20)   # x座標
plt.ylim(minytick, maxytick)
plt.yticks(range(minytick, maxytick, 10), size=20)
plt.ylabel('%', size=50)
plt.grid(axis="y")  #生成網格'''
plt.grid(axis="x")  #生成網格'''
plt.show()
關注公衆號:編程學習營,送Python入門學習資料+源碼+思維導圖

結果爲:

我就在那個最高的峯值上

說多了都是淚,還是接着分析吧!

第三步:按照數學模型對1支基金開始分析數據

參照第一步的數據模型,根據當天的收益判是否該抄底,再根據第二天收益情況判定是否抄底成功,代碼如下:

for i, j in enumerate(result):
    # print(j)
    today = 0
    if j['JZZZL'] != '':
        today = float(j['JZZZL'])  # 當天收益
    if today < -3:
        tall += 1
        if float(result[i + 1]['JZZZL']) > 2:  # 大於2時視爲抄底成功
            tsuccess += 1
        else:
            tfail += 1
關注公衆號:編程學習營,送Python入門學習資料+源碼+思維導圖

輸出結果:

用matplotlib畫出餅狀圖,代碼如下

labels = ['成功', '失敗']
sizes = [tsuccess, tfail]
explode = (0, 0)
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用來正常顯示中文標籤
plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=False,startangle=150)
plt.title("基金抄底成功概率")
plt.show()
關注公衆號:編程學習營,送Python入門學習資料+源碼+思維導圖

餅狀圖結果爲:

從上圖可以分析,2018-02-22至2020-03-21之間,該支基金總共可以抄底22次,成功3次,失敗19次,成功率爲位13.6%,看起來不是很理想。

第四步:對10支基金進行分析

隨便找了10支基金,還是在這個時間段,將所有基金的成功次數和失敗次數分別相加,計算出成功概率

輸出結果爲:

畫出總的餅狀圖:

從10支基金的總結果來看,抄底成功的概率爲24.6%,失敗的概率爲75.4%,相當於4次抄底只有1次能成功,感覺以後不能相信抄底了。

小結:本文以基金定投爲切入線進行了1次簡單的數據分析,所有結果僅以學習爲主,不作爲投資的依據,千萬要慎重,不要像我一樣登高望遠,山頂太冷啊!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章