<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python分析:基金定投 選星期幾收益更大?

          共 4027字,需瀏覽 9分鐘

           ·

          2020-03-15 23:27

          982fb823e3ee12f88bce4720f613efb7.webp

          作者 |?鍋g頭
          來源 |?Crossin的編程教室



          基金定投常見的一種方式是定期定額投資,即每周或每月固定的時間段,向基金公司申購固定份額的基金?;鸲ㄍ犊梢云骄杀?、分散風險,實現(xiàn)自動投資,所以基金定投又稱為“懶人投資術(shù)”。今天主要用python帶大家分析一下,從統(tǒng)計數(shù)據(jù)上來看,到底什么時候定投獲得收益的概率最大。

          (本文為學習討論,不作為投資建議)
          整體思路:選取一定的時間段,分別模擬周一至周五定投,比較最終受益情況,確定基金定投最適宜的時間。
          下面開始詳細介紹:

          第一步:網(wǎng)站分析,分析數(shù)據(jù)交換url
          以天天基金網(wǎng)為例,隨便找一只基金39544db78ca2e95aad16d80edc0eec7a.webp
          打開Chrome自帶的開發(fā)者工具,點擊下一頁,從 Network 分頁里找到數(shù)據(jù)傳輸接口bdb469e1a3197a504d56f0be4d4da129.webp
          點擊此請求,打開響應數(shù)據(jù)a8cdb914ef543105f671e9dd63d1a54e.webp?就是它沒錯了,接著我們看看該url的參數(shù)22c51faec3f40de05629bac8a659fa10.webp?Callback可以忽略,fundcode為該基金代碼,pageIndex為當前頁碼,pageSize為返回數(shù)據(jù)條數(shù),這里一次返回20條,startData和endData分別為起始時間和終止時間,但是都為空值,最后一個參數(shù)也不用管。

          第二步:requests模擬請求,得到數(shù)據(jù)
          正常情況,應該是for循環(huán),一頁一頁的取數(shù)據(jù),但是我們從第一步可以看到,該url參數(shù)中含有起始、截止時間,那我們可以試試,能不能忽略頁碼信息,以時間為截點得到返回數(shù)據(jù),改一下url結(jié)構(gòu),開始模擬請求:
          startDate = '2018-01-13'  #起始時間endDate = '2020-02-28'   #截止時間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)result=json.loads(response.text)print(result)for j in result['Data']['LSJZList']:print(j)

          返回數(shù)據(jù)為b6720797bde15bf439c18ddd6be5ccbe.webp
          確實能按此url結(jié)構(gòu)返回數(shù)據(jù),但是貌似只有20條,起初還以為是網(wǎng)站接口限制問題,最后發(fā)現(xiàn)是pageSize沒有設(shè)置,索性直接設(shè)置為5000,再來一次?a2e54895daf32abc52430bb10f2ee937.webp這樣就全出來了。



          第三步:構(gòu)造模型,模擬定投計算最終收益
          具體過程如下:
          先將日期轉(zhuǎn)換為星期,然后將周一至周五分類,以周五定投為例,每次定投100,將每次定投金額按當天凈值轉(zhuǎn)化為份額,然后與之前份額累加:
          total = [0] * 5   # 到期后總份額count = [0] * 5   # 每日定投次數(shù)for j in result['Data']['LSJZList'][::-1]:if j['JZZZL']=='':        passelse:        weekday = int(datetime.strptime(j['FSRQ'], '%Y-%m-%d').weekday())        DWJZ = float(j['DWJZ'])   # 凈值                total[weekday] = total[weekday]+money/DWJZ????????count[weekday]?+=?1
          最后根據(jù)最后的凈值將份額轉(zhuǎn)化為金額:
          total_money=[]   #根據(jù)份額算出總金額for t, i in enumerate(total):    total_money.append(i*DWJZ)print("周{0}定投最終金額{1}".format(t+1, i*DWJZ), "定投{0}次".format(count[t]))
          返回結(jié)果:
          周1定投最終金額10702.031523199748 定投87次周2定投最終金額10916.721436831616 定投89次周3定投最終金額10762.509365370352 定投87次周4定投最終金額10880.683965470516 定投88次周5定投最終金額10375.517539233546 定投84次



          第四步:用matplotlib畫柱狀圖

          1.首先設(shè)置正常顯示中文標簽,SimHei為中文字體,用plt.figure建1個15x8的畫布,設(shè)置標題內(nèi)容、字體顏色、字體粗細及大小
          plt.rcParams['font.sans-serif']?=?['SimHei']??#?windows?用來正常顯示中文標簽# plt.rcParams["font.family"] = 'Arial Unicode MS'  # mac 用來正常顯示中文標簽plt.figure(figsize=(15, 10), dpi=80)plt.title('{0}基金模擬定投收益圖'.format(fundCode),?color='blue',?fontweight=800,?size=50)profit_list?=?[round((i-100*j)/(100*j),?4)?for?i,?j?in?zip(total_money,?count)]??#?到期后總收益率

          效果如下:

          c4a2df1918682ca2002db3cc1dff3188.webp?


          2.然后用plt.bar畫柱狀圖大小,第一個代表該日增長的概率,第二個為該日累計增長的收益,plt.bar內(nèi)的label參數(shù)為圖簽,但是要用plt.legend防止圖簽與圖像重合顯示不出來,調(diào)整y軸坐標范圍以便于查看,最后設(shè)置坐標軸粗細。
          name_list = ['周一', '周二', '周三', '周四', '周五']x = range(len(name_list))minytick=int(min(total_money))-1000maxytick=int(max(total_money))+1000plt.bar(x, [i for i in total_money], label='該日定投最終收益', width=0.4, color='y')# 參數(shù) m、m2、r 用來調(diào)整高度比例m = sum(total_money) / 5m2 = min(profit_list)r = 50000plt.bar([i+0.4 for i in x], [(i-m2)*r + m for i in profit_list], label='該日定投收益率', width=0.4, color='r')plt.legend(loc="upper left")  # 防止label和圖像重合顯示不出來plt.xticks(x, name_list, size=20)   # x坐標plt.ylim(minytick, maxytick)plt.yticks(range(minytick, maxytick, 200), size=20) # y坐標ax = plt.gca();#獲得坐標軸的句柄ax.spines['left'].set_linewidth(3) ; ####設(shè)置左邊坐標軸的粗細ax.spines['bottom'].set_linewidth(3)?;?###設(shè)置底部坐標軸的粗細

          ?a8b0859daf255e9cb9bc5f6c42e676d3.webp


          3.完善標簽、網(wǎng)格、文字等設(shè)置
          for a, b, c in zip(x, total_money, count):    plt.text(a, b+0.05, '%.1f' % b, ha='center', va='bottom', fontsize=15)    plt.text(a, b+100, '定投{}次'.format(c), ha='center', va='bottom', fontsize=15, color='r')for a, b in zip(x, profit_list):    plt.text(a+0.4, (b-m2)*r + m, '%.4f' % b, ha='center', va='bottom', fontsize=15)
          plt.text(2, maxytick+300, '時間:{0}至{1}'.format(startDate, endDate), fontsize=20)plt.grid(axis="y") #生成網(wǎng)格'''

          c73e29ec89a9568911941c0388806ccb.webp



          第五步:統(tǒng)計分析
          我們先多嘗試幾只不同基金不同時段的情況,畫出直方圖:

          56ec79312342164b6f9d00956cdda7bb.webp

          0b13803fa82724b1341d9f563e35d8f4.webp

          f76b1b021d223c92e88e32784fa03262.webp

          8add9083fea76fc2bc0b73e2a37cd595.webp

          僅從幾個個例很難看出什么規(guī)律。所以進一步的,我們隨機選10支基金,再隨機選10個時間段,畫出收益分布的散點圖,并計算出平均值:

          b177d2bd47bf251c9573d20e3aef5861.webp



          第六步:得出結(jié)論
          從上述的統(tǒng)計結(jié)果中來看,周四、五定投的收益通常要大于周一、周二定投的收益。
          不過我們這里選取的數(shù)據(jù)量并不多,你也可以自己在代碼中增加更多的基金代碼和時間來測試。另外建議大家可以選擇自己定投的雞來分析,這樣也許可將自己的收益最大化!
          當然咯,此演示結(jié)果僅作為參考,股市變化莫測,不可能完全預測,請大家謹慎操作。

          源碼地址(或閱讀原文):https://gitee.com/crossin/snippet/tree/master/fund_week





          瀏覽 100
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日逼无码| 毛片黄色片 | 成人黄色在线 | 狠狠操 五月天 | 国产乱国产乱老熟300部视频 |