コード例 #1
0
ファイル: test_rpsIndex.py プロジェクト: pchaos/quanttesting
 def test_RPSIndex_rpsTopN2(self):
     # 显示rps排名前10%的ETF中文名称
     fn = 'zxgETF.txt'
     # code列表
     code = read_zxg(fn)
     rpsday = [20, 50]
     end = self.end
     # end = "2020-06-24"
     rpsIndex = RPSIndex(code, self.start, end, rpsday)
     n = 10
     rps = rpsIndex.rpsTopN2(startday=end, percentN=n)
     rps2 = rpsIndex.rpsTopN(end, n)
     self.assertTrue(len(rps) > 0)
     self.assertTrue(
         len(rps) == len(rps2),
         "长度不同 {} {}\n{} {}".format(len(rps), len(rps2), rps, rps2))
     try:
         self.assertTrue(
             rps.sort_values(rps.columns[0], ascending=False).equals(rps2),
             "排序后不相等 {} {}".format(rps, rps2))
     except:
         self.assertTrue(rps.equals(rps2), "不相等 {} {}".format(rps, rps2))
     print(rps)
     print("总数: {}".format(len(rps)))
     dfInfo = codeInfo(list(rps.index.levels[1]))
     print(dfInfo.name)
コード例 #2
0
 def test_ETFName(self):
     """文件zxgFile,增加中文名称
     """
     zxgFile = "zxgETF.txt"
     code = read_zxg(zxgFile)
     dfInfo = codeInfo(list(code))
     print(dfInfo)
     dfInfo[['code', 'name']].to_csv(zxgFile, index=False, sep=" ", header=None)
コード例 #3
0
 def test_xls2zxg(self):
     xlsfile = "担保品20200210.xls"
     zxgfile = "/tmp/{}.txt".format(xlsfile)
     xls2zxg(xlsfile, zxgfile)
     codes = read_zxg(zxgfile, length=15)
     self.assertTrue(len(codes) > 10, "读取数量太少:{}".format(codes))
     print(codes[:10])
     for code in codes:
         if code.startswith("159"):
             print(code)
コード例 #4
0
 def test_rps_ETF_selectCode(self):
     # 显示rps排名前10%的中文名称
     fn = 'zxgETF.txt'
     # code列表
     code = read_zxg(fn)
     rpsday = [20, 50]
     rpsIndex = RPSIndex(code, self.start, self.end, rpsday)
     rps = rpsIndex.selectCode(code)
     # print(rps.tail())
     print(rps)
コード例 #5
0
 def test_xls2Code(self):
     xlsfile = "担保品20200210.xls"
     zxgfile = "/tmp/{}.txt".format(xlsfile)
     xls2zxg(xlsfile, zxgfile)
     codes = read_zxg(zxgfile)
     self.assertTrue(len(codes) > 10, "读取数量太少:{}".format(codes))
     print(codes[:10])
     codes2 = xls2Code(xlsfile)
     self.assertTrue(codes == codes2, "返回结果不想等")
     for code in codes2:
         self.assertTrue(len(code) == 6)
コード例 #6
0
    def test_rps_name_exclude_topn2(self):
        """测试另一种计算排名靠前的方式
        """
        # 显示rps排名前10%的中文名称(去除某些品种)
        code = self.code
        codeexclude = read_zxg('zxgExclude.txt')
        # 排除某些股票
        code = setdiff_sorted(code, codeexclude)
        rpsday = [20, 50]
        # rpsday = [20, 50, 120]
        data = self.data2
        data = data.loc[(slice(None), code), :]
        dfrps = self._getRPS(rpsday, data)
        theday = datetime.date.today()
        n = 5
        dfrpstopn2 = pd.concat([
            dfrps.loc[(dfrps[item] >= 100 - n)] for item in dfrps.columns
        ]).sort_index()
        # rps排名前5%
        dftopn = self._getRPSTopN(code, dfrps, theday, n=n)
        codetop = list(dftopn['code'])
        # index列表 用于处理中文名称
        indexList = qa.QA_fetch_index_list_adv()
        # for c in codetop:
        #     # 打印股票代码及中文名
        #     print(c, indexList.loc[c]['name'])
        # print("排名靠前的数量:{}".format(len(codetop)))
        # 插入中文名
        dftopn.insert(2, 'name',
                      dftopn['code'].apply(lambda x: indexList.loc[x]['name']))
        print(dftopn.head(10))
        # dfrpstopn2 = self._getRPSTopN2(code, dfrpstopn2, theday, theday, n)
        dfrpstopn2 = self._getRPSTopN2(code, dfrpstopn2, theday, theday, n)
        dftopn2 = dfrpstopn2.reset_index()
        dftopn2.insert(
            2, 'name',
            dftopn2['code'].apply(lambda x: indexList.loc[x]['name']))
        codetop2 = list(dftopn2['code'])
        difflist = self.diffList(codetop, codetop2)
        self.assertTrue(len(difflist) <= 1, "代码差别: {}".format(difflist))
        if len(difflist) > 0:
            print(difflist)
            # 删除多的代买,只是为了方便对比测试。实际使用不需要删除
            if difflist in codetop:
                dftopn = dftopn[dftopn['code'] != difflist[0]]
            else:
                # dftopn2= dftopn2[dftopn2['code'] != difflist[0]].reset_index(drop=True)
                dftopn2.drop(dftopn2['code'] == difflist[0]).reset_index(
                    drop=True)

        obo = self.differOneByOne(
            dftopn2.sort_values(['code']),
            dftopn.sort_values(['code']).reset_index(drop=True))
        self.assertTrue(len(obo) == 0, "{}".format(obo))
コード例 #7
0
 def test_read_zxg(self):
     """测试读取自选股列表
     """
     fn = 'zxg.txt'
     # code列表
     code = read_zxg(fn)
     if len(code) == 0:
         # 自选股为空
         self.assertTrue(not os.path.exists(fn), "找到文件:{}".format(fn))
     else:
         self.assertTrue(os.path.exists(fn), "没找到文件:{}".format(fn))
         print("自选列表:{}".format(code))
コード例 #8
0
ファイル: test_rpsIndex.py プロジェクト: pchaos/quanttesting
 def test_rps_ETF_selectCode(self):
     # rps筛选特定code
     fn = 'zxgETF.txt'
     # code列表
     code = read_zxg(fn)
     rpsday = [20, 50]
     rpsIndex = RPSIndex(code, self.start, self.end, rpsday)
     rps = rpsIndex.selectCode(code)
     # print(rps.tail())
     # print(rps)
     self.assertTrue(
         len(rpsIndex.selectCode(code[:2])) == 2 *
         len(rpsIndex.selectCode(code[:1])), "两倍长度")
コード例 #9
0
 def test_readzxg_name(self):
     """代码对应的指数名称
     """
     fn = 'zxg.txt'
     # code列表
     code = read_zxg(fn)
     data = qa.QA_fetch_index_list_adv()
     print(data.columns)
     # print(data[['code', 'name']])
     for c in code:
         print(c, data.loc[c]['name'])
     df =codeInfo(code)
     print(df.head())
     self.assertTrue(len(code) == len(df), "股票代码个数和股票信息的个数相同")
コード例 #10
0
ファイル: test_rpsIndex.py プロジェクト: pchaos/quanttesting
    def test_rps_ETFTOPN(self):
        # 显示rps排名前10%的ETF中文名称
        fn = 'zxgETF.txt'
        # code列表
        code = read_zxg(fn)
        rpsday = [20, 50]
        rpsIndex = RPSIndex(code, self.start, self.end, rpsday)
        n = 10
        rps = rpsIndex.rpsTopN(self.end, n)
        self.assertTrue(len(rps) > 0)

        print(rps)
        print("总数: {}".format(len(rps)))
        dfInfo = codeInfo(list(rps.index.levels[1]))
        print(dfInfo.name)
コード例 #11
0
ファイル: test_rpsIndex.py プロジェクト: pchaos/quanttesting
 def test_RPSIndex_rpsTopN2_2(self):
     #  一段时间内,显示rps排名前10%的ETF中文名称
     fn = 'zxgETF.txt'
     # code列表
     code = read_zxg(fn)
     rpsday = [20, 50]
     rpsIndex = RPSIndex(code, self.start, self.end, rpsday)
     n = 10
     start = self.end - datetime.timedelta(10)
     rps = rpsIndex.rpsTopN2(startday=start, lastday=self.end, percentN=n)
     self.assertTrue(len(rps) > 0)
     # for day in reversed(rps.index.levels[0]):
     for day in rps.index.levels[0]:
         if day == pd.to_datetime(datetime.date(2020, 6, 30)):
             continue
         print("对比日期: {}".format(day))
         rps2 = rpsIndex.rpsTopN(day, n)
         df = rps.loc[(slice(pd.Timestamp(day), pd.Timestamp(day))), :]
         self.assertTrue(
             len(df) == len(rps2),
             "长度不同 {} {}\n{} {}".format(len(df), len(rps2), rps, rps2))
         try:
             obo = self.differOneByOne(df, rps2)
             self.assertTrue(len(obo) == 0, "{} {}".format(df, rps2))
             self.assertTrue(df.equals(rps2), "不相等 {} {}".format(df, rps2))
         except Exception as e:
             df = df.sort_values(by=df.columns[0],
                                 ascending=False,
                                 inplace=False)
             obo = self.differOneByOne(df, rps2)
             self.assertTrue(len(obo) == 0, "{} {}".format(df, rps2))
             self.assertTrue(df.equals(rps2), "不相等 {} {}".format(df, rps2))
     print(rps)
     print("总数: {}".format(len(rps)))
     dfInfo = codeInfo(list(rps.index.levels[1]))
     print(dfInfo.name)
コード例 #12
0
    def test_rps_name_exclude(self):
        """880035 创业涨跌
880025 中小涨跌
880005 涨跌家数
880928 抗流感
880655 医疗器械
880630 半导体
880410 医药商业
880654 医药商业
000857 500医药
880880 近期强势
399676 深医药EW
880491 半导体
399976 CS新能车
880653 生物制品
399441 生物医药
880402 生物制药
000121 医药主题
000131 上证高新
399993 CSWD生科
880773 最近闪崩
880878 百元股
880403 中成药
880652 中药
399803 工业4.0
000075 医药等权
399678 深次新股
880398 医疗保健
399674 深A医药
399667 创业板G
880920 免疫治疗
399989 中证医疗
880927 抗癌
000863 CS精准医
000109 380医药
880913 基因概念
399685 深成医药
880966 消费电子
880557 生物疫苗
000991 全指医药
880952 芯片
880400 医药
399618 深证医药
880024 中小均价
399647 深医药50
399386 1000医药
000037 上证医药
000841 800医药
399295 创业蓝筹
000808 医药生物
000933 中证医药
880642 视听器材
399673 创业板50
880854 预高送转
399417 新能源车
880902 特斯拉
399249 综企指数
880716 光刻机
399808 中证新能
880534 锂电池
880556 IP变现
880961 小米概念
399811 CSSW电子
880608 动物保健
880870 两年新股
399412 国证新能
399643 创业新兴
880836 配股股
399635 创业板EW
399326 成长40
880944 无人驾驶
880574 苹果概念
399017 SME创新
399638 深证环保
880935 智能电视
399691 创业专利
399804 中证体育
880590 网络游戏
880942 虚拟现实
399682 深成工业
880780 融资增加
399388 1000信息
399016 深证创新
399339 深证科技
排名靠前的数量:83
"""
        # 显示rps排名前10%的中文名称(去除某些品种)
        code = self.code
        codeexclude = read_zxg('zxgExclude.txt')
        # 排除某些股票
        code = setdiff_sorted(code, codeexclude)
        rpsday = [20, 50]
        # rpsday = [20, 50, 120]
        data = self.data2
        data = data.loc[(slice(None), code), :]
        dfrps = self._getRPS(rpsday, data)
        theday = datetime.date.today()
        # rps排名前5%
        dftopn = self._getRPSTopN(code, dfrps, theday, n=5)
        codetop = list(dftopn['code'])
        indexList = qa.QA_fetch_index_list_adv()
        for c in codetop:
            # 打印股票代码及中文名
            print(c, indexList.loc[c]['name'])
        print("排名靠前的数量:{}".format(len(codetop)))
        # 插入中文名
        dftopn.insert(2, 'name',
                      dftopn['code'].apply(lambda x: indexList.loc[x]['name']))
        print(dftopn.head(10))
        # 保存到文件
        dftopn.to_csv('/tmp/rpstop.csv', encoding='utf-8', index=False)