├── .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 |
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 |
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 | 
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 |
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 |
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 | 
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
--------------------------------------------------------------------------------