Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
A
alpha-mind
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Dr.李
alpha-mind
Commits
d64c7b2e
Unverified
Commit
d64c7b2e
authored
Apr 17, 2018
by
iLampard
Committed by
GitHub
Apr 17, 2018
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #9 from alpha-miner/master
merge update
parents
a1cc7865
69b2d0d7
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
1546 additions
and
97 deletions
+1546
-97
composer.py
alphamind/model/composer.py
+21
-5
data_preparing.py
alphamind/model/data_preparing.py
+28
-27
linearmodel.py
alphamind/model/linearmodel.py
+7
-0
modelbase.py
alphamind/model/modelbase.py
+4
-0
test_linearmodel.py
alphamind/tests/model/test_linearmodel.py
+12
-0
Example 12 - Machine Learning Model Prediction.ipynb
...ooks/Example 12 - Machine Learning Model Prediction.ipynb
+789
-0
Example 2 - Strategy Analysis.ipynb
notebooks/Example 2 - Strategy Analysis.ipynb
+213
-28
Example 3 - Multi Weight Gap Comparison.ipynb
notebooks/Example 3 - Multi Weight Gap Comparison.ipynb
+192
-14
Example 4 - Single Factor Analysis.ipynb
notebooks/Example 4 - Single Factor Analysis.ipynb
+156
-11
市场以及策略回顾_2018-03-21.md
report/策略报告/市场以及策略回顾_2018-03-21.md
+124
-12
No files found.
alphamind/model/composer.py
View file @
d64c7b2e
...
...
@@ -188,15 +188,28 @@ class Composer(object):
codes
=
x
.
index
return
pd
.
DataFrame
(
model
.
predict
(
x_values
)
.
flatten
(),
index
=
codes
)
def
score
(
self
,
ref_date
:
str
,
x
:
pd
.
DataFrame
=
None
,
y
:
np
.
ndarray
=
None
)
->
float
:
def
score
(
self
,
ref_date
:
str
,
x
:
pd
.
DataFrame
=
None
,
y
:
np
.
ndarray
=
None
,
d_type
:
str
=
'test'
)
->
float
:
model
=
self
.
_fetch_latest_model
(
ref_date
)
if
x
is
None
:
predict_data
=
self
.
data_meta
.
fetch_predict_data
(
ref_date
,
model
)
x
=
predict_data
[
'predict'
][
'x'
]
if
y
is
None
:
y
=
predict_data
[
'predict'
][
'y'
]
if
d_type
==
'test'
:
test_data
=
self
.
data_meta
.
fetch_predict_data
(
ref_date
,
model
)
x
=
test_data
[
'predict'
][
'x'
]
if
y
is
None
:
y
=
test_data
[
'predict'
][
'y'
]
else
:
test_data
=
self
.
data_meta
.
fetch_train_data
(
ref_date
,
model
)
x
=
test_data
[
'train'
][
'x'
]
if
y
is
None
:
y
=
test_data
[
'train'
][
'y'
]
return
model
.
score
(
x
,
y
)
def
ic
(
self
,
ref_date
)
->
float
:
model
=
self
.
_fetch_latest_model
(
ref_date
)
test_data
=
self
.
data_meta
.
fetch_predict_data
(
ref_date
,
model
)
x
=
test_data
[
'predict'
][
'x'
]
y
=
test_data
[
'predict'
][
'y'
]
return
model
.
ic
(
x
,
y
)
def
_fetch_latest_model
(
self
,
ref_date
)
->
ModelBase
:
if
self
.
is_updated
:
sorted_keys
=
self
.
sorted_keys
...
...
@@ -208,6 +221,9 @@ class Composer(object):
latest_index
=
bisect
.
bisect_left
(
sorted_keys
,
ref_date
)
-
1
return
self
.
models
[
sorted_keys
[
latest_index
]]
def
__getitem__
(
self
,
ref_date
)
->
ModelBase
:
return
self
.
models
[
ref_date
]
def
save
(
self
)
->
dict
:
return
dict
(
alpha_model
=
self
.
alpha_model
.
save
(),
...
...
alphamind/model/data_preparing.py
View file @
d64c7b2e
...
...
@@ -28,7 +28,6 @@ from alphamind.utilities import map_freq
def
_merge_df
(
engine
,
names
,
factor_df
,
target_df
,
universe
,
dates
,
risk_model
,
neutralized_risk
):
risk_df
=
engine
.
fetch_risk_model_range
(
universe
,
dates
=
dates
,
risk_model
=
risk_model
)[
1
]
alpha_logger
.
info
(
"risk data loading finished"
)
used_neutralized_risk
=
list
(
set
(
total_risk_factors
)
.
difference
(
names
))
risk_df
=
risk_df
[[
'trade_date'
,
'code'
]
+
used_neutralized_risk
]
.
dropna
()
target_df
=
pd
.
merge
(
target_df
,
risk_df
,
on
=
[
'trade_date'
,
'code'
])
...
...
@@ -209,32 +208,34 @@ def fetch_data_package(engine: SqlEngine,
neutralized_risk
:
Iterable
[
str
]
=
None
,
risk_model
:
str
=
'short'
,
pre_process
:
Iterable
[
object
]
=
None
,
post_process
:
Iterable
[
object
]
=
None
)
->
dict
:
post_process
:
Iterable
[
object
]
=
None
,
fit_target
:
Union
[
Transformer
,
object
]
=
None
)
->
dict
:
alpha_logger
.
info
(
"Starting data package fetching ..."
)
transformer
=
Transformer
(
alpha_factors
)
names
=
transformer
.
names
dates
,
return
_df
,
factor_df
=
prepare_data
(
engine
,
dates
,
target
_df
,
factor_df
=
prepare_data
(
engine
,
transformer
,
start_date
,
end_date
,
frequency
,
universe
,
benchmark
,
warm_start
)
warm_start
,
fit_target
=
fit_target
)
return
_df
,
dates
,
date_label
,
risk_exp
,
x_values
,
y_values
,
train_x
,
train_y
,
codes
=
\
_merge_df
(
engine
,
names
,
factor_df
,
return
_df
,
universe
,
dates
,
risk_model
,
neutralized_risk
)
target
_df
,
dates
,
date_label
,
risk_exp
,
x_values
,
y_values
,
train_x
,
train_y
,
codes
=
\
_merge_df
(
engine
,
names
,
factor_df
,
target
_df
,
universe
,
dates
,
risk_model
,
neutralized_risk
)
alpha_logger
.
info
(
"data merging finished"
)
return
_df
[
'weight'
]
=
train_x
[
'weight'
]
return
_df
[
'industry'
]
=
train_x
[
'industry'
]
return
_df
[
'industry_code'
]
=
train_x
[
'industry_code'
]
return
_df
[
'isOpen'
]
=
train_x
[
'isOpen'
]
target
_df
[
'weight'
]
=
train_x
[
'weight'
]
target
_df
[
'industry'
]
=
train_x
[
'industry'
]
target
_df
[
'industry_code'
]
=
train_x
[
'industry_code'
]
target
_df
[
'isOpen'
]
=
train_x
[
'isOpen'
]
if
neutralized_risk
:
for
i
,
name
in
enumerate
(
neutralized_risk
):
return
_df
.
loc
[:,
name
]
=
risk_exp
[:,
i
]
target
_df
.
loc
[:,
name
]
=
risk_exp
[:,
i
]
alpha_logger
.
info
(
"Loading data is finished"
)
...
...
@@ -254,7 +255,7 @@ def fetch_data_package(engine: SqlEngine,
ret
=
dict
()
ret
[
'x_names'
]
=
names
ret
[
'settlement'
]
=
return
_df
ret
[
'settlement'
]
=
target
_df
ret
[
'train'
]
=
{
'x'
:
train_x_buckets
,
'y'
:
train_y_buckets
,
'risk'
:
train_risk_buckets
}
ret
[
'predict'
]
=
{
'x'
:
predict_x_buckets
,
'y'
:
predict_y_buckets
,
'risk'
:
predict_risk_buckets
,
'code'
:
predict_codes_bucket
}
...
...
@@ -266,7 +267,7 @@ def fetch_train_phase(engine,
ref_date
,
frequency
,
universe
,
batch
,
batch
=
1
,
neutralized_risk
:
Iterable
[
str
]
=
None
,
risk_model
:
str
=
'short'
,
pre_process
:
Iterable
[
object
]
=
None
,
...
...
@@ -279,7 +280,7 @@ def fetch_train_phase(engine,
transformer
=
Transformer
(
alpha_factors
)
p
=
Period
(
frequency
)
p
=
Period
(
length
=-
(
warm_start
+
batch
+
1
)
*
p
.
length
(),
units
=
p
.
units
())
p
=
Period
(
length
=-
(
warm_start
+
batch
)
*
p
.
length
(),
units
=
p
.
units
())
start_date
=
advanceDateByCalendar
(
'china.sse'
,
ref_date
,
p
,
BizDayConventions
.
Following
)
dates
=
makeSchedule
(
start_date
,
...
...
@@ -311,10 +312,10 @@ def fetch_train_phase(engine,
if
dates
[
-
1
]
==
dt
.
datetime
.
strptime
(
ref_date
,
'
%
Y-
%
m-
%
d'
):
pyFinAssert
(
len
(
dates
)
>=
2
,
ValueError
,
"No previous data for training for the date {0}"
.
format
(
ref_date
))
end
=
dates
[
-
2
]
start
=
dates
[
-
batch
-
2
]
if
batch
<=
len
(
dates
)
-
2
else
dates
[
0
]
start
=
dates
[
-
batch
-
1
]
if
batch
<=
len
(
dates
)
-
1
else
dates
[
0
]
else
:
end
=
dates
[
-
1
]
start
=
dates
[
-
batch
-
1
]
if
batch
<=
len
(
dates
)
else
dates
[
0
]
start
=
dates
[
-
batch
]
if
batch
<=
len
(
dates
)
else
dates
[
0
]
index
=
(
date_label
>=
start
)
&
(
date_label
<=
end
)
this_raw_x
=
x_values
[
index
]
...
...
@@ -347,7 +348,7 @@ def fetch_predict_phase(engine,
ref_date
,
frequency
,
universe
,
batch
,
batch
=
1
,
neutralized_risk
:
Iterable
[
str
]
=
None
,
risk_model
:
str
=
'short'
,
pre_process
:
Iterable
[
object
]
=
None
,
...
...
@@ -361,7 +362,7 @@ def fetch_predict_phase(engine,
transformer
=
Transformer
(
alpha_factors
)
p
=
Period
(
frequency
)
p
=
Period
(
length
=-
(
warm_start
+
batch
)
*
p
.
length
(),
units
=
p
.
units
())
p
=
Period
(
length
=-
(
warm_start
+
batch
-
1
)
*
p
.
length
(),
units
=
p
.
units
())
start_date
=
advanceDateByCalendar
(
'china.sse'
,
ref_date
,
p
,
BizDayConventions
.
Following
)
dates
=
makeSchedule
(
start_date
,
...
...
@@ -458,15 +459,15 @@ def fetch_predict_phase(engine,
if
__name__
==
'__main__'
:
from
alphamind.api
import
risk_styles
,
industry_styles
,
standardize
engine
=
SqlEngine
(
'postgresql+psycopg2://postgres:
we083826@localhost
/alpha'
)
engine
=
SqlEngine
(
'postgresql+psycopg2://postgres:
A12345678!@10.63.6.220
/alpha'
)
universe
=
Universe
(
'zz500'
,
[
'hs300'
,
'zz500'
])
neutralized_risk
=
risk_styles
+
industry_styles
res
=
fetch_
predict
_phase
(
engine
,
[
'ep_q'
],
'2012-01-05'
,
'5b'
,
universe
,
16
,
neutralized_risk
=
neutralized_risk
,
post_process
=
[
standardize
],
fit_target
=
'closePrice'
)
res
=
fetch_
train
_phase
(
engine
,
[
'ep_q'
],
'2012-01-05'
,
'5b'
,
universe
,
2
,
neutralized_risk
=
neutralized_risk
,
post_process
=
[
standardize
],
fit_target
=
'closePrice'
)
print
(
res
)
alphamind/model/linearmodel.py
View file @
d64c7b2e
...
...
@@ -27,6 +27,13 @@ class ConstLinearModelImpl(object):
def
predict
(
self
,
x
:
np
.
ndarray
):
return
x
@
self
.
weights
def
score
(
self
,
x
:
np
.
ndarray
,
y
:
np
.
ndarray
)
->
float
:
y_hat
=
self
.
predict
(
x
)
y_bar
=
y
.
mean
()
ssto
=
((
y
-
y_bar
)
**
2
)
.
sum
()
sse
=
((
y
-
y_hat
)
**
2
)
.
sum
()
return
1.
-
sse
/
ssto
class
ConstLinearModel
(
ModelBase
):
...
...
alphamind/model/modelbase.py
View file @
d64c7b2e
...
...
@@ -49,6 +49,10 @@ class ModelBase(metaclass=abc.ABCMeta):
def
score
(
self
,
x
:
pd
.
DataFrame
,
y
:
np
.
ndarray
)
->
float
:
return
self
.
impl
.
score
(
x
[
self
.
features
]
.
values
,
y
)
def
ic
(
self
,
x
:
pd
.
DataFrame
,
y
:
np
.
ndarray
)
->
float
:
predict_y
=
self
.
impl
.
predict
(
x
[
self
.
features
]
.
values
)
return
np
.
corrcoef
(
predict_y
,
y
)[
0
,
1
]
@
abc
.
abstractmethod
def
save
(
self
)
->
dict
:
...
...
alphamind/tests/model/test_linearmodel.py
View file @
d64c7b2e
...
...
@@ -48,6 +48,18 @@ class TestLinearModel(unittest.TestCase):
self
.
assertEqual
(
model
.
features
,
new_model
.
features
)
np
.
testing
.
assert_array_almost_equal
(
model
.
weights
,
new_model
.
weights
)
def
test_const_linear_model_score
(
self
):
model
=
LinearRegression
([
'a'
,
'b'
,
'c'
],
fit_intercept
=
False
)
model
.
fit
(
self
.
train_x
,
self
.
train_y
)
expected_score
=
model
.
score
(
self
.
train_x
,
self
.
train_y
)
const_model
=
ConstLinearModel
(
features
=
[
'a'
,
'b'
,
'c'
],
weights
=
dict
(
zip
(
model
.
features
,
model
.
weights
)))
calculated_score
=
const_model
.
score
(
self
.
train_x
,
self
.
train_y
)
self
.
assertAlmostEqual
(
expected_score
,
calculated_score
)
def
test_linear_regression
(
self
):
model
=
LinearRegression
([
'a'
,
'b'
,
'c'
],
fit_intercept
=
False
)
model
.
fit
(
self
.
train_x
,
self
.
train_y
)
...
...
notebooks/Example 12 - Machine Learning Model Prediction.ipynb
0 → 100644
View file @
d64c7b2e
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"> 本例展示如何在alpha-mind中使用机器学习模型"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"\n",
"import datetime as dt\n",
"import numpy as np\n",
"import pandas as pd\n",
"from alphamind.api import *\n",
"from PyFin.api import *"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 数据配置\n",
"------------"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"freq = '60b'\n",
"universe = Universe('custom', ['zz800'])\n",
"batch = 1\n",
"neutralized_risk = industry_styles\n",
"risk_model = 'short'\n",
"pre_process = [winsorize_normal, standardize]\n",
"post_process = [standardize]\n",
"warm_start = 3\n",
"data_source = None\n",
"horizon = map_freq(freq)\n",
"\n",
"engine = SqlEngine(data_source)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"我们使用当期的`roe_q`因子,来尝试预测未来大概一个月以后的`roe_q`因子。\n",
"\n",
"* 训练的股票池为`zz800`;;\n",
"* 因子都经过中性化以及标准化等预处理;\n",
"* 对于线性模型,我们以20个工作日为一个时间间隔,用过去4期的数据作为训练用特征。"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"fit_intercept = True\n",
"kernal_feature = 'roe_q'\n",
"regress_features = {kernal_feature: LAST(kernal_feature),\n",
" kernal_feature + '_l1': SHIFT(kernal_feature, 1),\n",
" kernal_feature + '_l2': SHIFT(kernal_feature, 2),\n",
" kernal_feature + '_l3': SHIFT(kernal_feature, 3)\n",
" }\n",
"const_features = {kernal_feature: LAST(kernal_feature)}\n",
"fit_target = [kernal_feature]\n",
"\n",
"data_meta = DataMeta(freq=freq,\n",
" universe=universe,\n",
" batch=batch,\n",
" neutralized_risk=neutralized_risk,\n",
" risk_model=risk_model,\n",
" pre_process=pre_process,\n",
" post_process=post_process,\n",
" warm_start=warm_start,\n",
" data_source=data_source)\n",
"\n",
"alpha_model = LinearRegression(features=regress_features, fit_intercept=True, fit_target=fit_target)\n",
"composer = Composer(alpha_model=alpha_model, data_meta=data_meta)\n",
"\n",
"start_date = '2011-01-01'\n",
"end_date = '2018-01-01'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 指标与时间序列相关性分析\n",
"--------------\n",
"\n",
"在本段中,我们要尝试回答如下的问题:**对于考察的指标,是当期指标与下期指标哪个对于下期收益的预测性更好?**\n",
"\n",
"这里,假设下期日期为`T`,考察周期为`M`,则:\n",
"\n",
"* 当期指标为,`T - M`时的指标值;\n",
"* 下期指标为,`T`时的指标值;\n",
"* 下期收益为,`T - M`至`T`时的区间收益;\n",
"* 我们同时检验了下期数据与当期数据差值与下期收益的相关性。"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"2018-04-16 19:44:49,889 - ALPHA_MIND - INFO - Starting data package fetching ...\n",
"2018-04-16 19:44:50,436 - ALPHA_MIND - INFO - factor data loading finished\n",
"2018-04-16 19:44:51,753 - ALPHA_MIND - INFO - fit target data loading finished\n",
"2018-04-16 19:44:51,921 - ALPHA_MIND - INFO - industry data loading finished\n",
"2018-04-16 19:44:52,029 - ALPHA_MIND - INFO - benchmark data loading finished\n",
"2018-04-16 19:44:53,205 - ALPHA_MIND - INFO - data merging finished\n",
"2018-04-16 19:44:53,403 - ALPHA_MIND - INFO - Loading data is finished\n",
"2018-04-16 19:44:53,523 - ALPHA_MIND - INFO - Data processing is finished\n"
]
}
],
"source": [
"data_package1 = fetch_data_package(engine,\n",
" alpha_factors=[kernal_feature],\n",
" start_date=start_date,\n",
" end_date=end_date,\n",
" frequency=freq,\n",
" universe=universe,\n",
" benchmark=906,\n",
" warm_start=warm_start,\n",
" batch=batch,\n",
" neutralized_risk=neutralized_risk,\n",
" pre_process=pre_process,\n",
" post_process=post_process,\n",
" fit_target=fit_target)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"t_m_factor = data_package1['predict']['x']\n",
"t_factor = data_package1['predict']['y']\n",
"codes_list1 = data_package1['predict']['code']"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"2018-04-16 19:44:53,628 - ALPHA_MIND - INFO - Starting data package fetching ...\n",
"2018-04-16 19:44:54,124 - ALPHA_MIND - INFO - factor data loading finished\n",
"2018-04-16 19:46:01,930 - ALPHA_MIND - INFO - fit target data loading finished\n",
"2018-04-16 19:46:02,091 - ALPHA_MIND - INFO - industry data loading finished\n",
"2018-04-16 19:46:02,197 - ALPHA_MIND - INFO - benchmark data loading finished\n",
"2018-04-16 19:46:03,408 - ALPHA_MIND - INFO - data merging finished\n",
"2018-04-16 19:46:03,614 - ALPHA_MIND - INFO - Loading data is finished\n",
"2018-04-16 19:46:03,656 - ALPHA_MIND - INFO - Data processing is finished\n"
]
}
],
"source": [
"data_package2 = fetch_data_package(engine,\n",
" alpha_factors=[kernal_feature],\n",
" start_date=start_date,\n",
" end_date=end_date,\n",
" frequency=freq,\n",
" universe=universe,\n",
" benchmark=906,\n",
" warm_start=warm_start,\n",
" batch=1,\n",
" neutralized_risk=neutralized_risk,\n",
" pre_process=pre_process,\n",
" post_process=post_process)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"t_return = data_package2['predict']['y']\n",
"codes_list2 = data_package2['predict']['code']"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"total_data = pd.DataFrame(columns=['dx', 'T-M', 'T', 'Δ'])\n",
"\n",
"for key in t_m_factor.keys():\n",
" t_m = t_m_factor[key].values.flatten()\n",
" t = t_factor[key].flatten()\n",
" ret = t_return[key].flatten()\n",
" \n",
" df1 = pd.DataFrame({'T-M': t_m, 'T': t}, index=codes_list1[key])\n",
" df2 = pd.DataFrame({'dx': ret}, index=codes_list2[key])\n",
" \n",
" df = pd.merge(df1, df2, left_index=True, right_index=True)\n",
" df['Δ'] = df['T'] - df['T-M']\n",
" total_data.loc[key, ['dx', 'T-M', 'T', 'Δ']] = df.corr().loc['dx'][['dx', 'T-M', 'T', 'Δ']]"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"dx 1.000000\n",
"T-M 0.053046\n",
"T 0.124049\n",
"Δ 0.076091\n",
"dtype: float64"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"total_data.mean()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 模型预测\n",
"-----------"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"ref_date = '2017-01-31'\n",
"ref_date = adjustDateByCalendar('china.sse', ref_date).strftime('%Y-%m-%d')\n",
"composer.train(ref_date)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Testing IC: 0.5464\n"
]
}
],
"source": [
"print(\"Testing IC: {0:.4f}\".format(composer.ic(ref_date=ref_date)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 模型对比 (线性回归模型 v.s. Naive - 常数线性模型)\n",
"------------------"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"const_model = ConstLinearModel(features=const_features, weights={kernal_feature: 1.}, fit_target=fit_target)\n",
"regression_model = LinearRegression(features=regress_features, fit_intercept=fit_intercept, fit_target=fit_target)\n",
"\n",
"const_composer = Composer(alpha_model=const_model, data_meta=data_meta)\n",
"regression_composer = Composer(alpha_model=regression_model, data_meta=data_meta)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"const_composer.train(ref_date)\n",
"regression_composer.train(ref_date)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Const. Testing IC: 0.5529\n",
"Regression Testing IC: 0.5464\n"
]
}
],
"source": [
"print(\"\\nConst. Testing IC: {0:.4f}\".format(const_composer.ic(ref_date=ref_date)))\n",
"print(\"Regression Testing IC: {0:.4f}\".format(regression_composer.ic(ref_date=ref_date)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 模型时间序列\n",
"-------------------------"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"通过比较在测试集的结果,我们观察如下两个模型的表现:\n",
"\n",
"* Naive Model:简单的使用因子上期值作为当期值的预测;\n",
"* 线性回归模型:利用过去四期的因子值回归后得到模型,然后用这个模型预测当期值;"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"2010-07-07 Const. Testing IC: 0.5775\n",
"2010-07-07 Regression Testing IC: 0.5750\n",
"\n",
"2010-10-11 Const. Testing IC: 0.6586\n",
"2010-10-11 Regression Testing IC: 0.6907\n",
"\n",
"2011-01-04 Const. Testing IC: 0.5799\n",
"2011-01-04 Regression Testing IC: 0.5460\n",
"\n",
"2011-04-07 Const. Testing IC: 0.4843\n",
"2011-04-07 Regression Testing IC: 0.6691\n",
"\n",
"2011-07-04 Const. Testing IC: 0.5862\n",
"2011-07-04 Regression Testing IC: 0.6395\n",
"\n",
"2011-09-27 Const. Testing IC: 0.6134\n",
"2011-09-27 Regression Testing IC: 0.6809\n",
"\n",
"2011-12-27 Const. Testing IC: 0.6155\n",
"2011-12-27 Regression Testing IC: 0.5721\n",
"\n",
"2012-03-29 Const. Testing IC: 0.3999\n",
"2012-03-29 Regression Testing IC: 0.5205\n",
"\n",
"2012-06-29 Const. Testing IC: 0.0054\n",
"2012-06-29 Regression Testing IC: 0.0579\n",
"\n",
"2012-09-21 Const. Testing IC: 0.6827\n",
"2012-09-21 Regression Testing IC: 0.6291\n",
"\n",
"2012-12-21 Const. Testing IC: 0.7544\n",
"2012-12-21 Regression Testing IC: 0.2699\n",
"\n",
"2013-03-27 Const. Testing IC: 0.4713\n",
"2013-03-27 Regression Testing IC: 0.6270\n",
"\n",
"2013-07-01 Const. Testing IC: 0.6004\n",
"2013-07-01 Regression Testing IC: 0.6572\n",
"\n",
"2013-09-25 Const. Testing IC: 0.6586\n",
"2013-09-25 Regression Testing IC: 0.6992\n",
"\n",
"2013-12-25 Const. Testing IC: 0.2487\n",
"2013-12-25 Regression Testing IC: 0.2631\n",
"\n",
"2014-03-27 Const. Testing IC: 0.3904\n",
"2014-03-27 Regression Testing IC: 0.6418\n",
"\n",
"2014-06-25 Const. Testing IC: 0.5018\n",
"2014-06-25 Regression Testing IC: 0.6655\n",
"\n",
"2014-09-18 Const. Testing IC: 0.6088\n",
"2014-09-18 Regression Testing IC: 0.7215\n",
"\n",
"2014-12-18 Const. Testing IC: 0.7788\n",
"2014-12-18 Regression Testing IC: 0.6722\n",
"\n",
"2015-03-23 Const. Testing IC: 0.4714\n",
"2015-03-23 Regression Testing IC: 0.7190\n",
"\n",
"2015-06-17 Const. Testing IC: 0.6239\n",
"2015-06-17 Regression Testing IC: 0.6565\n",
"\n",
"2015-09-14 Const. Testing IC: 0.5984\n",
"2015-09-14 Regression Testing IC: 0.6728\n",
"\n",
"2015-12-14 Const. Testing IC: 0.9509\n",
"2015-12-14 Regression Testing IC: 0.8566\n",
"\n",
"2016-03-15 Const. Testing IC: 0.4935\n",
"2016-03-15 Regression Testing IC: 0.6239\n",
"\n",
"2016-06-13 Const. Testing IC: 0.5908\n",
"2016-06-13 Regression Testing IC: 0.5992\n",
"\n",
"2016-09-05 Const. Testing IC: 0.6832\n",
"2016-09-05 Regression Testing IC: 0.6782\n",
"\n",
"2016-12-07 Const. Testing IC: 0.9502\n",
"2016-12-07 Regression Testing IC: 0.9013\n",
"\n",
"2017-03-09 Const. Testing IC: 0.5316\n",
"2017-03-09 Regression Testing IC: 0.5288\n",
"\n",
"2017-06-08 Const. Testing IC: 0.5680\n",
"2017-06-08 Regression Testing IC: 0.5823\n",
"\n",
"2017-08-31 Const. Testing IC: 0.6802\n",
"2017-08-31 Regression Testing IC: 0.6701\n",
"\n",
"2017-11-30 Const. Testing IC: 0.9940\n",
"2017-11-30 Regression Testing IC: 0.8682\n"
]
}
],
"source": [
"model_dates = [d.strftime('%Y-%m-%d') for d in list(data_package2['predict']['x'].keys())]\n",
"\n",
"model_df = pd.DataFrame(columns=['naive', 'regress', 'naive ic.', 'regress ic.'])\n",
"\n",
"for ref_date in model_dates:\n",
" const_composer.train(ref_date)\n",
" regression_composer.train(ref_date)\n",
" \n",
" model_df.loc[ref_date, 'naive'] = const_composer[ref_date]\n",
" model_df.loc[ref_date, 'regress'] = regression_composer[ref_date]\n",
" model_df.loc[ref_date, 'naive ic.'] = const_composer.ic(ref_date=ref_date)\n",
" model_df.loc[ref_date, 'regress ic.'] = regression_composer.ic(ref_date=ref_date)\n",
" print(\"\\n{1} Const. Testing IC: {0:.4f}\".format(model_df.loc[ref_date, 'naive ic.'], ref_date))\n",
" print(\"{1} Regression Testing IC: {0:.4f}\".format( model_df.loc[ref_date, 'regress ic.'], ref_date))"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>naive ic.</th>\n",
" <th>regress ic.</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>0.592022</td>\n",
" <td>0.617903</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>0.193060</td>\n",
" <td>0.168037</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" naive ic. regress ic.\n",
"mean 0.592022 0.617903\n",
"std 0.193060 0.168037"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model_df[['naive ic.', 'regress ic.']].agg(['mean', 'std'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"在这个例子中,线性回归模型的IC值略微高于Naive模型。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 回测( simple long short strategy)\n",
"--------------------------"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"industry_name = 'sw_adj'\n",
"industry_level = 1\n",
"\n",
"industry_names = industry_list(industry_name, industry_level)\n",
"industry_total = engine.fetch_industry_matrix_range(universe, dates=model_dates, category=industry_name, level=industry_level)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"2018-04-16 19:48:10,968 - ALPHA_MIND - INFO - 2010-07-07 full re-balance: 799\n",
"2018-04-16 19:48:12,597 - ALPHA_MIND - INFO - 2010-07-07 is finished\n",
"2018-04-16 19:48:12,606 - ALPHA_MIND - INFO - 2010-10-11 full re-balance: 798\n",
"2018-04-16 19:48:14,369 - ALPHA_MIND - INFO - 2010-10-11 is finished\n",
"2018-04-16 19:48:14,379 - ALPHA_MIND - INFO - 2011-01-04 full re-balance: 799\n",
"2018-04-16 19:48:16,279 - ALPHA_MIND - INFO - 2011-01-04 is finished\n",
"2018-04-16 19:48:16,287 - ALPHA_MIND - INFO - 2011-04-07 full re-balance: 798\n",
"2018-04-16 19:48:18,041 - ALPHA_MIND - INFO - 2011-04-07 is finished\n",
"2018-04-16 19:48:18,050 - ALPHA_MIND - INFO - 2011-07-04 full re-balance: 798\n",
"2018-04-16 19:48:19,781 - ALPHA_MIND - INFO - 2011-07-04 is finished\n",
"2018-04-16 19:48:19,790 - ALPHA_MIND - INFO - 2011-09-27 full re-balance: 797\n",
"2018-04-16 19:48:21,799 - ALPHA_MIND - INFO - 2011-09-27 is finished\n",
"2018-04-16 19:48:21,807 - ALPHA_MIND - INFO - 2011-12-27 full re-balance: 798\n",
"2018-04-16 19:48:23,524 - ALPHA_MIND - INFO - 2011-12-27 is finished\n",
"2018-04-16 19:48:23,532 - ALPHA_MIND - INFO - 2012-03-29 full re-balance: 796\n",
"2018-04-16 19:48:25,323 - ALPHA_MIND - INFO - 2012-03-29 is finished\n",
"2018-04-16 19:48:25,331 - ALPHA_MIND - INFO - 2012-06-29 full re-balance: 798\n",
"2018-04-16 19:48:27,215 - ALPHA_MIND - INFO - 2012-06-29 is finished\n",
"2018-04-16 19:48:27,225 - ALPHA_MIND - INFO - 2012-09-21 full re-balance: 799\n",
"2018-04-16 19:48:28,993 - ALPHA_MIND - INFO - 2012-09-21 is finished\n",
"2018-04-16 19:48:29,001 - ALPHA_MIND - INFO - 2012-12-21 full re-balance: 799\n",
"2018-04-16 19:48:30,722 - ALPHA_MIND - INFO - 2012-12-21 is finished\n",
"2018-04-16 19:48:30,730 - ALPHA_MIND - INFO - 2013-03-27 full re-balance: 800\n",
"2018-04-16 19:48:32,704 - ALPHA_MIND - INFO - 2013-03-27 is finished\n",
"2018-04-16 19:48:32,712 - ALPHA_MIND - INFO - 2013-07-01 full re-balance: 800\n",
"2018-04-16 19:48:34,441 - ALPHA_MIND - INFO - 2013-07-01 is finished\n",
"2018-04-16 19:48:34,450 - ALPHA_MIND - INFO - 2013-09-25 full re-balance: 799\n",
"2018-04-16 19:48:36,183 - ALPHA_MIND - INFO - 2013-09-25 is finished\n",
"2018-04-16 19:48:36,191 - ALPHA_MIND - INFO - 2013-12-25 full re-balance: 800\n",
"2018-04-16 19:48:38,121 - ALPHA_MIND - INFO - 2013-12-25 is finished\n",
"2018-04-16 19:48:38,130 - ALPHA_MIND - INFO - 2014-03-27 full re-balance: 800\n",
"2018-04-16 19:48:39,910 - ALPHA_MIND - INFO - 2014-03-27 is finished\n",
"2018-04-16 19:48:39,920 - ALPHA_MIND - INFO - 2014-06-25 full re-balance: 800\n",
"2018-04-16 19:48:41,848 - ALPHA_MIND - INFO - 2014-06-25 is finished\n",
"2018-04-16 19:48:41,856 - ALPHA_MIND - INFO - 2014-09-18 full re-balance: 800\n",
"2018-04-16 19:48:43,598 - ALPHA_MIND - INFO - 2014-09-18 is finished\n",
"2018-04-16 19:48:43,606 - ALPHA_MIND - INFO - 2014-12-18 full re-balance: 800\n",
"2018-04-16 19:48:45,300 - ALPHA_MIND - INFO - 2014-12-18 is finished\n",
"2018-04-16 19:48:45,309 - ALPHA_MIND - INFO - 2015-03-23 full re-balance: 799\n",
"2018-04-16 19:48:47,258 - ALPHA_MIND - INFO - 2015-03-23 is finished\n",
"2018-04-16 19:48:47,267 - ALPHA_MIND - INFO - 2015-06-17 full re-balance: 800\n",
"2018-04-16 19:48:48,995 - ALPHA_MIND - INFO - 2015-06-17 is finished\n",
"2018-04-16 19:48:49,004 - ALPHA_MIND - INFO - 2015-09-14 full re-balance: 800\n",
"2018-04-16 19:48:50,814 - ALPHA_MIND - INFO - 2015-09-14 is finished\n",
"2018-04-16 19:48:50,822 - ALPHA_MIND - INFO - 2015-12-14 full re-balance: 800\n",
"2018-04-16 19:48:52,784 - ALPHA_MIND - INFO - 2015-12-14 is finished\n",
"2018-04-16 19:48:52,792 - ALPHA_MIND - INFO - 2016-03-15 full re-balance: 799\n",
"2018-04-16 19:48:54,587 - ALPHA_MIND - INFO - 2016-03-15 is finished\n",
"2018-04-16 19:48:54,597 - ALPHA_MIND - INFO - 2016-06-13 full re-balance: 800\n",
"2018-04-16 19:48:56,296 - ALPHA_MIND - INFO - 2016-06-13 is finished\n",
"2018-04-16 19:48:56,307 - ALPHA_MIND - INFO - 2016-09-05 full re-balance: 800\n",
"2018-04-16 19:48:58,297 - ALPHA_MIND - INFO - 2016-09-05 is finished\n",
"2018-04-16 19:48:58,306 - ALPHA_MIND - INFO - 2016-12-07 full re-balance: 800\n",
"2018-04-16 19:49:00,028 - ALPHA_MIND - INFO - 2016-12-07 is finished\n",
"2018-04-16 19:49:00,036 - ALPHA_MIND - INFO - 2017-03-09 full re-balance: 800\n",
"2018-04-16 19:49:01,747 - ALPHA_MIND - INFO - 2017-03-09 is finished\n",
"2018-04-16 19:49:01,754 - ALPHA_MIND - INFO - 2017-06-08 full re-balance: 800\n",
"2018-04-16 19:49:03,679 - ALPHA_MIND - INFO - 2017-06-08 is finished\n",
"2018-04-16 19:49:03,688 - ALPHA_MIND - INFO - 2017-08-31 full re-balance: 800\n",
"2018-04-16 19:49:05,486 - ALPHA_MIND - INFO - 2017-08-31 is finished\n",
"2018-04-16 19:49:05,494 - ALPHA_MIND - INFO - 2017-11-30 full re-balance: 800\n",
"2018-04-16 19:49:07,468 - ALPHA_MIND - INFO - 2017-11-30 is finished\n"
]
}
],
"source": [
"rets1 = []\n",
"rets2 = []\n",
"\n",
"for i, ref_date in enumerate(model_dates):\n",
" py_ref_date = dt.datetime.strptime(ref_date, '%Y-%m-%d')\n",
" industry_matrix = industry_total[industry_total.trade_date == ref_date]\n",
" dx_returns = pd.DataFrame({'dx': data_package2['predict']['y'][py_ref_date].flatten(),\n",
" 'code': data_package2['predict']['code'][py_ref_date].flatten()})\n",
" \n",
" res = pd.merge(dx_returns, industry_matrix, on=['code']).dropna()\n",
" codes = res.code.values.tolist()\n",
" \n",
" alpha_logger.info('{0} full re-balance: {1}'.format(ref_date, len(codes)))\n",
" \n",
" ## naive model\n",
" \n",
" raw_predict1 = const_composer.predict(ref_date).loc[codes]\n",
" er1 = raw_predict1.fillna(raw_predict1.median()).values\n",
" \n",
" target_pos1, _ = er_portfolio_analysis(er1,\n",
" res.industry_name.values,\n",
" None,\n",
" None,\n",
" False,\n",
" None,\n",
" method='ls')\n",
" \n",
" target_pos1['code'] = codes\n",
" result1 = pd.merge(target_pos1, dx_returns, on=['code'])\n",
" ret1 = result1.weight.values @ (np.exp(result1.dx.values) - 1.)\n",
" rets1.append(np.log(1. + ret1))\n",
"\n",
" ## regression model\n",
" \n",
" raw_predict2 = regression_composer.predict(ref_date).loc[codes]\n",
" er2 = raw_predict2.fillna(raw_predict2.median()).values\n",
" \n",
" target_pos2, _ = er_portfolio_analysis(er2,\n",
" res.industry_name.values,\n",
" None,\n",
" None,\n",
" False,\n",
" None,\n",
" method='ls')\n",
" \n",
" target_pos2['code'] = codes\n",
" result2 = pd.merge(target_pos2, dx_returns, on=['code'])\n",
" ret2 = result2.weight.values @ (np.exp(result2.dx.values) - 1.)\n",
" rets2.append(np.log(1. + ret2))\n",
" ## perfect forcast\n",
" \n",
" alpha_logger.info('{0} is finished'.format(ref_date))"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x1b6adc713c8>"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x432 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ret_df = pd.DataFrame({'naive': rets1, 'regress': rets2}, index=model_dates)\n",
"ret_df.loc[advanceDateByCalendar('china.sse', model_dates[-1], freq).strftime('%Y-%m-%d')] = 0.\n",
"ret_df = ret_df.shift(1)\n",
"ret_df.iloc[0] = 0.\n",
"\n",
"ret_df[['naive', 'regress']].cumsum().plot(figsize=(12, 6),\n",
" title='Fixed freq rebalanced: {0}'.format(freq))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.5"
},
"varInspector": {
"cols": {
"lenName": 16,
"lenType": 16,
"lenVar": 40
},
"kernels_config": {
"python": {
"delete_cmd_postfix": "",
"delete_cmd_prefix": "del ",
"library": "var_list.py",
"varRefreshCmd": "print(var_dic_list())"
},
"r": {
"delete_cmd_postfix": ") ",
"delete_cmd_prefix": "rm(",
"library": "var_list.r",
"varRefreshCmd": "cat(var_dic_list()) "
}
},
"types_to_exclude": [
"module",
"function",
"builtin_function_or_method",
"instance",
"_Feature"
],
"window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 2
}
notebooks/Example 2 - Strategy Analysis.ipynb
View file @
d64c7b2e
...
...
@@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
"execution_count":
null
,
"execution_count":
1
,
"metadata": {},
"outputs": [],
"source": [
...
...
@@ -18,29 +18,29 @@
},
{
"cell_type": "code",
"execution_count":
null
,
"execution_count":
14
,
"metadata": {},
"outputs": [],
"source": [
"# Back test parameter settings\n",
"start_date = '2016-01-01'\n",
"end_date = '2018-0
2-24
'\n",
"end_date = '2018-0
3-30
'\n",
"\n",
"freq = '10b'\n",
"industry_lower = 1.\n",
"industry_upper = 1.\n",
"neutralized_risk = industry_styles\n",
"industry_name = 'sw'\n",
"industry_name = 'sw
_adj
'\n",
"industry_level = 1\n",
"turn_over_target_base = 0.4\n",
"benchmark_total_lower = 0.8\n",
"benchmark_total_upper = 1.0\n",
"batch =
0
\n",
"batch =
1
\n",
"horizon = map_freq(freq)\n",
"weight_gap = 0.01\n",
"universe = Universe(\"custom\", ['zz800'])\n",
"data_source = 'postgres+psycopg2://postgres:A12345678!@10.63.6.220/alpha'\n",
"benchmark_code =
905
\n",
"benchmark_code =
300
\n",
"offset = 1\n",
"method = 'risk_neutral'\n",
"target_vol = 0.05\n",
...
...
@@ -53,17 +53,30 @@
},
{
"cell_type": "code",
"execution_count":
null
,
"execution_count":
15
,
"metadata": {},
"outputs": [],
"source": [
"alpha_factors = {\n",
" 'f01': LAST('CFO2EV'),\n",
" 'f02': LAST('EPS'),\n",
"}\n",
" 'f01': LAST('ep_q'),\n",
" 'f02': LAST('roe_q'),\n",
" 'f03': LAST('SGRO'),\n",
" 'f04': LAST('GREV'),\n",
" 'f05': LAST('con_target_price'),\n",
" 'f06': LAST('con_pe_rolling_order'),\n",
" 'f07': LAST('IVR'),\n",
" 'f08': LAST('ILLIQUIDITY'),\n",
" }\n",
"\n",
"weights = dict(f01=1.,\n",
" f02=1.)\n",
" f02=1.,\n",
" f03=1.,\n",
" f04=1.,\n",
" f05=1.,\n",
" f06=-1.,\n",
" f07=0.5,\n",
" f08=0.5,\n",
" )\n",
"\n",
"alpha_model = ConstLinearModel(features=alpha_factors, weights=weights)\n",
"\n",
...
...
@@ -74,7 +87,7 @@
" neutralized_risk=neutralized_risk,\n",
" risk_model='short',\n",
" pre_process=[winsorize_normal, standardize],\n",
" post_process=[
winsorize_normal,
standardize],\n",
" post_process=[standardize],\n",
" warm_start=0,\n",
" data_source=data_source)\n",
" ref_date, model = params\n",
...
...
@@ -84,9 +97,17 @@
},
{
"cell_type": "code",
"execution_count":
null
,
"execution_count":
16
,
"metadata": {},
"outputs": [],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time: 22 s\n"
]
}
],
"source": [
"%%time\n",
"\n",
...
...
@@ -96,9 +117,138 @@
},
{
"cell_type": "code",
"execution_count":
null
,
"execution_count":
17
,
"metadata": {},
"outputs": [],
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"2018-04-16 18:41:27,841 - ALPHA_MIND - INFO - 2016-01-04 partial re-balance: 799\n",
"2018-04-16 18:41:28,115 - ALPHA_MIND - INFO - 2016-01-04 is finished\n",
"d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:72: FutureWarning: \n",
"Passing list-likes to .loc or [] with any missing label will raise\n",
"KeyError in the future, you can use .reindex() as an alternative.\n",
"\n",
"See the documentation here:\n",
"http://pandas.pydata.org/pandas-docs/stable/indexing.html#deprecate-loc-reindex-listlike\n",
"2018-04-16 18:41:28,151 - ALPHA_MIND - INFO - 2016-01-18 partial re-balance: 800\n",
"2018-04-16 18:41:28,538 - ALPHA_MIND - INFO - 2016-01-18 is finished\n",
"2018-04-16 18:41:28,584 - ALPHA_MIND - INFO - 2016-02-01 partial re-balance: 800\n",
"2018-04-16 18:41:29,106 - ALPHA_MIND - INFO - 2016-02-01 is finished\n",
"2018-04-16 18:41:29,156 - ALPHA_MIND - INFO - 2016-02-22 partial re-balance: 800\n",
"2018-04-16 18:41:29,552 - ALPHA_MIND - INFO - 2016-02-22 is finished\n",
"2018-04-16 18:41:29,588 - ALPHA_MIND - INFO - 2016-03-07 partial re-balance: 800\n",
"2018-04-16 18:41:29,975 - ALPHA_MIND - INFO - 2016-03-07 is finished\n",
"2018-04-16 18:41:30,013 - ALPHA_MIND - INFO - 2016-03-21 partial re-balance: 800\n",
"2018-04-16 18:41:30,406 - ALPHA_MIND - INFO - 2016-03-21 is finished\n",
"2018-04-16 18:41:30,453 - ALPHA_MIND - INFO - 2016-04-05 partial re-balance: 800\n",
"2018-04-16 18:41:30,867 - ALPHA_MIND - INFO - 2016-04-05 is finished\n",
"2018-04-16 18:41:30,910 - ALPHA_MIND - INFO - 2016-04-19 partial re-balance: 800\n",
"2018-04-16 18:41:31,311 - ALPHA_MIND - INFO - 2016-04-19 is finished\n",
"2018-04-16 18:41:31,352 - ALPHA_MIND - INFO - 2016-05-04 partial re-balance: 800\n",
"2018-04-16 18:41:31,737 - ALPHA_MIND - INFO - 2016-05-04 is finished\n",
"2018-04-16 18:41:31,783 - ALPHA_MIND - INFO - 2016-05-18 partial re-balance: 800\n",
"2018-04-16 18:41:32,188 - ALPHA_MIND - INFO - 2016-05-18 is finished\n",
"2018-04-16 18:41:32,229 - ALPHA_MIND - INFO - 2016-06-01 partial re-balance: 800\n",
"2018-04-16 18:41:32,638 - ALPHA_MIND - INFO - 2016-06-01 is finished\n",
"2018-04-16 18:41:32,689 - ALPHA_MIND - INFO - 2016-06-17 partial re-balance: 800\n",
"2018-04-16 18:41:33,110 - ALPHA_MIND - INFO - 2016-06-17 is finished\n",
"2018-04-16 18:41:33,147 - ALPHA_MIND - INFO - 2016-07-01 partial re-balance: 800\n",
"2018-04-16 18:41:33,554 - ALPHA_MIND - INFO - 2016-07-01 is finished\n",
"2018-04-16 18:41:33,588 - ALPHA_MIND - INFO - 2016-07-15 partial re-balance: 800\n",
"2018-04-16 18:41:33,995 - ALPHA_MIND - INFO - 2016-07-15 is finished\n",
"2018-04-16 18:41:34,042 - ALPHA_MIND - INFO - 2016-07-29 partial re-balance: 800\n",
"2018-04-16 18:41:34,476 - ALPHA_MIND - INFO - 2016-07-29 is finished\n",
"2018-04-16 18:41:34,521 - ALPHA_MIND - INFO - 2016-08-12 partial re-balance: 800\n",
"2018-04-16 18:41:34,941 - ALPHA_MIND - INFO - 2016-08-12 is finished\n",
"2018-04-16 18:41:34,980 - ALPHA_MIND - INFO - 2016-08-26 partial re-balance: 800\n",
"2018-04-16 18:41:35,480 - ALPHA_MIND - INFO - 2016-08-26 is finished\n",
"2018-04-16 18:41:35,528 - ALPHA_MIND - INFO - 2016-09-09 partial re-balance: 800\n",
"2018-04-16 18:41:35,950 - ALPHA_MIND - INFO - 2016-09-09 is finished\n",
"2018-04-16 18:41:35,987 - ALPHA_MIND - INFO - 2016-09-27 partial re-balance: 800\n",
"2018-04-16 18:41:36,381 - ALPHA_MIND - INFO - 2016-09-27 is finished\n",
"2018-04-16 18:41:36,425 - ALPHA_MIND - INFO - 2016-10-18 partial re-balance: 800\n",
"2018-04-16 18:41:36,840 - ALPHA_MIND - INFO - 2016-10-18 is finished\n",
"2018-04-16 18:41:36,885 - ALPHA_MIND - INFO - 2016-11-01 partial re-balance: 800\n",
"2018-04-16 18:41:37,188 - ALPHA_MIND - INFO - 2016-11-01 is finished\n",
"2018-04-16 18:41:37,226 - ALPHA_MIND - INFO - 2016-11-15 partial re-balance: 800\n",
"2018-04-16 18:41:37,662 - ALPHA_MIND - INFO - 2016-11-15 is finished\n",
"2018-04-16 18:41:37,703 - ALPHA_MIND - INFO - 2016-11-29 partial re-balance: 800\n",
"2018-04-16 18:41:38,122 - ALPHA_MIND - INFO - 2016-11-29 is finished\n",
"2018-04-16 18:41:38,167 - ALPHA_MIND - INFO - 2016-12-13 partial re-balance: 800\n",
"2018-04-16 18:41:38,590 - ALPHA_MIND - INFO - 2016-12-13 is finished\n",
"2018-04-16 18:41:38,642 - ALPHA_MIND - INFO - 2016-12-27 partial re-balance: 800\n",
"2018-04-16 18:41:39,073 - ALPHA_MIND - INFO - 2016-12-27 is finished\n",
"2018-04-16 18:41:39,111 - ALPHA_MIND - INFO - 2017-01-11 partial re-balance: 800\n",
"2018-04-16 18:41:39,503 - ALPHA_MIND - INFO - 2017-01-11 is finished\n",
"2018-04-16 18:41:39,545 - ALPHA_MIND - INFO - 2017-01-25 partial re-balance: 799\n",
"2018-04-16 18:41:39,941 - ALPHA_MIND - INFO - 2017-01-25 is finished\n",
"2018-04-16 18:41:39,986 - ALPHA_MIND - INFO - 2017-02-15 partial re-balance: 799\n",
"2018-04-16 18:41:40,398 - ALPHA_MIND - INFO - 2017-02-15 is finished\n",
"2018-04-16 18:41:40,435 - ALPHA_MIND - INFO - 2017-03-01 partial re-balance: 800\n",
"2018-04-16 18:41:40,839 - ALPHA_MIND - INFO - 2017-03-01 is finished\n",
"2018-04-16 18:41:40,887 - ALPHA_MIND - INFO - 2017-03-15 partial re-balance: 800\n",
"2018-04-16 18:41:41,311 - ALPHA_MIND - INFO - 2017-03-15 is finished\n",
"2018-04-16 18:41:41,351 - ALPHA_MIND - INFO - 2017-03-29 partial re-balance: 800\n",
"2018-04-16 18:41:41,792 - ALPHA_MIND - INFO - 2017-03-29 is finished\n",
"2018-04-16 18:41:41,831 - ALPHA_MIND - INFO - 2017-04-14 partial re-balance: 800\n",
"2018-04-16 18:41:42,364 - ALPHA_MIND - INFO - 2017-04-14 is finished\n",
"2018-04-16 18:41:42,418 - ALPHA_MIND - INFO - 2017-04-28 partial re-balance: 800\n",
"2018-04-16 18:41:42,867 - ALPHA_MIND - INFO - 2017-04-28 is finished\n",
"2018-04-16 18:41:42,906 - ALPHA_MIND - INFO - 2017-05-15 partial re-balance: 800\n",
"2018-04-16 18:41:43,343 - ALPHA_MIND - INFO - 2017-05-15 is finished\n",
"2018-04-16 18:41:43,379 - ALPHA_MIND - INFO - 2017-05-31 partial re-balance: 800\n",
"2018-04-16 18:41:43,801 - ALPHA_MIND - INFO - 2017-05-31 is finished\n",
"2018-04-16 18:41:43,844 - ALPHA_MIND - INFO - 2017-06-14 partial re-balance: 800\n",
"2018-04-16 18:41:44,259 - ALPHA_MIND - INFO - 2017-06-14 is finished\n",
"2018-04-16 18:41:44,295 - ALPHA_MIND - INFO - 2017-06-28 partial re-balance: 800\n",
"2018-04-16 18:41:44,736 - ALPHA_MIND - INFO - 2017-06-28 is finished\n",
"2018-04-16 18:41:44,778 - ALPHA_MIND - INFO - 2017-07-12 partial re-balance: 800\n",
"2018-04-16 18:41:45,189 - ALPHA_MIND - INFO - 2017-07-12 is finished\n",
"2018-04-16 18:41:45,222 - ALPHA_MIND - INFO - 2017-07-26 partial re-balance: 800\n",
"2018-04-16 18:41:45,500 - ALPHA_MIND - INFO - 2017-07-26 is finished\n",
"2018-04-16 18:41:45,544 - ALPHA_MIND - INFO - 2017-08-09 partial re-balance: 800\n",
"2018-04-16 18:41:45,851 - ALPHA_MIND - INFO - 2017-08-09 is finished\n",
"2018-04-16 18:41:45,887 - ALPHA_MIND - INFO - 2017-08-23 partial re-balance: 800\n",
"2018-04-16 18:41:46,313 - ALPHA_MIND - INFO - 2017-08-23 is finished\n",
"2018-04-16 18:41:46,351 - ALPHA_MIND - INFO - 2017-09-06 partial re-balance: 800\n",
"2018-04-16 18:41:46,774 - ALPHA_MIND - INFO - 2017-09-06 is finished\n",
"2018-04-16 18:41:46,819 - ALPHA_MIND - INFO - 2017-09-20 partial re-balance: 800\n",
"2018-04-16 18:41:47,094 - ALPHA_MIND - INFO - 2017-09-20 is finished\n",
"2018-04-16 18:41:47,142 - ALPHA_MIND - INFO - 2017-10-11 partial re-balance: 800\n",
"2018-04-16 18:41:47,575 - ALPHA_MIND - INFO - 2017-10-11 is finished\n",
"2018-04-16 18:41:47,619 - ALPHA_MIND - INFO - 2017-10-25 partial re-balance: 800\n",
"2018-04-16 18:41:48,052 - ALPHA_MIND - INFO - 2017-10-25 is finished\n",
"2018-04-16 18:41:48,090 - ALPHA_MIND - INFO - 2017-11-08 partial re-balance: 800\n",
"2018-04-16 18:41:48,509 - ALPHA_MIND - INFO - 2017-11-08 is finished\n",
"2018-04-16 18:41:48,554 - ALPHA_MIND - INFO - 2017-11-22 partial re-balance: 800\n",
"2018-04-16 18:41:49,132 - ALPHA_MIND - INFO - 2017-11-22 is finished\n",
"2018-04-16 18:41:49,175 - ALPHA_MIND - INFO - 2017-12-06 partial re-balance: 800\n",
"2018-04-16 18:41:49,600 - ALPHA_MIND - INFO - 2017-12-06 is finished\n",
"2018-04-16 18:41:49,645 - ALPHA_MIND - INFO - 2017-12-20 partial re-balance: 800\n",
"2018-04-16 18:41:50,100 - ALPHA_MIND - INFO - 2017-12-20 is finished\n",
"2018-04-16 18:41:50,154 - ALPHA_MIND - INFO - 2018-01-04 partial re-balance: 800\n",
"2018-04-16 18:41:50,602 - ALPHA_MIND - INFO - 2018-01-04 is finished\n",
"2018-04-16 18:41:50,651 - ALPHA_MIND - INFO - 2018-01-18 partial re-balance: 800\n",
"2018-04-16 18:41:51,094 - ALPHA_MIND - INFO - 2018-01-18 is finished\n",
"2018-04-16 18:41:51,138 - ALPHA_MIND - INFO - 2018-02-01 partial re-balance: 800\n",
"2018-04-16 18:41:51,602 - ALPHA_MIND - INFO - 2018-02-01 is finished\n",
"2018-04-16 18:41:51,644 - ALPHA_MIND - INFO - 2018-02-22 partial re-balance: 800\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2018-04-16 18:41:52,078 - ALPHA_MIND - INFO - 2018-02-22 is finished\n",
"2018-04-16 18:41:52,116 - ALPHA_MIND - INFO - 2018-03-08 partial re-balance: 800\n",
"2018-04-16 18:41:52,567 - ALPHA_MIND - INFO - 2018-03-08 is finished\n",
"2018-04-16 18:41:52,604 - ALPHA_MIND - INFO - 2018-03-22 partial re-balance: 800\n",
"2018-04-16 18:41:53,039 - ALPHA_MIND - INFO - 2018-03-22 is finished\n"
]
}
],
"source": [
"# rebalance\n",
"\n",
...
...
@@ -229,9 +379,30 @@
},
{
"cell_type": "code",
"execution_count":
null
,
"execution_count":
18
,
"metadata": {},
"outputs": [],
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x2980b3ba358>"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x432 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ret_df = pd.DataFrame({'returns': rets, 'turn_over': turn_overs, 'leverage': leverags}, index=ref_dates)\n",
"\n",
...
...
@@ -253,22 +424,36 @@
},
{
"cell_type": "code",
"execution_count":
null
,
"execution_count":
19
,
"metadata": {},
"outputs": [],
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x2980568fbe0>"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x432 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ret_df[['returns', 'tc_cost']][-30:].cumsum().plot(figsize=(12, 6),\n",
" title='Fixed freq rebalanced: {0} with benchmark {1}'.format(freq, 905),\n",
" secondary_y='tc_cost')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
...
...
@@ -293,7 +478,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.
4
"
"version": "3.6.
5
"
},
"varInspector": {
"cols": {
...
...
notebooks/Example 3 - Multi Weight Gap Comparison.ipynb
View file @
d64c7b2e
...
...
@@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
"execution_count":
null
,
"execution_count":
1
,
"metadata": {},
"outputs": [],
"source": [
...
...
@@ -21,7 +21,7 @@
},
{
"cell_type": "code",
"execution_count":
null
,
"execution_count":
6
,
"metadata": {},
"outputs": [],
"source": [
...
...
@@ -41,10 +41,10 @@
"turn_over_target_base = 0.4\n",
"benchmark_total_lower = 0.8\n",
"benchmark_total_upper = 1.0\n",
"batch =
0
\n",
"batch =
1
\n",
"horizon = map_freq(freq)\n",
"universe = Universe(\"custom\", ['zz800'])\n",
"data_source = 'postgres+psycopg2://postgres:
we083826@localhost
/alpha'\n",
"data_source = 'postgres+psycopg2://postgres:
A12345678!@10.63.6.220
/alpha'\n",
"benchmark_code = 905\n",
"method = 'tv'\n",
"target_vol = 0.05\n",
...
...
@@ -57,7 +57,7 @@
},
{
"cell_type": "code",
"execution_count":
null
,
"execution_count":
7
,
"metadata": {},
"outputs": [],
"source": [
...
...
@@ -93,9 +93,135 @@
},
{
"cell_type": "code",
"execution_count":
null
,
"execution_count":
8
,
"metadata": {},
"outputs": [],
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"2018-04-16 18:39:18,131 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:18,148 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:18,476 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:18,479 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:18,817 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:18,819 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:19,214 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:19,216 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:19,537 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:19,539 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:19,885 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:19,887 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:20,229 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:20,232 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:20,571 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:20,573 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:20,912 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:20,915 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:21,260 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:21,263 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:21,605 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:21,607 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:21,957 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:21,959 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:22,293 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:22,297 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:22,646 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:22,648 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:22,986 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:22,987 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:23,326 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:23,328 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:23,661 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:23,664 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:23,985 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:23,988 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:24,328 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:24,330 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:24,661 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:24,663 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:24,984 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:24,986 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:25,309 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:25,311 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:25,649 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:25,651 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:25,993 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:25,995 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:26,337 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:26,339 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:26,663 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:26,665 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:26,999 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:27,001 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:27,364 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:27,366 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:27,709 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:27,712 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:28,061 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:28,062 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:28,484 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:28,486 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:28,808 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:28,810 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:29,137 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:29,140 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:29,496 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:29,498 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:29,843 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:29,845 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:30,183 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:30,185 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:30,524 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:30,527 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2018-04-16 18:39:30,889 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:30,891 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:31,272 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:31,275 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:31,621 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:31,623 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:31,982 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:31,984 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:32,342 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:32,344 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:32,685 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:32,687 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:33,021 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:33,024 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:33,364 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:33,366 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:33,696 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:33,697 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:34,038 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:34,041 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:34,406 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:34,408 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:34,749 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:34,751 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:35,091 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:35,093 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:35,446 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:35,448 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:35,790 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:35,792 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:36,166 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:39:36,168 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time: 18.5 s\n"
]
}
],
"source": [
"%%time\n",
"\n",
...
...
@@ -108,7 +234,7 @@
},
{
"cell_type": "code",
"execution_count":
null
,
"execution_count":
9
,
"metadata": {},
"outputs": [],
"source": [
...
...
@@ -148,7 +274,7 @@
},
{
"cell_type": "code",
"execution_count":
null
,
"execution_count":
10
,
"metadata": {},
"outputs": [],
"source": [
...
...
@@ -264,7 +390,7 @@
},
{
"cell_type": "code",
"execution_count":
null
,
"execution_count":
11
,
"metadata": {},
"outputs": [],
"source": [
...
...
@@ -298,9 +424,32 @@
},
{
"cell_type": "code",
"execution_count":
null
,
"execution_count":
12
,
"metadata": {},
"outputs": [],
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:45: FutureWarning: \n",
"Passing list-likes to .loc or [] with any missing label will raise\n",
"KeyError in the future, you can use .reindex() as an alternative.\n",
"\n",
"See the documentation here:\n",
"http://pandas.pydata.org/pandas-docs/stable/indexing.html#deprecate-loc-reindex-listlike\n",
"d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:45: FutureWarning: \n",
"Passing list-likes to .loc or [] with any missing label will raise\n",
"KeyError in the future, you can use .reindex() as an alternative.\n",
"\n",
"See the documentation here:\n",
"http://pandas.pydata.org/pandas-docs/stable/indexing.html#deprecate-loc-reindex-listlike\n",
"2018-04-16 18:40:03,214 - ALPHA_MIND - INFO - weight_gap: 0.005 finished\n",
"2018-04-16 18:40:26,049 - ALPHA_MIND - INFO - weight_gap: 0.01 finished\n",
"2018-04-16 18:40:48,115 - ALPHA_MIND - INFO - weight_gap: 0.015 finished\n",
"2018-04-16 18:41:10,290 - ALPHA_MIND - INFO - weight_gap: 0.02 finished\n"
]
}
],
"source": [
"weight_gaps = [0.005, 0.010, 0.015, 0.020]\n",
"\n",
...
...
@@ -314,9 +463,26 @@
},
{
"cell_type": "code",
"execution_count":
null
,
"execution_count":
13
,
"metadata": {},
"outputs": [],
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:45: FutureWarning: \n",
"Passing list-likes to .loc or [] with any missing label will raise\n",
"KeyError in the future, you can use .reindex() as an alternative.\n",
"\n",
"See the documentation here:\n",
"http://pandas.pydata.org/pandas-docs/stable/indexing.html#deprecate-loc-reindex-listlike\n",
"2018-04-16 18:41:44,346 - ALPHA_MIND - INFO - target_vol: 0.0150 finished\n",
"2018-04-16 18:42:12,024 - ALPHA_MIND - INFO - target_vol: 0.0300 finished\n",
"2018-04-16 18:42:34,614 - ALPHA_MIND - INFO - target_vol: 0.0450 finished\n",
"2018-04-16 18:42:57,030 - ALPHA_MIND - INFO - target_vol: 0.0600 finished\n"
]
}
],
"source": [
"target_vols = [0.015, 0.030, 0.045, 0.060]\n",
"\n",
...
...
@@ -342,6 +508,18 @@
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.5"
},
"varInspector": {
"cols": {
"lenName": 16,
...
...
notebooks/Example 4 - Single Factor Analysis.ipynb
View file @
d64c7b2e
...
...
@@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
"execution_count":
null
,
"execution_count":
1
,
"metadata": {},
"outputs": [],
"source": [
...
...
@@ -18,7 +18,7 @@
},
{
"cell_type": "code",
"execution_count":
null
,
"execution_count":
2
,
"metadata": {},
"outputs": [],
"source": [
...
...
@@ -38,7 +38,7 @@
"turn_over_target_base = 0.4\n",
"benchmark_total_lower = 0.8\n",
"benchmark_total_upper = 1.0\n",
"batch =
0
\n",
"batch =
1
\n",
"horizon = map_freq(freq)\n",
"universe = Universe(\"custom\", ['zz800'])\n",
"data_source = 'postgres+psycopg2://postgres:A12345678!@10.63.6.220/alpha'\n",
...
...
@@ -52,7 +52,7 @@
},
{
"cell_type": "code",
"execution_count":
null
,
"execution_count":
3
,
"metadata": {},
"outputs": [],
"source": [
...
...
@@ -83,9 +83,133 @@
},
{
"cell_type": "code",
"execution_count":
null
,
"execution_count":
4
,
"metadata": {},
"outputs": [],
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"2018-04-16 18:41:19,906 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:19,908 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:20,265 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:20,291 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:20,608 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:20,610 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:20,956 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:20,958 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:21,320 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:21,323 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:21,667 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:21,669 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:21,997 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:21,999 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:22,395 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:22,397 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:22,744 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:22,747 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:23,072 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:23,080 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:23,444 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:23,446 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:23,768 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:23,770 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:24,126 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:24,127 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:24,460 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:24,463 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:24,840 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:24,842 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:25,193 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:25,195 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:25,557 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:25,559 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:25,885 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:25,887 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:26,194 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:26,195 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:26,527 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:26,529 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:26,847 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:26,849 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:27,185 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:27,187 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:27,554 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:27,557 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:27,907 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:27,910 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:28,249 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:28,263 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:28,619 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:28,622 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:28,982 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:28,984 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:29,346 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:29,348 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:29,753 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:29,755 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:30,126 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:30,128 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:30,476 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:30,479 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:30,816 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:30,818 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:31,164 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:31,167 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:31,502 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:31,504 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:31,842 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:31,859 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:32,196 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:32,198 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:32,639 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:32,642 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2018-04-16 18:41:32,990 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:32,992 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:33,343 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:33,345 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:33,678 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:33,680 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:34,037 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:34,054 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:34,403 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:34,405 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:34,787 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:34,789 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:35,137 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:35,140 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:35,482 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:35,484 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:35,842 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:35,844 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:36,181 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:36,183 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:36,552 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:36,554 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:36,906 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:36,909 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:37,289 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:37,291 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:37,654 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:37,656 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:38,016 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n",
"2018-04-16 18:41:38,018 - ALPHA_MIND - WARNING - winsorize_normal normally should not be done after neutralize\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time: 18.6 s\n"
]
}
],
"source": [
"%%time\n",
"\n",
...
...
@@ -97,7 +221,7 @@
},
{
"cell_type": "code",
"execution_count":
null
,
"execution_count":
5
,
"metadata": {},
"outputs": [],
"source": [
...
...
@@ -136,7 +260,7 @@
},
{
"cell_type": "code",
"execution_count":
null
,
"execution_count":
6
,
"metadata": {},
"outputs": [],
"source": [
...
...
@@ -220,9 +344,30 @@
},
{
"cell_type": "code",
"execution_count":
null
,
"execution_count":
7
,
"metadata": {},
"outputs": [],
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x240ed0d7f60>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x432 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ret_df = create_scenario(weight_gap)\n",
"ret_df[['returns', 'tc_cost']].cumsum().plot(figsize=(12, 6),\n",
...
...
@@ -261,7 +406,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.
4
"
"version": "3.6.
5
"
},
"varInspector": {
"cols": {
...
...
report/策略报告/市场以及策略回顾_2018-03-21.md
View file @
d64c7b2e
<!-- @import "[TOC]" {cmd="toc" depthFrom=1 depthTo=6 orderedList=false} -->
<!-- code_chunk_output -->
*
[
市场以及策略回顾
](
#市场以及策略回顾
)
*
[
摘要
](
#摘要
)
*
[
风格因子
](
#风格因子
)
*
[
全市场股票(去除上市三个月以内的新股)
](
#全市场股票去除上市三个月以内的新股
)
*
[
沪深300
](
#沪深300
)
*
[
中证500
](
#中证500
)
*
[
行业因子
](
#行业因子
)
*
[
全市场股票(去除上市三个月以内的新股)
](
#全市场股票去除上市三个月以内的新股-1
)
*
[
沪深300
](
#沪深300-1
)
*
[
中证500
](
#中证500-1
)
*
[
当前策略的风格分析
](
#当前策略的风格分析
)
*
[
收益估值 - `EARNYILD`
](
#收益估值-earnyild
)
*
[
成长因子 - `GROWTH`
](
#成长因子-growth
)
*
[
市场因子 - `BETA`
](
#市场因子-beta
)
*
[
市值因子 - `SIZE`
](
#市值因子-size
)
*
[
流动性因子 - `LIQUIDTY`
](
#流动性因子-liquidty
)
*
[
生产因子表现
](
#生产因子表现
)
*
[
沪深300增强
](
#沪深300增强
)
*
[
中证500增强
](
#中证500增强
)
*
[
红塔红土中证500增强
](
#红塔红土中证500增强
)
<!-- /code_chunk_output -->
# 市场以及策略回顾
<!-- @import "[TOC]" {cmd="toc" depthFrom=1 depthTo=6 orderedList=false} -->
<!-- code_chunk_output -->
*
[
市场以及策略回顾
](
#市场以及策略回顾
)
*
[
摘要
](
#摘要
)
*
[
风格因子
](
#风格因子
)
*
[
全市场股票(去除上市三个月以内的新股)
](
#全市场股票去除上市三个月以内的新股
)
*
[
沪深300
](
#沪深300
)
*
[
中证500
](
#中证500
)
*
[
行业因子
](
#行业因子
)
*
[
全市场股票(去除上市三个月以内的新股)
](
#全市场股票去除上市三个月以内的新股-1
)
*
[
沪深300
](
#沪深300-1
)
*
[
中证500
](
#中证500-1
)
*
[
当前策略的风格分析
](
#当前策略的风格分析
)
*
[
收益估值 - `EARNYILD`
](
#收益估值-earnyild
)
*
[
成长因子 - `GROWTH`
](
#成长因子-growth
)
*
[
市场因子 - `BETA`
](
#市场因子-beta
)
*
[
市值因子 - `SIZE`
](
#市值因子-size
)
*
[
流动性因子 - `LIQUIDTY`
](
#流动性因子-liquidty
)
*
[
生产因子表现
](
#生产因子表现
)
*
[
沪深300增强
](
#沪深300增强
)
*
[
中证500增强
](
#中证500增强
)
*
[
红塔红土中证500增强
](
#红塔红土中证500增强
)
<!-- /code_chunk_output -->
## 摘要
...
...
@@ -11,11 +64,11 @@
*
行业上,
`COMPUTER`
以及
`Electronics`
是最近相对表现比较好的行业。
*
建议的措施
*
可以考虑适当保留负向的
`SIZE`
暴露;
*
可以考虑适当保留负向的
`SIZE`
暴露
(需要慎重)
;
*
建议将
`LIQUIDITY`
作为alpha因子使用,或者保持一定的负向
`LIQUIDTY`
暴露;
*
控制
`EARNYILD`
的正向暴露。
*
控制
`BETA`
暴露至中性;
*
适当高配
`C
OMPUTER`
以及
`ELectronics`
;
*
适当高配
`C
omputer`
以及
`ELectronics`
。
## 风格因子
...
...
@@ -35,15 +88,7 @@
*
其他相对有趋势性的因子包括:
`BETA`
,
`MOMENTUM`
以及
`BTOP`
。但是不够稳定。
<iframe
width="600"
height="400"
seamless
frameBorder="0"
scrolling="no"
src="http://10.63.6.13:8088/superset/explore/table/2/?form_data=%7B%22datasource%22%3A%222__table%22%2C%22viz_type%22%3A%22line%22%2C%22slice_id%22%3A8%2C%22granularity_sqla%22%3A%22trade_date%22%2C%22time_grain_sqla%22%3Anull%2C%22since%22%3A%22100+years+ago%22%2C%22until%22%3A%22now%22%2C%22metrics%22%3A%5B%22avg__ic%22%5D%2C%22groupby%22%3A%5B%22factor%22%5D%2C%22limit%22%3A50%2C%22timeseries_limit_metric%22%3Anull%2C%22order_desc%22%3Atrue%2C%22color_scheme%22%3A%22bnbColors%22%2C%22show_brush%22%3Afalse%2C%22show_legend%22%3Atrue%2C%22rich_tooltip%22%3Atrue%2C%22show_markers%22%3Afalse%2C%22line_interpolation%22%3A%22linear%22%2C%22contribution%22%3Afalse%2C%22x_axis_label%22%3A%22%22%2C%22bottom_margin%22%3A%22auto%22%2C%22x_axis_showminmax%22%3Atrue%2C%22x_axis_format%22%3A%22smart_date%22%2C%22y_axis_label%22%3A%22%22%2C%22left_margin%22%3A%22auto%22%2C%22y_axis_showminmax%22%3Atrue%2C%22y_log_scale%22%3Afalse%2C%22y_axis_format%22%3A%22.3s%22%2C%22y_axis_bounds%22%3A%5Bnull%2Cnull%5D%2C%22rolling_type%22%3A%22cumsum%22%2C%22time_compare%22%3Anull%2C%22num_period_compare%22%3A%22%22%2C%22period_ratio_type%22%3A%22growth%22%2C%22resample_how%22%3A%22mean%22%2C%22resample_rule%22%3A%221M%22%2C%22resample_fillmethod%22%3Anull%2C%22annotation_layers%22%3A%5B%5D%2C%22where%22%3A%22%22%2C%22having%22%3A%22%22%2C%22filters%22%3A%5B%7B%22col%22%3A%22type%22%2C%22op%22%3A%22%3D%3D%22%2C%22val%22%3A%22style%22%7D%2C%7B%22col%22%3A%22horizon%22%2C%22op%22%3A%22%3D%3D%22%2C%22val%22%3A%2220b%22%7D%2C%7B%22col%22%3A%22universe%22%2C%22op%22%3A%22%3D%3D%22%2C%22val%22%3A%22ashare_ex%22%7D%5D%7D&standalone=true&height=400"
>
</iframe>

### 沪深300
...
...
@@ -55,6 +100,7 @@
*
`MOMENTUM`
具有最高的累积IC;
*
`SiZE`
效应在2017之后的反转,比全市场更加显著。

### 中证500
...
...
@@ -64,6 +110,8 @@
*
`LIQUIDTY`
效应要比沪深300好;
*
`SIZE`
的反转效应在中证500上并不显著;

## 行业因子
行业因子的表现要更加复杂而难以把握,只能做一些推测性的总结。
...
...
@@ -75,34 +123,98 @@
*
行业的IC风险波动很大;
*
周期性行业确实对应了比较到的IC波动,例如:
`Mining`
,
`IronSteel`
。

### 沪深300
整体上与全市场效应类似。

### 中证500
*
`Electronics`
特别强势;
`computer`
也是相对比较好的行业;

## 当前策略的风格分析
### 收益估值 - `EARNYILD`
在我们现行所有的策略中,都具有比较稳定的
`EARNYILD`
的正向暴露,比例从40% ~ 70%不等。

### 成长因子 - `GROWTH`
当前策略并没有对
`GROWTH`
因子进行控制,但是整体来说,
`GROWTH`
因子的暴露都不高,从-22% ~ 9%不等。

### 市场因子 - `BETA`
当前策略对
`BETA`
因子的历史暴露不是很一致,在2017年12月之前暴露比较低,并且偏负向。进入三月份以后,
`BETA`
暴露显著为正(除了沪深300)。

### 市值因子 - `SIZE`
市值因子是受控因子,整体符合预期,处于0附近无暴露状态。

### 流动性因子 - `LIQUIDTY`
在2017年年末以后,组合一直有比较稳定的正向流动性暴露。
##

## 生产因子表现
### 沪深300增强
沪深300现阶段使用的因子包括:
*
roe_q - experimental
*
ep_q - experimental
*
DivP - uqer
*
cfinc1_q - experimental
*
EBIT - uqer
*
EARNYILD - uqer
*
EPIBS - uqer
除EBIT以外,最近都遭遇回撤。EBIT与其他因子实际类型相似,属于质量指标,应该属于偶然。整体来讲,我们现阶段倾向于估值与质量的策略遭遇瓶颈。

### 中证500增强
中证500增强现阶段使用的因子包括:
*
BDTO - tiny
*
CFinc1 - tiny
*
CHV - tiny
*
DivP - uqer
*
IVR - experimental
*
VAL - tiny
*
eps_q - experimental
*
roe_q - experimental
在中证500上面,DivP表现一直比较低迷。同时有比较明显回撤的是GREV这样的增长指标。相对避险比较好的是,CHV和IVR等技术指标因子。同时值得关注的是,因子中,估值质量类的,例如roe_q,eps_q和cfinc1_q等,虽然有些回撤或者进入平台期。但是没有明显的回撤。

### 红塔红土中证500增强
红塔红土中证500指数增强使用的因子包括:
*
BDTO - tiny
*
CFinc1 - tiny
*
DROEAfterNonRecurring - legacy_factor
*
DivP - uqer
*
RVOL - tiny
*
eps_q - experimental
结论与中证500增强类似,比较意外的是RVOL,作为与IVR做法类似的因子,表现并不稳健。

Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment