├── .gitattributes ├── README.md ├── READMEmd ├── analysis ├── __pycache__ │ ├── cl_until.cpython-37.pyc │ └── until.cpython-37.pyc ├── factor_analysis_demo.ipynb └── until.py ├── data ├── quantaxis_data.ipynb ├── ricequant_data.ipynb ├── ths_data.ipynb └── wind_data.ipynb ├── factor_born ├── __pycache__ │ ├── factors_definition_1d.cpython-37.pyc │ └── mfm_operator.cpython-37.pyc ├── factor_born_and_in_library.ipynb └── mfm_operator.py └── factor_fig ├── alpha_cl_jiangtiantu_15A.png ├── alpha_cl_jiangtiantu_15B.png ├── alpha_cl_jiangtiantu_19A.png ├── alpha_cl_jiangtiantu_19B.png ├── alpha_cl_jiangtiantu_1A.png ├── alpha_cl_jiangtiantu_1B.png ├── alpha_cl_jiangtiantu_20A.png ├── alpha_cl_jiangtiantu_20B.png ├── alpha_cl_jiangtiantu_21A.png ├── alpha_cl_jiangtiantu_21B.png ├── alpha_cl_jiangtiantu_22A.png ├── alpha_cl_jiangtiantu_22B.png ├── alpha_cl_jiangtiantu_23A.png ├── alpha_cl_jiangtiantu_23B.png ├── alpha_cl_jiangtiantu_24A.png ├── alpha_cl_jiangtiantu_24B.png ├── alpha_cl_jiangtiantu_26A.png ├── alpha_cl_jiangtiantu_26B.png ├── alpha_cl_jiangtiantu_27A.png ├── alpha_cl_jiangtiantu_27B.png ├── alpha_cl_jiangtiantu_30A.png ├── alpha_cl_jiangtiantu_30B.png ├── alpha_cl_jiangtiantu_31A.png ├── alpha_cl_jiangtiantu_31B.png ├── alpha_cl_jiangtiantu_32A.png ├── alpha_cl_jiangtiantu_32B.png ├── alpha_cl_jiangtiantu_34A.png ├── alpha_cl_jiangtiantu_34B.png ├── alpha_cl_jiangtiantu_35A.png ├── alpha_cl_jiangtiantu_35B.png ├── alpha_cl_jiangtiantu_36A.png ├── alpha_cl_jiangtiantu_36B.png ├── alpha_cl_jiangtiantu_37A.png ├── alpha_cl_jiangtiantu_37B.png ├── alpha_cl_jiangtiantu_39A.png ├── alpha_cl_jiangtiantu_39B.png ├── alpha_cl_jiangtiantu_3A.png ├── alpha_cl_jiangtiantu_3B.png ├── alpha_cl_jiangtiantu_48A.png ├── alpha_cl_jiangtiantu_48B.png ├── alpha_cl_jiangtiantu_49A.png ├── alpha_cl_jiangtiantu_49B.png ├── alpha_cl_jiangtiantu_4A.png ├── alpha_cl_jiangtiantu_4B.png ├── alpha_cl_jiangtiantu_50A.png ├── alpha_cl_jiangtiantu_50B.png ├── alpha_cl_jiangtiantu_51A.png ├── alpha_cl_jiangtiantu_51B.png ├── alpha_cl_jiangtiantu_53A.png ├── alpha_cl_jiangtiantu_53B.png ├── alpha_cl_jiangtiantu_54A.png ├── alpha_cl_jiangtiantu_54B.png ├── alpha_cl_jiangtiantu_55A.png ├── alpha_cl_jiangtiantu_55B.png ├── alpha_cl_jiangtiantu_56A.png ├── alpha_cl_jiangtiantu_56B.png ├── alpha_cl_jiangtiantu_57A.png ├── alpha_cl_jiangtiantu_57B.png ├── alpha_cl_jiangtiantu_59A.png ├── alpha_cl_jiangtiantu_59B.png ├── alpha_cl_jiangtiantu_60A.png ├── alpha_cl_jiangtiantu_60B.png ├── alpha_cl_jiangtiantu_63A.png ├── alpha_cl_jiangtiantu_63B.png ├── alpha_cl_jiangtiantu_64A.png ├── alpha_cl_jiangtiantu_64B.png ├── alpha_cl_jiangtiantu_65A.png ├── alpha_cl_jiangtiantu_65B.png ├── alpha_cl_jiangtiantu_66A.png ├── alpha_cl_jiangtiantu_66B.png ├── alpha_cl_jiangtiantu_67A.png ├── alpha_cl_jiangtiantu_67B.png ├── alpha_cl_jiangtiantu_68A.png ├── alpha_cl_jiangtiantu_68B.png ├── alpha_cl_jiangtiantu_6A.png ├── alpha_cl_jiangtiantu_6B.png ├── alpha_cl_jiangtiantu_71A.png ├── alpha_cl_jiangtiantu_71B.png ├── alpha_cl_jiangtiantu_72A.png ├── alpha_cl_jiangtiantu_72B.png ├── alpha_cl_jiangtiantu_73A.png ├── alpha_cl_jiangtiantu_73B.png ├── alpha_cl_jiangtiantu_76A.png ├── alpha_cl_jiangtiantu_76B.png ├── alpha_cl_jiangtiantu_77A.png ├── alpha_cl_jiangtiantu_77B.png ├── alpha_cl_jiangtiantu_79A.png ├── alpha_cl_jiangtiantu_79B.png ├── alpha_cl_jiangtiantu_7A.png ├── alpha_cl_jiangtiantu_7B.png ├── alpha_cl_jiangtiantu_80A.png ├── alpha_cl_jiangtiantu_80B.png ├── alpha_cl_jiangtiantu_82A.png ├── alpha_cl_jiangtiantu_82B.png ├── alpha_cl_jiangtiantu_8A.png ├── alpha_cl_jiangtiantu_8B.png ├── alpha_cl_jiangtiantu_9A.png └── alpha_cl_jiangtiantu_9B.png /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Factorhub 半开源因子库+因子交换小组 2 | 3 | # factorhub 因子交换小组 4 | 5 | factorhub这个小组可能只适合做过多因子组合或因子挖掘的朋友。 6 | 7 | 我做了大半年的因子挖掘,然后总结出一个规律,没有好的数据,没有丰富的因子库是做不出好的超额的。所以我有个野一点的想法。我想建立一个小组,大家互相认可的话,可以交换下自己手上的因子,你们自己组队,沟通。或者我来介绍沟通都行,平等自愿。我微信debin16 8 | 9 | 我这边的话,开源了自己的因子框架,从数据库,到因子分析,都开源了(虽然是个小辣鸡)。但因子定义文件,我想以交换的方式互相交流。我愿意拿自己手上的3个因子换对方1个因子。每个因子的分层曲线,和多空收益我放在了factorfig 文件夹里。大家想要哪些因子可以挑。互相认可,我们就交换。 10 | 11 | 千粉大佬们愿意帮我推荐分享的话,我也愿意把因子文件直接送给您;有大佬愿意一起参与这个项也非常欢迎,互通有无。 12 | 13 | 14 | 15 | ## 因子框架 16 | 17 | 我代码很烂,水平也差。大佬们有意见随意提,我后面学习了就改进,也怕自己误人子弟。 18 | 19 | **1.data:**一个简陋的数据库,以hdf5文件保存。提供基础数据,用于因子计算,和回测计算收益。建议自己本地安装好quantaxis,即可自行下载数据。 20 | https://github.com/QUANTAXIS/QUANTAXIS 21 | 22 | **2.factor:** 计算好的因子数据,以pkl 文件保存,文件太大,我上传到了百度网盘 23 | 链接: https://pan.baidu.com/s/1HcRxXkHZ6ytyx6UThR5tcg 提取码: cust 24 | 25 | **3.analysis**:因子分析工具,目前只开源了两个功能,分层画图,和计算超额 26 | 27 | 具体流程是: 28 | 29 | ```python 30 | #读取数据 31 | datapath='E:\\Users\\Desktop\\factorhub\\data\\' 32 | factorpath='E:\\Users\\Desktop\\factorhub\\factors\\' 33 | 34 | data_hfq=pd.read_hdf(datapath+'data_hfq.h5','data_hfq') 35 | data_bfq=pd.read_hdf(datapath+'data_bfq.h5','data_bfq') 36 | ``` 37 | 38 | ```python 39 | `#对数据进行基本的处理` 40 | `Open = data_hfq["open"].unstack()` 41 | `Close = data_hfq["close"].unstack()` 42 | `High = data_hfq["high"].unstack()` 43 | `Low = data_hfq["low"].unstack()` 44 | `Vol = data_hfq["volume"].unstack()` 45 | `Amount = data_hfq["amount"].unstack()` 46 | `chg_1_d = Close.pct_change()` 47 | `stock_info=QA.QA_fetch_stock_info(code=Open.columns.to_list())` 48 | `sz = data_bfq['close'].unstack().mul(stock_info["zongguben"],axis=1)` 49 | `ltsz = data_bfq['close'].unstack().mul(stock_info["liutongguben"],axis=1)` 50 | `vwap = Amount/Vol/100` 51 | ``` 52 | 53 | ```python 54 | #去除涨跌停,去除停牌股 55 | tradeable=data_bfq['amount'].apply(lambda x :1 if x>0 else np.nan)*(data_bfq['high']-data_bfq['low']).apply(lambda x :1 if x!=0 else np.nan)*chg_1_d.stack().apply(lambda x :1 if x<0.100 else np.nan) 56 | tradeable=tradeable.unstack() 57 | ``` 58 | 59 | ```python 60 | #获取基准 61 | Benchmark=QA.QA_fetch_index_day_adv('000905',tradeable.index[0],tradeable.index[-1]).close 62 | Benchmark.index=(Benchmark.index).get_level_values(0) 63 | Benchmark=(Benchmark.pct_change(1)).shift(-1) 64 | megedata=pd.DataFrame() 65 | # megedata["period"]=Close.pct_change(1).shift(-1).stack()#以收盘价交易 66 | megedata["period"]=Open.pct_change().shift(-2).stack()#以开盘价交易 67 | 68 | 69 | ``` 70 | 71 | ```python 72 | #定义一个因子 73 | def factor_simple(): 74 | factor=-1*Close.pct_change(5) 75 | return factor 76 | test_factor=factor_simple() 77 | ``` 78 | 79 | ```python 80 | #分层画图 81 | test_factor=test_factor.replace([np.inf, -np.inf], np.nan) 82 | clean_factor_data=megedata 83 | input_factor= test_factor*tradeable 84 | input_factor=input_factor.stack() 85 | clean_factor_data["factor"]=input_factor 86 | clean_factor_data=clean_factor_data.dropna() 87 | 88 | clean_factor_data["factor_quantile"]=clean_factor_data["factor"].groupby(level=0).apply(lambda x :((pd.qcut(x.rank(), 10, labels=False,duplicates='drop') + 1))) 89 | df_factor_quantile=clean_factor_data.reset_index().groupby(['date','factor_quantile'])["period"].mean().unstack().cumsum() 90 | df_factor_quantile.plot(figsize=(16,9),title="test_factor") 91 | ``` 92 | 93 | img 94 | 95 | ```python 96 | #不算复利,计算对冲收益 97 | group_num=10 98 | commision_fee=0.0 99 | 100 | test_factor=test_factor.replace([np.inf, -np.inf], np.nan) 101 | clean_factor_data=megedata 102 | input_factor= test_factor*tradeable 103 | input_factor=input_factor.stack() 104 | 105 | 106 | clean_factor_data["factor"]=input_factor 107 | clean_factor_data=clean_factor_data.dropna() 108 | clean_factor_data["factor_quantile"]=clean_factor_data["factor"].groupby(level=0).apply(lambda x :((pd.qcut(x.rank(), 10, labels=False,duplicates='drop') + 1))) 109 | 110 | long_portfolio_data = clean_factor_data[clean_factor_data['factor_quantile'] == group_num] 111 | short_portfolio_data = clean_factor_data[clean_factor_data['factor_quantile'] == 1] 112 | 113 | long_portfolio_rate_of_return = long_portfolio_data['period'].mean(level=0) - commision_fee 114 | short_portfolio_rate_of_return = short_portfolio_data['period'].mean(level=0) - commision_fee 115 | hedged_rate_of_return = long_portfolio_rate_of_return - short_portfolio_rate_of_return - 2 * commision_fee 116 | hedged_with_Benchmark_return = long_portfolio_rate_of_return - Benchmark - commision_fee 117 | 118 | long_cumulative_return = 1+long_portfolio_rate_of_return.cumsum() 119 | short_cumulative_return = 1+short_portfolio_rate_of_return.cumsum() 120 | hedged_cumulative_return = 1+hedged_rate_of_return.cumsum() 121 | Benchmark_cumulative_return = 1+Benchmark.cumsum() 122 | hedged_with_Benchmark_cumulative_return = 1+hedged_with_Benchmark_return.cumsum() 123 | 124 | Return = pd.concat([long_cumulative_return,short_cumulative_return, hedged_cumulative_return, Benchmark_cumulative_return,hedged_with_Benchmark_cumulative_return], axis=1) 125 | Return.columns = ['long','short','long-short','benchmark','long-benchmark'] 126 | 127 | Return=Return.dropna() 128 | Return.plot(figsize=(16,9),title="test—factor") 129 | ``` 130 | 131 | **** 132 | 133 | 基本上你自己定义一个因子,之后就直接开始研究了。我这个框架是学习alphalens 写的,因为alphalens 太慢了,所以,就自己实现了,要快些。没有做任何封装,理解起来容易些。虽然代码懒,但大概的步骤是没有错的,所有曲线没有计算手续费,没有计算对冲成本。 134 | 135 | ![img](https://pic2.zhimg.com/v2-dab49293ebec08c02e7f1971504fa779_b.png) 136 | 137 | **4.factor_born:** 因子自动生成算法,基于deap,暂未开源 138 | **5.factor_fig:** 因子分层曲线和超额收益曲线(全部按照单利计算) 139 | **6.mfm_operator:**一个算子文件,定义了些常见的算子 140 | 141 | ## And More ? 142 | 143 | 欢迎加入quanthub 社区 144 | 145 | 146 | 147 | **https://zhuanlan.zhihu.com/p/148087260** -------------------------------------------------------------------------------- /READMEmd: -------------------------------------------------------------------------------- 1 | Factorhub 半开源因子库+因子交换小组 2 | 3 | # factorhub 因子交换小组 4 | 5 | factorhub这个小组可能只适合做过多因子组合或因子挖掘的朋友。 6 | 7 | 我做了大半年的因子挖掘,然后总结出一个规律,没有好的数据,没有丰富的因子库是做不出好的超额的。所以我有个野一点的想法。我想建立一个小组,大家互相认可的话,可以交换下自己手上的因子,你们自己组队,沟通。或者我来介绍沟通都行,平等自愿。我微信debin16 8 | 9 | 我这边的话,开源了自己的因子框架,从数据库,到因子分析,都开源了(虽然是个小辣鸡)。但因子定义文件,我想以交换的方式互相交流。我愿意拿自己手上的3个因子换对方1个因子。每个因子的分层曲线,和多空收益我放在了factorfig 文件夹里。大家想要哪些因子可以挑。互相认可,我们就交换。 10 | 11 | 千粉大佬们愿意帮我推荐分享的话,我也愿意把因子文件直接送给您;有大佬愿意一起参与这个项也非常欢迎,互通有无。 12 | 13 | 14 | 15 | ## 因子框架 16 | 17 | 我代码很烂,水平也差。大佬们有意见随意提,我后面学习了就改进,也怕自己误人子弟。 18 | 19 | **1.data:**一个简陋的数据库,以hdf5文件保存。提供基础数据,用于因子计算,和回测计算收益。建议自己本地安装好quantaxis,即可自行下载数据。 20 | https://github.com/QUANTAXIS/QUANTAXIS 21 | 22 | **2.factor:** 计算好的因子数据,以pkl 文件保存,文件太大,我上传到了百度网盘 23 | 链接: https://pan.baidu.com/s/1HcRxXkHZ6ytyx6UThR5tcg 提取码: cust 24 | 25 | **3.analysis**:因子分析工具,目前只开源了两个功能,分层画图,和计算超额 26 | 27 | 具体流程是: 28 | 29 | ```python 30 | #读取数据 31 | datapath='E:\\Users\\Desktop\\factorhub\\data\\' 32 | factorpath='E:\\Users\\Desktop\\factorhub\\factors\\' 33 | 34 | data_hfq=pd.read_hdf(datapath+'data_hfq.h5','data_hfq') 35 | data_bfq=pd.read_hdf(datapath+'data_bfq.h5','data_bfq') 36 | ``` 37 | 38 | ```python 39 | `#对数据进行基本的处理` 40 | `Open = data_hfq["open"].unstack()` 41 | `Close = data_hfq["close"].unstack()` 42 | `High = data_hfq["high"].unstack()` 43 | `Low = data_hfq["low"].unstack()` 44 | `Vol = data_hfq["volume"].unstack()` 45 | `Amount = data_hfq["amount"].unstack()` 46 | `chg_1_d = Close.pct_change()` 47 | `stock_info=QA.QA_fetch_stock_info(code=Open.columns.to_list())` 48 | `sz = data_bfq['close'].unstack().mul(stock_info["zongguben"],axis=1)` 49 | `ltsz = data_bfq['close'].unstack().mul(stock_info["liutongguben"],axis=1)` 50 | `vwap = Amount/Vol/100` 51 | ``` 52 | 53 | ```python 54 | #去除涨跌停,去除停牌股 55 | tradeable=data_bfq['amount'].apply(lambda x :1 if x>0 else np.nan)*(data_bfq['high']-data_bfq['low']).apply(lambda x :1 if x!=0 else np.nan)*chg_1_d.stack().apply(lambda x :1 if x<0.100 else np.nan) 56 | tradeable=tradeable.unstack() 57 | ``` 58 | 59 | ```python 60 | #获取基准 61 | Benchmark=QA.QA_fetch_index_day_adv('000905',tradeable.index[0],tradeable.index[-1]).close 62 | Benchmark.index=(Benchmark.index).get_level_values(0) 63 | Benchmark=(Benchmark.pct_change(1)).shift(-1) 64 | megedata=pd.DataFrame() 65 | # megedata["period"]=Close.pct_change(1).shift(-1).stack()#以收盘价交易 66 | megedata["period"]=Open.pct_change().shift(-2).stack()#以开盘价交易 67 | 68 | 69 | ``` 70 | 71 | ```python 72 | #定义一个因子 73 | def factor_simple(): 74 | factor=-1*Close.pct_change(5) 75 | return factor 76 | test_factor=factor_simple() 77 | ``` 78 | 79 | ```python 80 | #分层画图 81 | test_factor=test_factor.replace([np.inf, -np.inf], np.nan) 82 | clean_factor_data=megedata 83 | input_factor= test_factor*tradeable 84 | input_factor=input_factor.stack() 85 | clean_factor_data["factor"]=input_factor 86 | clean_factor_data=clean_factor_data.dropna() 87 | 88 | clean_factor_data["factor_quantile"]=clean_factor_data["factor"].groupby(level=0).apply(lambda x :((pd.qcut(x.rank(), 10, labels=False,duplicates='drop') + 1))) 89 | df_factor_quantile=clean_factor_data.reset_index().groupby(['date','factor_quantile'])["period"].mean().unstack().cumsum() 90 | df_factor_quantile.plot(figsize=(16,9),title="test_factor") 91 | ``` 92 | 93 | img 94 | 95 | ```python 96 | #不算复利,计算对冲收益 97 | group_num=10 98 | commision_fee=0.0 99 | 100 | test_factor=test_factor.replace([np.inf, -np.inf], np.nan) 101 | clean_factor_data=megedata 102 | input_factor= test_factor*tradeable 103 | input_factor=input_factor.stack() 104 | 105 | 106 | clean_factor_data["factor"]=input_factor 107 | clean_factor_data=clean_factor_data.dropna() 108 | clean_factor_data["factor_quantile"]=clean_factor_data["factor"].groupby(level=0).apply(lambda x :((pd.qcut(x.rank(), 10, labels=False,duplicates='drop') + 1))) 109 | 110 | long_portfolio_data = clean_factor_data[clean_factor_data['factor_quantile'] == group_num] 111 | short_portfolio_data = clean_factor_data[clean_factor_data['factor_quantile'] == 1] 112 | 113 | long_portfolio_rate_of_return = long_portfolio_data['period'].mean(level=0) - commision_fee 114 | short_portfolio_rate_of_return = short_portfolio_data['period'].mean(level=0) - commision_fee 115 | hedged_rate_of_return = long_portfolio_rate_of_return - short_portfolio_rate_of_return - 2 * commision_fee 116 | hedged_with_Benchmark_return = long_portfolio_rate_of_return - Benchmark - commision_fee 117 | 118 | long_cumulative_return = 1+long_portfolio_rate_of_return.cumsum() 119 | short_cumulative_return = 1+short_portfolio_rate_of_return.cumsum() 120 | hedged_cumulative_return = 1+hedged_rate_of_return.cumsum() 121 | Benchmark_cumulative_return = 1+Benchmark.cumsum() 122 | hedged_with_Benchmark_cumulative_return = 1+hedged_with_Benchmark_return.cumsum() 123 | 124 | Return = pd.concat([long_cumulative_return,short_cumulative_return, hedged_cumulative_return, Benchmark_cumulative_return,hedged_with_Benchmark_cumulative_return], axis=1) 125 | Return.columns = ['long','short','long-short','benchmark','long-benchmark'] 126 | 127 | Return=Return.dropna() 128 | Return.plot(figsize=(16,9),title="test—factor") 129 | ``` 130 | 131 | **** 132 | 133 | 基本上你自己定义一个因子,之后就直接开始研究了。我这个框架是学习alphalens 写的,因为alphalens 太慢了,所以,就自己实现了,要快些。没有做任何封装,理解起来容易些。虽然代码懒,但大概的步骤是没有错的,所有曲线没有计算手续费,没有计算对冲成本。 134 | 135 | ![img](https://pic2.zhimg.com/v2-dab49293ebec08c02e7f1971504fa779_b.png) 136 | 137 | **4.factor_born:** 因子自动生成算法,基于deap,暂未开源 138 | **5.factor_fig:** 因子分层曲线和超额收益曲线(全部按照单利计算) 139 | **6.mfm_operator:**一个算子文件,定义了些常见的算子 140 | 141 | ## And More ? 142 | 143 | 欢迎加入quanthub 社区 144 | 145 | 146 | 147 | **https://zhuanlan.zhihu.com/p/148087260** -------------------------------------------------------------------------------- /analysis/__pycache__/cl_until.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/analysis/__pycache__/cl_until.cpython-37.pyc -------------------------------------------------------------------------------- /analysis/__pycache__/until.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/analysis/__pycache__/until.cpython-37.pyc -------------------------------------------------------------------------------- /analysis/until.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import pandas as pd 3 | # import warnings; warnings.simplefilter('ignore') 4 | import os 5 | import matplotlib.pyplot as plt 6 | 7 | 8 | def backtest_1(test_factor,megedata,Benchmark,tradeable,group_num=10,commision_fee=0): 9 | #不算复利 10 | test_factor=test_factor.replace([np.inf, -np.inf], np.nan) 11 | clean_factor_data=megedata 12 | input_factor= test_factor*tradeable 13 | input_factor=input_factor.stack() 14 | 15 | clean_factor_data["factor"]=input_factor 16 | clean_factor_data=clean_factor_data.dropna() 17 | clean_factor_data["factor_quantile"]=clean_factor_data["factor"].groupby(level=0).apply(lambda x :((pd.qcut(x, 10, labels=False,duplicates='drop') + 1))) 18 | 19 | long_portfolio_data = clean_factor_data[clean_factor_data['factor_quantile'] == group_num] 20 | short_portfolio_data = clean_factor_data[clean_factor_data['factor_quantile'] == 1] 21 | 22 | long_portfolio_rate_of_return = long_portfolio_data['period'].mean(level=0) - commision_fee 23 | short_portfolio_rate_of_return = short_portfolio_data['period'].mean(level=0) - commision_fee 24 | hedged_rate_of_return = long_portfolio_rate_of_return - short_portfolio_rate_of_return - 2 * commision_fee 25 | hedged_with_Benchmark_return = long_portfolio_rate_of_return - Benchmark - commision_fee 26 | 27 | long_cumulative_return = 1+long_portfolio_rate_of_return.cumsum() 28 | short_cumulative_return = 1+short_portfolio_rate_of_return.cumsum() 29 | hedged_cumulative_return = 1+hedged_rate_of_return.cumsum() 30 | Benchmark_cumulative_return = 1+Benchmark.cumsum() 31 | hedged_with_Benchmark_cumulative_return = 1+hedged_with_Benchmark_return.cumsum() 32 | 33 | Return = pd.concat([long_cumulative_return,short_cumulative_return, hedged_cumulative_return, Benchmark_cumulative_return,hedged_with_Benchmark_cumulative_return], axis=1) 34 | Return.columns = ['long','short','long-short','benchmark','long-benchmark'] 35 | 36 | Return=Return.dropna() 37 | Return.plot(figsize=(16,9),title="test—factor") 38 | 39 | -------------------------------------------------------------------------------- /data/quantaxis_data.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import QUANTAXIS as QA\n", 10 | "import numpy as np\n", 11 | "from datetime import timedelta ,datetime\n" 12 | ] 13 | }, 14 | { 15 | "cell_type": "code", 16 | "execution_count": 2, 17 | "metadata": {}, 18 | "outputs": [], 19 | "source": [ 20 | "stock_list=QA.QA_fetch_stock_list().index.tolist()" 21 | ] 22 | }, 23 | { 24 | "cell_type": "code", 25 | "execution_count": 3, 26 | "metadata": { 27 | "tags": [] 28 | }, 29 | "outputs": [], 30 | "source": [ 31 | "torday=datetime.now()\n", 32 | "start_date=torday+timedelta(days=-360*2)\n", 33 | "data_bfq=QA.QA_fetch_stock_day_adv(stock_list,start=start_date,end=torday)\n", 34 | "data_hfq=data_bfq.to_hfq()" 35 | ] 36 | }, 37 | { 38 | "cell_type": "code", 39 | "execution_count": 4, 40 | "metadata": {}, 41 | "outputs": [ 42 | { 43 | "output_type": "execute_result", 44 | "data": { 45 | "text/plain": "('E:\\\\desktop\\\\data\\\\data_hfq.h5', 'data_hfq')" 46 | }, 47 | "metadata": {}, 48 | "execution_count": 4 49 | } 50 | ], 51 | "source": [ 52 | "path='E:\\\\desktop\\\\data\\\\'\n", 53 | "data_bfq.to_hdf(path+\"data_bfq.h5\",\"data_bfq\")\n", 54 | "data_hfq.to_hdf(path+\"data_hfq.h5\",'data_hfq')" 55 | ] 56 | }, 57 | { 58 | "cell_type": "code", 59 | "execution_count": 5, 60 | "metadata": {}, 61 | "outputs": [], 62 | "source": [ 63 | "# a=pd.read_hdf(\"C:\\\\Users\\\\clclcl\\\\Desktop\\\\data\\\\data_bfq.h5\",\"data_bfq\")\n", 64 | "# b=pd.read_hdf(\"C:\\\\Users\\\\clclcl\\\\Desktop\\\\data\\\\data_hfq.h5\",\"data_hfq\")\n", 65 | "# b[\"avg\"]=b[\"amount\"]/b[\"volume\"]/100" 66 | ] 67 | }, 68 | { 69 | "cell_type": "code", 70 | "execution_count": 52, 71 | "metadata": {}, 72 | "outputs": [], 73 | "source": [] 74 | }, 75 | { 76 | "cell_type": "code", 77 | "execution_count": 71, 78 | "metadata": {}, 79 | "outputs": [], 80 | "source": [] 81 | }, 82 | { 83 | "cell_type": "code", 84 | "execution_count": null, 85 | "metadata": {}, 86 | "outputs": [], 87 | "source": [] 88 | } 89 | ], 90 | "metadata": { 91 | "language_info": { 92 | "name": "python", 93 | "codemirror_mode": { 94 | "name": "ipython", 95 | "version": 3 96 | }, 97 | "version": "3.7.0-final" 98 | }, 99 | "orig_nbformat": 2, 100 | "file_extension": ".py", 101 | "mimetype": "text/x-python", 102 | "name": "python", 103 | "npconvert_exporter": "python", 104 | "pygments_lexer": "ipython3", 105 | "version": 3, 106 | "kernelspec": { 107 | "name": "python_defaultSpec_1595947655700", 108 | "display_name": "Python 3.7.0 64-bit ('base': conda)" 109 | } 110 | }, 111 | "nbformat": 4, 112 | "nbformat_minor": 2 113 | } -------------------------------------------------------------------------------- /data/ricequant_data.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 2, 4 | "metadata": { 5 | "language_info": { 6 | "name": "python", 7 | "codemirror_mode": { 8 | "name": "ipython", 9 | "version": 3 10 | }, 11 | "version": "3.7.4-final" 12 | }, 13 | "orig_nbformat": 2, 14 | "file_extension": ".py", 15 | "mimetype": "text/x-python", 16 | "name": "python", 17 | "npconvert_exporter": "python", 18 | "pygments_lexer": "ipython3", 19 | "version": 3, 20 | "kernelspec": { 21 | "name": "python37464bitbasecondaf58f680e650245d6af9156a7f17ac0fa", 22 | "display_name": "Python 3.7.4 64-bit ('base': conda)" 23 | } 24 | }, 25 | "cells": [ 26 | { 27 | "cell_type": "code", 28 | "execution_count": 35, 29 | "metadata": {}, 30 | "outputs": [], 31 | "source": [ 32 | "import rqdatac as rq\n", 33 | "import datetime\n", 34 | "rq.init('18225006201', 'mkq6412459')" 35 | ] 36 | }, 37 | { 38 | "cell_type": "code", 39 | "execution_count": 10, 40 | "metadata": {}, 41 | "outputs": [], 42 | "source": [ 43 | "all_instruments=rq.all_instruments(type=\"CS\")\n", 44 | "stock_list=all_instruments['order_book_id']" 45 | ] 46 | }, 47 | { 48 | "cell_type": "code", 49 | "execution_count": 31, 50 | "metadata": {}, 51 | "outputs": [], 52 | "source": [ 53 | "today=datetime.date.today().strftime(\"%Y-%M-%d\")\n", 54 | "price_panel=rq.get_price(stock_list,start_date='2010-01-01',enddate='',adjust_type=\"post\")" 55 | ] 56 | }, 57 | { 58 | "cell_type": "code", 59 | "execution_count": 32, 60 | "metadata": {}, 61 | "outputs": [], 62 | "source": [ 63 | "price_panel.to_pickle(\"price_panel.pkl\")" 64 | ] 65 | }, 66 | { 67 | "cell_type": "code", 68 | "execution_count": 33, 69 | "metadata": {}, 70 | "outputs": [ 71 | { 72 | "output_type": "execute_result", 73 | "data": { 74 | "text/plain": "\nDimensions: 9 (items) x 59 (major_axis) x 3959 (minor_axis)\nItems axis: open to limit_up\nMajor_axis axis: 2010-01-04 00:00:00 to 2010-04-01 00:00:00\nMinor_axis axis: 300275.XSHE to 600386.XSHG" 75 | }, 76 | "metadata": {}, 77 | "execution_count": 33 78 | } 79 | ], 80 | "source": [ 81 | "price_panel" 82 | ] 83 | }, 84 | { 85 | "cell_type": "code", 86 | "execution_count": 43, 87 | "metadata": {}, 88 | "outputs": [ 89 | { 90 | "output_type": "execute_result", 91 | "data": { 92 | "text/plain": "'2020-00-10'" 93 | }, 94 | "metadata": {}, 95 | "execution_count": 43 96 | } 97 | ], 98 | "source": [] 99 | }, 100 | { 101 | "cell_type": "code", 102 | "execution_count": null, 103 | "metadata": {}, 104 | "outputs": [], 105 | "source": [] 106 | } 107 | ] 108 | } -------------------------------------------------------------------------------- /data/ths_data.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 23, 6 | "metadata": {}, 7 | "outputs": [ 8 | { 9 | "output_type": "execute_result", 10 | "data": { 11 | "text/plain": "-201" 12 | }, 13 | "metadata": {}, 14 | "execution_count": 23 15 | } 16 | ], 17 | "source": [ 18 | "import pandas as pd\n", 19 | "from iFinDPy import *\n", 20 | "today=datetime.date.today().strftime(\"%Y-%M-%d\")\n", 21 | "THS_iFinDLogin('bgf003','122180')" 22 | ] 23 | }, 24 | { 25 | "cell_type": "code", 26 | "execution_count": 31, 27 | "metadata": {}, 28 | "outputs": [ 29 | { 30 | "output_type": "execute_result", 31 | "data": { 32 | "text/plain": "0 000001.SZ\n1 000002.SZ\n2 000004.SZ\n3 000005.SZ\n4 000006.SZ\nName: THSCODE, dtype: object" 33 | }, 34 | "metadata": {}, 35 | "execution_count": 31 36 | } 37 | ], 38 | "source": [ 39 | "all_stock_list=THS_Trans2DataFrame(THS_DataPool('block','2020-05-22;001005010','thscode:Y,security_name:Y',True))['THSCODE']\n", 40 | "all_stock_list.head()" 41 | ] 42 | }, 43 | { 44 | "cell_type": "code", 45 | "execution_count": 45, 46 | "metadata": {}, 47 | "outputs": [], 48 | "source": [ 49 | "factor_list=['ths_inflow_amt_stock','ths_outflow_amt_stock','ths_inflow_vol_stock','ths_outflow_vol_stock','ths_net_buy_amt_stock','ths_net_buy_vol_stock','ths_active_buy_amt_stock','ths_active_sell_amt_stock','ths_active_buy_vol_stock','ths_active_sell_vol_stock','ths_net_active_buy_amt_stock','ths_net_active_buy_vol_stock','ths_active_buy_large_vol_stock','ths_active_buy_large_amt_stock','ths_possitive_buy_large_vol_stock','ths_possitive_buy_large_amt_stock','ths_active_sell_large_vol_stock','ths_active_sell_large_amt_stock','ths_possitive_sell_large_vol_stock','ths_possitive_sell_large_amt_stock','ths_active_buy_main_vol_stock','ths_active_buy_main_amt_stock','ths_possitive_buy_main_vol_stock','ths_possitive_buy_main_amt_stock','ths_active_sell_main_vol_stock','ths_active_sell_main_amt_stock','ths_possitive_sell_main_vol_stock','ths_possitive_sell_main_amt_stock','ths_active_buy_middle_vol_stock','ths_active_buy_middle_amt_stock','ths_possitive_buy_middle_vol_stock','ths_possitive_buy_middle_amt_stock','ths_active_sell_middle_vol_stock','ths_active_sell_middle_amt_stock','ths_possitive_sell_middle_vol_stock','ths_possitive_sell_middle_amt_stock','ths_active_buy_small_vol_stock','ths_active_buy_small_amt_stock','ths_active_sellsmall_vol_stock','ths_active_sellsmall_amt_stock','ths_small_buy_vol_stock','ths_small_buy_amt_stock','ths_small_sell_vol_stock','ths_small_sell_amt_stock','ths_dde_stock','ths_dde_net_vol_stock','ths_net_infow_stock','ths_dde_5d_stock','ths_dde_10d_stock','ths_dde_20d_stock','ths_net_active_buy_amt_rate_stock','ths_net_active_buy_amt_ratio_stock','ths_net_active_buy_vol_rate_stock','ths_net_active_buy_vol_ratio_stock','ths_inflow_rate_stock','ths_main_net_inflow_amt_ratio_stock','ths_main_inflow_rate_stock','ths_main_net_inflow_vol_ratio_stock']" 50 | ] 51 | }, 52 | { 53 | "cell_type": "code", 54 | "execution_count": 91, 55 | "metadata": {}, 56 | "outputs": [], 57 | "source": [ 58 | "# for factor in factor_list[-10:]:\n", 59 | "# df=THS_Trans2DataFrame(THS_DateSerial(all_stock_list.to_list(),factor,'','Days:Tradedays,Fill:Previous,Interval:D','2015-01-01','2020-05-22',True))\n", 60 | "# print(df.head())\n", 61 | "# df['thscode']=[i[:6]for i in df['thscode']]\n", 62 | "# df.set_index(['time','thscode'])[factor].unstack()\n", 63 | "# break\n", 64 | " \n" 65 | ] 66 | }, 67 | { 68 | "cell_type": "code", 69 | "execution_count": 92, 70 | "metadata": {}, 71 | "outputs": [ 72 | { 73 | "output_type": "error", 74 | "ename": "JSONDecodeError", 75 | "evalue": "Expecting value: line 1 column 1 (char 0)", 76 | "traceback": [ 77 | "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", 78 | "\u001b[1;31mJSONDecodeError\u001b[0m Traceback (most recent call last)", 79 | "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mstock\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mall_stock_list\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mdf\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mTHS_Trans2DataFrame\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mTHS_DateSerial\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mstock\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mfactor_str\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;34m'100'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;34m'Days:Tradedays,Fill:Previous,Interval:D'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;34m'2020-01-01'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;34m'2020-05-22'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3\u001b[0m \u001b[1;32mbreak\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", 80 | "\u001b[1;32m~\\Desktop\\DataInterface_free_Windows_20200420\\DataInterface_free_Windows\\bin\\x64\\iFinDPy.py\u001b[0m in \u001b[0;36mTHS_Trans2DataFrame\u001b[1;34m(data)\u001b[0m\n\u001b[0;32m 189\u001b[0m \u001b[0mout\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mout\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdecode\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0miFinD\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdecodeMethod\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;34m'ignore'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 190\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mout\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 191\u001b[1;33m \u001b[0mout\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mjson\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mloads\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mout\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mobject_pairs_hook\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mOrderedDict\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 192\u001b[0m \u001b[0mdataframe\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mDataFrame\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mout\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 193\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mdataframe\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", 81 | "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\json\\__init__.py\u001b[0m in \u001b[0;36mloads\u001b[1;34m(s, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)\u001b[0m\n\u001b[0;32m 359\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mparse_constant\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 360\u001b[0m \u001b[0mkw\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'parse_constant'\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mparse_constant\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 361\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mcls\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m**\u001b[0m\u001b[0mkw\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdecode\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0ms\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", 82 | "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\json\\decoder.py\u001b[0m in \u001b[0;36mdecode\u001b[1;34m(self, s, _w)\u001b[0m\n\u001b[0;32m 335\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 336\u001b[0m \"\"\"\n\u001b[1;32m--> 337\u001b[1;33m \u001b[0mobj\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mend\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mraw_decode\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0ms\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0midx\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0m_w\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0ms\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 338\u001b[0m \u001b[0mend\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_w\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0ms\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mend\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 339\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mend\u001b[0m \u001b[1;33m!=\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0ms\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", 83 | "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\json\\decoder.py\u001b[0m in \u001b[0;36mraw_decode\u001b[1;34m(self, s, idx)\u001b[0m\n\u001b[0;32m 353\u001b[0m \u001b[0mobj\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mend\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mscan_once\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0ms\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0midx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 354\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mStopIteration\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 355\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mJSONDecodeError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Expecting value\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0ms\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0merr\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalue\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 356\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mobj\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mend\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", 84 | "\u001b[1;31mJSONDecodeError\u001b[0m: Expecting value: line 1 column 1 (char 0)" 85 | ] 86 | } 87 | ], 88 | "source": [ 89 | "for factor in factor_list:\n", 90 | " data_sum_list=[]\n", 91 | " for stock in all_stock_list:\n", 92 | " df=THS_Trans2DataFrame(THS_DateSerial(stock,factor,'100','Days:Tradedays,Fill:Previous,Interval:D','2020-01-01','2020-05-22',True))\n", 93 | " data_sum_list.append(df)\n", 94 | " data_sum_df=pd.concat(data_sum_list)\n", 95 | " print(data_sum_df.head())\n", 96 | " break\n" 97 | ] 98 | }, 99 | { 100 | "cell_type": "code", 101 | "execution_count": 32, 102 | "metadata": {}, 103 | "outputs": [], 104 | "source": [ 105 | "price_panel.to_pickle(\"price_panel.pkl\")" 106 | ] 107 | }, 108 | { 109 | "cell_type": "code", 110 | "execution_count": 33, 111 | "metadata": {}, 112 | "outputs": [ 113 | { 114 | "output_type": "execute_result", 115 | "data": { 116 | "text/plain": "\nDimensions: 9 (items) x 59 (major_axis) x 3959 (minor_axis)\nItems axis: open to limit_up\nMajor_axis axis: 2010-01-04 00:00:00 to 2010-04-01 00:00:00\nMinor_axis axis: 300275.XSHE to 600386.XSHG" 117 | }, 118 | "metadata": {}, 119 | "execution_count": 33 120 | } 121 | ], 122 | "source": [ 123 | "price_panel" 124 | ] 125 | }, 126 | { 127 | "cell_type": "code", 128 | "execution_count": 43, 129 | "metadata": {}, 130 | "outputs": [ 131 | { 132 | "output_type": "execute_result", 133 | "data": { 134 | "text/plain": "'2020-00-10'" 135 | }, 136 | "metadata": {}, 137 | "execution_count": 43 138 | } 139 | ], 140 | "source": [] 141 | }, 142 | { 143 | "cell_type": "code", 144 | "execution_count": null, 145 | "metadata": {}, 146 | "outputs": [], 147 | "source": [] 148 | } 149 | ], 150 | "metadata": { 151 | "language_info": { 152 | "name": "python", 153 | "codemirror_mode": { 154 | "name": "ipython", 155 | "version": 3 156 | }, 157 | "version": "3.7.4-final" 158 | }, 159 | "orig_nbformat": 2, 160 | "file_extension": ".py", 161 | "mimetype": "text/x-python", 162 | "name": "python", 163 | "npconvert_exporter": "python", 164 | "pygments_lexer": "ipython3", 165 | "version": 3, 166 | "kernelspec": { 167 | "name": "python37464bitbasecondaf58f680e650245d6af9156a7f17ac0fa", 168 | "display_name": "Python 3.7.4 64-bit ('base': conda)" 169 | } 170 | }, 171 | "nbformat": 4, 172 | "nbformat_minor": 2 173 | } -------------------------------------------------------------------------------- /data/wind_data.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 2, 4 | "metadata": { 5 | "language_info": { 6 | "name": "python", 7 | "codemirror_mode": { 8 | "name": "ipython", 9 | "version": 3 10 | }, 11 | "version": "3.7.1-final" 12 | }, 13 | "orig_nbformat": 2, 14 | "file_extension": ".py", 15 | "mimetype": "text/x-python", 16 | "name": "python", 17 | "npconvert_exporter": "python", 18 | "pygments_lexer": "ipython3", 19 | "version": 3, 20 | "kernelspec": { 21 | "name": "python37164bitvirtualenv939040a230e74cbaab3a77c2c7aff45a", 22 | "display_name": "Python 3.7.1 64-bit (virtualenv)" 23 | } 24 | }, 25 | "cells": [ 26 | { 27 | "cell_type": "code", 28 | "execution_count": 1, 29 | "metadata": {}, 30 | "outputs": [ 31 | { 32 | "name": "stdout", 33 | "output_type": "stream", 34 | "text": "Welcome to use Wind Quant API for Python (WindPy)!\n\nCOPYRIGHT (C) 2017 WIND INFORMATION CO., LTD. ALL RIGHTS RESERVED.\nIN NO CIRCUMSTANCE SHALL WIND BE RESPONSIBLE FOR ANY DAMAGES OR LOSSES CAUSED BY USING WIND QUANT API FOR Python.\n" 35 | } 36 | ], 37 | "source": [ 38 | "from WindPy import w\n", 39 | "w.start()\n", 40 | "import time\n", 41 | "import pandas" 42 | ] 43 | }, 44 | { 45 | "cell_type": "code", 46 | "execution_count": null, 47 | "metadata": {}, 48 | "outputs": [], 49 | "source": [ 50 | "print(last_trade_time)" 51 | ] 52 | } 53 | ] 54 | } -------------------------------------------------------------------------------- /factor_born/__pycache__/factors_definition_1d.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_born/__pycache__/factors_definition_1d.cpython-37.pyc -------------------------------------------------------------------------------- /factor_born/__pycache__/mfm_operator.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_born/__pycache__/mfm_operator.cpython-37.pyc -------------------------------------------------------------------------------- /factor_born/factor_born_and_in_library.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 3, 6 | "metadata": { 7 | "collapsed": false, 8 | "jupyter": { 9 | "outputs_hidden": false 10 | }, 11 | "pycharm": { 12 | "name": "#%%\n" 13 | }, 14 | "tags": [] 15 | }, 16 | "outputs": [], 17 | "source": [ 18 | "import numpy as np\n", 19 | "import pandas as pd\n", 20 | "import datetime\n", 21 | "import warnings; warnings.simplefilter('ignore')\n", 22 | "import QUANTAXIS as QA\n", 23 | "import os\n", 24 | "from mfm_operator import *\n", 25 | "import factors_definition_1d\n", 26 | "import scipy.stats as stats\n", 27 | "factor_path='E:\\\\Users\\\\Desktop\\\\factorhub\\\\factors'\n" 28 | ] 29 | }, 30 | { 31 | "cell_type": "code", 32 | "execution_count": 4, 33 | "metadata": {}, 34 | "outputs": [], 35 | "source": [ 36 | "factor=factors_definition_1d.factors()\n", 37 | "function_str_list=[\"factor.\"+fac for fac in dir(factor) if fac[0:5]=='alpha']\n", 38 | "for function_str in function_str_list:\n", 39 | " try:\n", 40 | " eval(function_str+\"()\").to_pickle(factor_path+'\\\\'+function_str[7:]+'.pkl')\n", 41 | " except:\n", 42 | " print('error:' ,function_str)" 43 | ] 44 | }, 45 | { 46 | "cell_type": "code", 47 | "execution_count": 15, 48 | "metadata": {}, 49 | "outputs": [], 50 | "source": [ 51 | "# sum_factors_list = [pd.read_pickle(factor_path+\"\\\\\"+i).rank(axis=1) for i in os.listdir(factor_path)]\n", 52 | "# sum_factors_df=pd.DataFrame()\n", 53 | "# for i in sum_factors_list:\n", 54 | "# sum_factors_df=sum_factors_df.add(i,fill_value=0)\n", 55 | "# sum_factors_df.to_pickle(\"sum_factors_1d.pkl\")" 56 | ] 57 | } 58 | ], 59 | "metadata": { 60 | "kernelspec": { 61 | "display_name": "Python 3", 62 | "language": "python", 63 | "name": "python3" 64 | }, 65 | "language_info": { 66 | "codemirror_mode": { 67 | "name": "ipython", 68 | "version": 3 69 | }, 70 | "file_extension": ".py", 71 | "mimetype": "text/x-python", 72 | "name": "python", 73 | "nbconvert_exporter": "python", 74 | "pygments_lexer": "ipython3", 75 | "version": "3.7.0-final" 76 | } 77 | }, 78 | "nbformat": 4, 79 | "nbformat_minor": 4 80 | } -------------------------------------------------------------------------------- /factor_born/mfm_operator.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import pandas as pd 3 | # import warnings; warnings.simplefilter('ignore') 4 | import os 5 | from scipy.stats import rankdata 6 | import talib as ta 7 | ##################一元函数######################## 8 | def log(x): 9 | return np.log(abs(x)) 10 | 11 | def abs(x): 12 | return np.abs(x) 13 | 14 | def sqrt(x): 15 | return np.sqrt(x) 16 | 17 | def rank(x): 18 | return x.rank(axis=1) 19 | 20 | def inv(x): 21 | return 1.0/x 22 | 23 | def percent(x): 24 | return x.div(x.sum(axis=1),axis=0) 25 | 26 | def diff(df, window=1): 27 | 28 | return df.diff(window) 29 | ##################一元函数######################## 30 | 31 | ##################二元函数######################## 32 | def delay(x,window): 33 | return x.shift(window) 34 | 35 | def ts_mean(x,window): 36 | return x.rolling(window).mean() 37 | 38 | def ts_std(x,window): 39 | return x.rolling(window).std() 40 | 41 | def ts_sum(x,window): 42 | return x.rolling(window).sum() 43 | 44 | # def ts_mul(x,window): 45 | # return x.rolling(window).max() 46 | 47 | def ts_min(x,window): 48 | return x.rolling(window).min() 49 | 50 | def ts_max(x,window): 51 | return x.rolling(window).max() 52 | 53 | def ts_min_ind(x,window): 54 | return x.rolling(window).apply(lambda w :np.argmin(w)) 55 | 56 | def ts_max_ind(x,window): 57 | return x.rolling(window).apply(lambda w :np.argmax(w)) 58 | 59 | def ts_rank(x,window): 60 | return x.rolling(window).apply(lambda w :rankdata(w)[-1]) 61 | 62 | def ts_pct_change(x,window): 63 | return x.pct_change(window).sum() 64 | ##################二元函数######################## 65 | 66 | ##################三元函数######################## 67 | def add(x,y): 68 | return np.add(x,y) 69 | def sub(x,y): 70 | return np.subtract(x,y) 71 | def mul(x,y): 72 | return np.multiply(x,y) 73 | def div(x,y): 74 | return np.divide(x,y) 75 | ##################三元函数######################## 76 | ##################元函数######################## 77 | def corr(x,y,window=5): 78 | return x.rolling(window).corr(y) 79 | def cov(x,y,window=5): 80 | return x.rolling(window).cov(y) 81 | ##################4元函数######################## 82 | def vwap(h,l,v): 83 | return div((v*(h+l)/2).cumsum() , v.cumsum()) 84 | 85 | #################TA_Lib############################# 86 | def EMA(x,window): 87 | return ta.EMA(x,window) 88 | def MACD(x, fastperiod=12, slowperiod=26, signalperiod=9): 89 | return ta.MACD(x,fastperiod=12, slowperiod=26, signalperiod=9) 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_15A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_15A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_15B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_15B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_19A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_19A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_19B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_19B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_1A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_1A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_1B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_1B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_20A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_20A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_20B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_20B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_21A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_21A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_21B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_21B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_22A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_22A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_22B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_22B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_23A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_23A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_23B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_23B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_24A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_24A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_24B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_24B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_26A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_26A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_26B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_26B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_27A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_27A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_27B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_27B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_30A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_30A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_30B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_30B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_31A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_31A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_31B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_31B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_32A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_32A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_32B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_32B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_34A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_34A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_34B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_34B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_35A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_35A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_35B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_35B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_36A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_36A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_36B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_36B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_37A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_37A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_37B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_37B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_39A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_39A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_39B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_39B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_3A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_3A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_3B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_3B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_48A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_48A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_48B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_48B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_49A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_49A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_49B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_49B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_4A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_4A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_4B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_4B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_50A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_50A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_50B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_50B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_51A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_51A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_51B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_51B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_53A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_53A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_53B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_53B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_54A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_54A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_54B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_54B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_55A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_55A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_55B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_55B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_56A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_56A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_56B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_56B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_57A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_57A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_57B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_57B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_59A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_59A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_59B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_59B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_60A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_60A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_60B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_60B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_63A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_63A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_63B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_63B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_64A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_64A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_64B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_64B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_65A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_65A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_65B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_65B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_66A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_66A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_66B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_66B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_67A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_67A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_67B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_67B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_68A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_68A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_68B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_68B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_6A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_6A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_6B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_6B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_71A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_71A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_71B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_71B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_72A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_72A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_72B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_72B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_73A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_73A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_73B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_73B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_76A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_76A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_76B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_76B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_77A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_77A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_77B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_77B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_79A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_79A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_79B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_79B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_7A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_7A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_7B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_7B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_80A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_80A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_80B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_80B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_82A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_82A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_82B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_82B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_8A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_8A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_8B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_8B.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_9A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_9A.png -------------------------------------------------------------------------------- /factor_fig/alpha_cl_jiangtiantu_9B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiangtiantu/factorhub/0f30d9b301eff32cc252ab0d4b39cc9e99fbfab3/factor_fig/alpha_cl_jiangtiantu_9B.png --------------------------------------------------------------------------------