最新文章:

首页 code

基金七天免手续费筛选

发布时间:2021年05月22日 评论数:抢沙发 阅读数:25394

    支付宝看直播 每天有1k-3,1w-20红包,债基不能用,只能用于股票型和混合型。

    偶然发现一些混合偏债型也可以用红包,于是想找找债券占比高,股票占比低的混合偏债基。

    手动在天天基金网上找,效率太低。

    看到往上有人写了个爬虫,从天天基金网上筛选7天免手续费的基金的,于是稍作修改,满足我的筛选需求。

    import pandas as pd
    import requests
    import execjs
    # import os
    # os.environ["EXECJS_RUNTIME"] = "JScript"
    url = 'http://fund.eastmoney.com/js/fundcode_search.js'
    content = requests.get(url)
    jsContent = execjs.compile(content.text)
    rawData = jsContent.eval('r')
    jjcode=[]
    jjname=[]
    jjtype=[]
    # 忽略:债券型、债券指数、货币型、定开、QDII、FOF等
    # 保留:股票型、股票指数、混合型、联接基金的C类基金;
    for code in rawData:
        if len(code) > 2:
            name = code[2]
            type = code[3]
            if name[-1] == 'C':
                #if type == '股票型' or type == '股票指数' or type == '混合型' or type == '联接基金' or type[:4] == 'QDII':
                if type == '股票指数' or type == '联接基金':
                    jjcode.append(code[0])
                    jjname.append(code[2])
                    jjtype.append(code[3])
    # 满7天赎回费率为零
    feeString = '<td>大于等于7天</td><td>0.00%</td>'
    # 基金状态,基金规模,运作费用
    openString = '开放申购'
    amtString = '亿元'
    yearString = '(每年)'
    def getUrl(fscode):
        head = 'http://fundf10.eastmoney.com/jjfl_'
        tail = '.html'
        return head+fscode+tail
    # 根据基金代码查询费率信息
    def getFee(fscode):
        content = requests.get(getUrl(fscode))
        fees = ''
        result = feeString in content.text
        if result == True:
            result = openString in content.text
        if result == True:
            nPos = content.text.find(amtString)
            if nPos > 5:
                sTemp = content.text[nPos-5 : nPos]
                fAmount = float(sTemp)
                if fAmount < 0.5 and sTemp[:2] == ' 0':
                    result = False
                else:
                    nPos = content.text.find(yearString)
                    if nPos > 0 and content.text[nPos-1] == '%':
                        # 管理费率
                        fees = fees + content.text[nPos-5 : nPos] + ' '
                        nPos = content.text.find(yearString, nPos+1)
                        if nPos > 0 and content.text[nPos-1] == '%':
                            # 托管费率
                            fees = fees + content.text[nPos-5 : nPos] + ' '
                            nPos = content.text.find(yearString, nPos+1)
                            if nPos > 0 and content.text[nPos-1] == '%':
                                # 销售服务费率
                                fees = fees + content.text[nPos-5 : nPos]
            else:
                result = False
        return result, fees
    jj7code=[]
    jj7name=[]
    jj7type=[]
    jj7fees=[]
    k = 0
    j = len(jjcode)
    for i in range(j):
        code = jjcode[i]
        result, fees = getFee(code)
        if result == True:
            k += 1
            jj7code.append(jjcode[i])
            jj7name.append(jjname[i])
            jj7type.append(jjtype[i])
            jj7fees.append(fees)
        if i % 100 == 0:
            print("totals : {}\tfound : {}\tprocessing : {}".format(j, k, i+1))
    jjinfo=pd.DataFrame({'代码':jj7code, '名称':jj7name, '类型':jj7type, '费率':jj7fees})
    # 写入到本地文件
    # 注意:如用EXCEL打开CSV文件,会发现基金代码没有前置0。这是EXCEL的问题,用NOTEPAD打开CSV可知文件本身正常
    jjinfo.to_csv('./data/jj7.csv', encoding='utf_8_sig', index=False)
    jjinfo.head()
    # ————————————————
    # 版权声明:本文为CSDN博主「范牧天」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    # 原文链接:https://blog.csdn.net/fanmin2000/article/details/116030602



    按需求修改后如下:


    import pandas as pd
    import requests
    import execjs
    # import os
    
    # os.environ["EXECJS_RUNTIME"] = "JScript"
    
    url = 'http://fund.eastmoney.com/js/fundcode_search.js'
    content = requests.get(url)
    jsContent = execjs.compile(content.text)
    rawData = jsContent.eval('r')
    
    jjcode=[]
    jjname=[]
    jjtype=[]
    
    # 所有类别:
    # 股票型 股票指数 联接基金 QDII QDII-指数
    # 混合型 混合-FOF
    # 债券型 债券指数 定开债券 
    # 货币型 理财型
    for code in rawData:
        if len(code) > 2:
            name = code[2]
            type = code[3]
            if True:#name[-1] == 'C':
                if type == '混合型':
                    jjcode.append(code[0])
                    jjname.append(code[2])
                    jjtype.append(code[3])
    
    # 满7 / 30天赎回费率
    feeString = '<td>大于等于7天</td><td>0.00%</td>'
    fee30String = '<td>大于等于30天</td><td>0.00%</td>'
    
    # 基金状态,基金规模,运作费用
    openString = '开放申购'
    amtString = '亿元'
    yearString = '(每年)'
    
    def getUrl(fscode):
        head = 'http://fundf10.eastmoney.com/jjfl_'
        tail = '.html'
        return head+fscode+tail
    
    def getUrlZCPZ(fscode):
        head = 'http://fundf10.eastmoney.com/zcpz_'
        tail = '.html'
        return head+fscode+tail
    
    zqzjb = '债券占净比'
    
    # 查询资产配置比例
    def getZCPZ(fscode):
        content2 = requests.get(getUrlZCPZ(fscode))
        nPos2 = content2.text.find(zqzjb)
        if nPos2 == -1:
            result = False
        else:
            # 股票占比 class=tor
            nPosa = content2.text.find("tor",nPos2)
            nPosb = content2.text.find("</td>",nPosa+1)
            sTemp = content2.text[nPosa+5 : nPosb]
            if sTemp == "---":
                gpzb = 0
            else:
                gpzb = float(sTemp[0:-1])
            # 债券占比 class=tor
            nPosa = content2.text.find("tor",nPosa+1)
            nPosb = content2.text.find("</td>",nPosa+1)
            sTemp = content2.text[nPosa+5 : nPosb]
            if sTemp == "---":
                zqzb = 0
            else:
                zqzb = float(sTemp[0:-1])
            # 股票<5% 债券>90%
            if gpzb < 5 and zqzb > 90:
                result = True
            else:
                result = False
        return result
        
    # 根据基金代码查询费率信息
    def getFee(fscode):
        content = requests.get(getUrl(fscode))
        fees = ''
        result = fee30String in content.text
        if result == True:
    # 开放申购
    #        result = openString in content.text
    #    if result == True:
            nPos = content.text.find(amtString)
            if nPos > 5:
    # 资产规模
    #            sTemp = content.text[nPos-5 : nPos]
    #            fAmount = float(sTemp)
    #            if fAmount < 0.5 and sTemp[:2] == ' 0':
    #                result = False
    #            else:
    # 资产配置占比
                result = getZCPZ(fscode)
                if result == True:
                    nPos = content.text.find(yearString)
                    if nPos > 0 and content.text[nPos-1] == '%':
                        # 管理费率
                        fees = fees + content.text[nPos-5 : nPos] + ' '
                        nPos = content.text.find(yearString, nPos+1)
                        if nPos > 0 and content.text[nPos-1] == '%':
                            # 托管费率
                            fees = fees + content.text[nPos-5 : nPos] + ' '
                            nPos = content.text.find(yearString, nPos+1)
                            if nPos > 0 and content.text[nPos-1] == '%':
                                # 销售服务费率
                                fees = fees + content.text[nPos-5 : nPos]
            else:
                result = False
        return result, fees
    
    jj7code=[]
    jj7name=[]
    jj7type=[]
    jj7fees=[]
    
    k = 0
    j = len(jjcode)
    for i in range(j):
        code = jjcode[i]
        result, fees = getFee(code)
        if result == True:
            k += 1
            jj7code.append(jjcode[i])
            jj7name.append(jjname[i])
            jj7type.append(jjtype[i])
            jj7fees.append(fees)
        if i % 100 == 0:
            print("totals : {}\tfound : {}\tprocessing : {}".format(j, k, i+1))
    
    jjinfo=pd.DataFrame({'代码':jj7code, '名称':jj7name, '类型':jj7type, '费率':jj7fees})
    
    # 写入到本地文件
    # 注意:如用EXCEL打开CSV文件,会发现基金代码没有前置0。这是EXCEL的问题,用NOTEPAD打开CSV可知文件本身正常
    jjinfo.to_csv('~/123.csv', encoding='utf_8_sig', index=False)
    
    jjinfo.head()
    
    # 版权声明:本文为CSDN博主「范牧天」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    # 原文链接:https://blog.csdn.net/fanmin2000/article/details/116030602



    经过筛选,在7天免手续费的基金里没有符合要求的混合偏债基,

    在30天免手续费里找到以下,债券占比高达97%,没有股票占比:

    003412 鹏华弘康灵活配置混合C 总费率 0.8% / 年 债券97%

    001775 鹏华弘泰灵活配置混合C 总费率 1.05% / 年 债券98%

    002322 银华汇利灵活配置混合C 总费率 1.05% / 年 债券93% 股票4%


    ----------------------------------

    发现了更好的,支付宝里的 指数-债券型,红包可用,直播红包1w-20,七天卖千一手续费10块,红包年化五个点。

    006728 博时中债3-5年进出口行指数C

    007486 博时中债3-5年国开行指数C

    007847 华富中债0-5年中高等级信用债收益平衡指数C

    006474 招商中债1-5年进出口行指数C



二维码加载中...
本文作者:admin      文章标题: 基金七天免手续费筛选
本文地址:http://jiang.shuang.he.cn/blog/?post=45
版权声明:若无注明,本文皆为“”原创,转载请保留文章出处。
挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
提交评论

清空信息
关闭评论