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
19e12944
Commit
19e12944
authored
Mar 22, 2018
by
Dr.李
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update example 6
parent
cb04899a
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
228 additions
and
65 deletions
+228
-65
Example 6 - Target Volatility Builder.ipynb
notebooks/Example 6 - Target Volatility Builder.ipynb
+228
-65
No files found.
notebooks/Example 6 - Target Volatility Builder.ipynb
View file @
19e12944
...
@@ -2,10 +2,8 @@
...
@@ -2,10 +2,8 @@
"cells": [
"cells": [
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count": null,
"execution_count": 1,
"metadata": {
"metadata": {},
"collapsed": true
},
"outputs": [],
"outputs": [],
"source": [
"source": [
"%matplotlib inline\n",
"%matplotlib inline\n",
...
@@ -29,36 +27,30 @@
...
@@ -29,36 +27,30 @@
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count": null,
"execution_count": 2,
"metadata": {
"metadata": {},
"collapsed": true
},
"outputs": [],
"outputs": [],
"source": [
"source": [
"ref_date = '2018-01-08'\n",
"ref_date = '2018-01-08'\n",
"engine = SqlEngine('postgres+psycopg2://postgres:
we083826@192.168.0.102
/alpha')\n",
"engine = SqlEngine('postgres+psycopg2://postgres:
A12345678!@10.63.6.220
/alpha')\n",
"universe = Universe('custom', ['zz800'])"
"universe = Universe('custom', ['zz800'])"
]
]
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count": null,
"execution_count": 3,
"metadata": {
"metadata": {},
"collapsed": true
},
"outputs": [],
"outputs": [],
"source": [
"source": [
"codes = engine.fetch_codes(ref_date, universe)\n",
"codes = engine.fetch_codes(ref_date, universe)\n",
"total_data = engine.fetch_data(ref_date, '
ep_q', codes, 906, industry='sw_adj
', risk_model='day')\n",
"total_data = engine.fetch_data(ref_date, '
EPS', codes, 906, industry='sw
', risk_model='day')\n",
"all_styles = risk_styles + industry_styles + ['COUNTRY']"
"all_styles = risk_styles + industry_styles + ['COUNTRY']"
]
]
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count": null,
"execution_count": 4,
"metadata": {
"metadata": {},
"collapsed": true
},
"outputs": [],
"outputs": [],
"source": [
"source": [
"risk_cov = total_data['risk_cov'][all_styles].values\n",
"risk_cov = total_data['risk_cov'][all_styles].values\n",
...
@@ -69,9 +61,96 @@
...
@@ -69,9 +61,96 @@
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count":
null
,
"execution_count":
5
,
"metadata": {},
"metadata": {},
"outputs": [],
"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>1</th>\n",
" <th>2</th>\n",
" <th>6</th>\n",
" <th>8</th>\n",
" <th>9</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.140538</td>\n",
" <td>0.041499</td>\n",
" <td>0.017832</td>\n",
" <td>0.004555</td>\n",
" <td>-0.000341</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.041499</td>\n",
" <td>0.181848</td>\n",
" <td>0.120095</td>\n",
" <td>0.012643</td>\n",
" <td>0.002199</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>0.017832</td>\n",
" <td>0.120095</td>\n",
" <td>0.246541</td>\n",
" <td>0.015257</td>\n",
" <td>0.027952</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>0.004555</td>\n",
" <td>0.012643</td>\n",
" <td>0.015257</td>\n",
" <td>0.149261</td>\n",
" <td>0.022305</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>-0.000341</td>\n",
" <td>0.002199</td>\n",
" <td>0.027952</td>\n",
" <td>0.022305</td>\n",
" <td>0.132042</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 1 2 6 8 9\n",
"1 0.140538 0.041499 0.017832 0.004555 -0.000341\n",
"2 0.041499 0.181848 0.120095 0.012643 0.002199\n",
"6 0.017832 0.120095 0.246541 0.015257 0.027952\n",
"8 0.004555 0.012643 0.015257 0.149261 0.022305\n",
"9 -0.000341 0.002199 0.027952 0.022305 0.132042"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"source": [
"sec_cov = risk_exposure @ risk_cov @ risk_exposure.T / 10000 + np.diag(special_risk ** 2) / 10000\n",
"sec_cov = risk_exposure @ risk_cov @ risk_exposure.T / 10000 + np.diag(special_risk ** 2) / 10000\n",
"sec_cov_df = pd.DataFrame(sec_cov, index=codes, columns=codes)\n",
"sec_cov_df = pd.DataFrame(sec_cov, index=codes, columns=codes)\n",
...
@@ -84,26 +163,24 @@
...
@@ -84,26 +163,24 @@
"source": [
"source": [
"### Portfolio Construction\n",
"### Portfolio Construction\n",
"\n",
"\n",
"* using `
ep_q
` factor as alpha factor;\n",
"* using `
EPS
` factor as alpha factor;\n",
"* short selling is forbiden;\n",
"* short selling is forbiden;\n",
"* target of volatility for the activate weight is setting at 5% annually level."
"* target of volatility for the activate weight is setting at
2.
5% annually level."
]
]
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count": null,
"execution_count": 31,
"metadata": {
"metadata": {},
"collapsed": true
},
"outputs": [],
"outputs": [],
"source": [
"source": [
"er = factor['
ep_q
'].values\n",
"er = factor['
EPS
'].values\n",
"bm = factor['weight'].values\n",
"bm = factor['weight'].values\n",
"lbound = np.zeros(len(er))\n",
"lbound = np.zeros(len(er))\n",
"ubound = bm + 0.0
5
\n",
"ubound = bm + 0.0
1
\n",
"cons_mat = np.ones((len(er), 1))\n",
"cons_mat = np.ones((len(er), 1))\n",
"risk_targets = (bm.sum(), bm.sum())\n",
"risk_targets = (bm.sum(), bm.sum())\n",
"target_vol = 0.0
4
5\n",
"target_vol = 0.0
2
5\n",
"\n",
"\n",
"status, p_er, p_weight = \\\n",
"status, p_er, p_weight = \\\n",
" target_vol_builder(er, sec_cov, bm, lbound, ubound, cons_mat, risk_targets, target_vol, target_vol)"
" target_vol_builder(er, sec_cov, bm, lbound, ubound, cons_mat, risk_targets, target_vol, target_vol)"
...
@@ -111,9 +188,19 @@
...
@@ -111,9 +188,19 @@
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count":
null
,
"execution_count":
32
,
"metadata": {},
"metadata": {},
"outputs": [],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"total weight is 1.0000\n",
"portfolio activate weight forecasting vol is 0.0250\n",
"portfolio expected return is 2.2232 comparing with benchmark er 1.2359\n"
]
}
],
"source": [
"source": [
"# check the result\n",
"# check the result\n",
"print(f\"total weight is {p_weight.sum(): .4f}\")\n",
"print(f\"total weight is {p_weight.sum(): .4f}\")\n",
...
@@ -125,24 +212,22 @@
...
@@ -125,24 +212,22 @@
"cell_type": "markdown",
"cell_type": "markdown",
"metadata": {},
"metadata": {},
"source": [
"source": [
"## 2. Porfolio Construction: 201
0
~ 2018\n",
"## 2. Porfolio Construction: 201
6
~ 2018\n",
"-------------------------------"
"-------------------------------"
]
]
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count": null,
"execution_count": 8,
"metadata": {
"metadata": {},
"collapsed": true
},
"outputs": [],
"outputs": [],
"source": [
"source": [
"\"\"\"\n",
"\"\"\"\n",
"Back test parameter settings\n",
"Back test parameter settings\n",
"\"\"\"\n",
"\"\"\"\n",
"\n",
"\n",
"start_date = '201
0
-01-01'\n",
"start_date = '201
6
-01-01'\n",
"end_date = '2018-0
3
-08'\n",
"end_date = '2018-0
2
-08'\n",
"\n",
"\n",
"freq = '10b'\n",
"freq = '10b'\n",
"neutralized_risk = industry_styles\n",
"neutralized_risk = industry_styles\n",
...
@@ -152,7 +237,7 @@
...
@@ -152,7 +237,7 @@
"batch = 0\n",
"batch = 0\n",
"horizon = map_freq(freq)\n",
"horizon = map_freq(freq)\n",
"universe = Universe(\"custom\", ['zz800'])\n",
"universe = Universe(\"custom\", ['zz800'])\n",
"data_source = 'postgres+psycopg2://postgres:
we083826@192.168.0.102
/alpha'\n",
"data_source = 'postgres+psycopg2://postgres:
A12345678!@10.63.6.220
/alpha'\n",
"benchmark_code = 906\n",
"benchmark_code = 906\n",
"target_vol = 0.05\n",
"target_vol = 0.05\n",
"\n",
"\n",
...
@@ -170,17 +255,15 @@
...
@@ -170,17 +255,15 @@
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count": null,
"execution_count": 9,
"metadata": {
"metadata": {},
"collapsed": true
},
"outputs": [],
"outputs": [],
"source": [
"source": [
"\"\"\"\n",
"\"\"\"\n",
"Factor Model\n",
"Factor Model\n",
"\"\"\"\n",
"\"\"\"\n",
"\n",
"\n",
"alpha_factors = {'f01': CSRank(LAST('
ep_q
'))}\n",
"alpha_factors = {'f01': CSRank(LAST('
EPS
'))}\n",
"\n",
"\n",
"weights = dict(f01=1.)\n",
"weights = dict(f01=1.)\n",
"\n",
"\n",
...
@@ -203,29 +286,31 @@
...
@@ -203,29 +286,31 @@
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count":
null
,
"execution_count":
10
,
"metadata": {},
"metadata": {},
"outputs": [],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 42.9 s, sys: 32.7 s, total: 1min 15s\n",
"Wall time: 26.9 s\n"
]
}
],
"source": [
"source": [
"%%time\n",
"%%time\n",
"\n",
"\n",
"\"\"\"\n",
"\"\"\"\n",
"Predicting Phase\n",
"Predicting Phase\n",
"\"\"\"\n",
"\"\"\"\n",
"\n",
"predicts = [predict_worker((d.strftime('%Y-%m-%d'), alpha_model)) for d in ref_dates]"
"from dask.distributed import Client\n",
"client = Client('192.168.0.102:8786')\n",
"\n",
"tasks = client.map(predict_worker, [(d.strftime('%Y-%m-%d'), alpha_model) for d in ref_dates], pure=False)\n",
"predicts = client.gather(tasks)"
]
]
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count": null,
"execution_count": 11,
"metadata": {
"metadata": {},
"collapsed": true
},
"outputs": [],
"outputs": [],
"source": [
"source": [
"\"\"\"\n",
"\"\"\"\n",
...
@@ -253,10 +338,8 @@
...
@@ -253,10 +338,8 @@
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count": null,
"execution_count": 12,
"metadata": {
"metadata": {},
"collapsed": true
},
"outputs": [],
"outputs": [],
"source": [
"source": [
"# rebalance\n",
"# rebalance\n",
...
@@ -351,18 +434,98 @@
...
@@ -351,18 +434,98 @@
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count":
null
,
"execution_count":
13
,
"metadata": {},
"metadata": {},
"outputs": [],
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"2018-03-22 17:35:31,207 - ALPHA_MIND - INFO - 2016-01-04 is finished with expected vol 0.05\n",
"2018-03-22 17:35:31,891 - ALPHA_MIND - INFO - 2016-01-18 is finished with expected vol 0.05\n",
"2018-03-22 17:35:32,506 - ALPHA_MIND - INFO - 2016-02-01 is finished with expected vol 0.05\n",
"2018-03-22 17:35:33,220 - ALPHA_MIND - INFO - 2016-02-22 is finished with expected vol 0.05\n",
"2018-03-22 17:35:33,940 - ALPHA_MIND - INFO - 2016-03-07 is finished with expected vol 0.05\n",
"2018-03-22 17:35:34,598 - ALPHA_MIND - INFO - 2016-03-21 is finished with expected vol 0.05\n",
"2018-03-22 17:35:35,235 - ALPHA_MIND - INFO - 2016-04-05 is finished with expected vol 0.05\n",
"2018-03-22 17:35:35,909 - ALPHA_MIND - INFO - 2016-04-19 is finished with expected vol 0.05\n",
"2018-03-22 17:35:36,517 - ALPHA_MIND - INFO - 2016-05-04 is finished with expected vol 0.05\n",
"2018-03-22 17:35:37,125 - ALPHA_MIND - INFO - 2016-05-18 is finished with expected vol 0.05\n",
"2018-03-22 17:35:37,771 - ALPHA_MIND - INFO - 2016-06-01 is finished with expected vol 0.05\n",
"2018-03-22 17:35:38,520 - ALPHA_MIND - INFO - 2016-06-17 is finished with expected vol 0.05\n",
"2018-03-22 17:35:39,224 - ALPHA_MIND - INFO - 2016-07-01 is finished with expected vol 0.05\n",
"2018-03-22 17:35:39,856 - ALPHA_MIND - INFO - 2016-07-15 is finished with expected vol 0.05\n",
"2018-03-22 17:35:40,510 - ALPHA_MIND - INFO - 2016-07-29 is finished with expected vol 0.05\n",
"2018-03-22 17:35:41,302 - ALPHA_MIND - INFO - 2016-08-12 is finished with expected vol 0.05\n",
"2018-03-22 17:35:42,105 - ALPHA_MIND - INFO - 2016-08-26 is finished with expected vol 0.05\n",
"2018-03-22 17:35:42,783 - ALPHA_MIND - INFO - 2016-09-09 is finished with expected vol 0.05\n",
"2018-03-22 17:35:43,393 - ALPHA_MIND - INFO - 2016-09-27 is finished with expected vol 0.05\n",
"2018-03-22 17:35:44,185 - ALPHA_MIND - INFO - 2016-10-18 is finished with expected vol 0.05\n",
"2018-03-22 17:35:44,735 - ALPHA_MIND - INFO - 2016-11-01 is finished with expected vol 0.05\n",
"2018-03-22 17:35:45,378 - ALPHA_MIND - INFO - 2016-11-15 is finished with expected vol 0.05\n",
"2018-03-22 17:35:46,148 - ALPHA_MIND - INFO - 2016-11-29 is finished with expected vol 0.05\n",
"2018-03-22 17:35:46,867 - ALPHA_MIND - INFO - 2016-12-13 is finished with expected vol 0.05\n",
"2018-03-22 17:35:47,404 - ALPHA_MIND - INFO - 2016-12-27 is finished with expected vol 0.05\n",
"2018-03-22 17:35:48,031 - ALPHA_MIND - INFO - 2017-01-11 is finished with expected vol 0.05\n",
"2018-03-22 17:35:48,658 - ALPHA_MIND - INFO - 2017-01-25 is finished with expected vol 0.05\n",
"2018-03-22 17:35:49,473 - ALPHA_MIND - INFO - 2017-02-15 is finished with expected vol 0.05\n",
"2018-03-22 17:35:50,082 - ALPHA_MIND - INFO - 2017-03-01 is finished with expected vol 0.05\n",
"2018-03-22 17:35:50,594 - ALPHA_MIND - INFO - 2017-03-15 is finished with expected vol 0.05\n",
"2018-03-22 17:35:51,173 - ALPHA_MIND - INFO - 2017-03-29 is finished with expected vol 0.05\n",
"2018-03-22 17:35:51,710 - ALPHA_MIND - INFO - 2017-04-14 is finished with expected vol 0.05\n",
"2018-03-22 17:35:52,420 - ALPHA_MIND - INFO - 2017-04-28 is finished with expected vol 0.05\n",
"2018-03-22 17:35:53,039 - ALPHA_MIND - INFO - 2017-05-15 is finished with expected vol 0.05\n",
"2018-03-22 17:35:53,753 - ALPHA_MIND - INFO - 2017-05-31 is finished with expected vol 0.05\n",
"2018-03-22 17:35:54,510 - ALPHA_MIND - INFO - 2017-06-14 is finished with expected vol 0.05\n",
"2018-03-22 17:35:55,359 - ALPHA_MIND - INFO - 2017-06-28 is finished with expected vol 0.05\n",
"2018-03-22 17:35:56,118 - ALPHA_MIND - INFO - 2017-07-12 is finished with expected vol 0.05\n",
"2018-03-22 17:35:56,706 - ALPHA_MIND - INFO - 2017-07-26 is finished with expected vol 0.05\n",
"2018-03-22 17:35:57,372 - ALPHA_MIND - INFO - 2017-08-09 is finished with expected vol 0.05\n",
"2018-03-22 17:35:58,074 - ALPHA_MIND - INFO - 2017-08-23 is finished with expected vol 0.05\n",
"2018-03-22 17:35:58,776 - ALPHA_MIND - INFO - 2017-09-06 is finished with expected vol 0.05\n",
"2018-03-22 17:35:59,368 - ALPHA_MIND - INFO - 2017-09-20 is finished with expected vol 0.05\n",
"2018-03-22 17:36:00,199 - ALPHA_MIND - INFO - 2017-10-11 is finished with expected vol 0.05\n",
"2018-03-22 17:36:01,075 - ALPHA_MIND - INFO - 2017-10-25 is finished with expected vol 0.05\n",
"2018-03-22 17:36:01,774 - ALPHA_MIND - INFO - 2017-11-08 is finished with expected vol 0.05\n",
"2018-03-22 17:36:02,427 - ALPHA_MIND - INFO - 2017-11-22 is finished with expected vol 0.05\n",
"2018-03-22 17:36:03,084 - ALPHA_MIND - INFO - 2017-12-06 is finished with expected vol 0.05\n",
"2018-03-22 17:36:03,744 - ALPHA_MIND - INFO - 2017-12-20 is finished with expected vol 0.05\n",
"2018-03-22 17:36:04,318 - ALPHA_MIND - INFO - 2018-01-04 is finished with expected vol 0.05\n",
"2018-03-22 17:36:04,967 - ALPHA_MIND - INFO - 2018-01-18 is finished with expected vol 0.05\n",
"2018-03-22 17:36:05,550 - ALPHA_MIND - INFO - 2018-02-01 is finished with expected vol 0.05\n"
]
}
],
"source": [
"source": [
"ret_df = create_scenario(target_vol)"
"ret_df = create_scenario(target_vol)"
]
]
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count":
null
,
"execution_count":
14
,
"metadata": {},
"metadata": {},
"outputs": [],
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fdd80563a20>"
]
},
"execution_count": 14,
"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": [
"source": [
"ret_df[['returns', 'tc_cost']].cumsum().plot(figsize=(12, 6),\n",
"ret_df[['returns', 'tc_cost']].cumsum().plot(figsize=(12, 6),\n",
" title='Fixed freq rebalanced: {0} with benchmark {1}'.format(freq, 905),\n",
" title='Fixed freq rebalanced: {0} with benchmark {1}'.format(freq, 905),\n",
...
@@ -395,7 +558,7 @@
...
@@ -395,7 +558,7 @@
"name": "python",
"name": "python",
"nbconvert_exporter": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"pygments_lexer": "ipython3",
"version": "3.6.
3
"
"version": "3.6.
4
"
},
},
"varInspector": {
"varInspector": {
"cols": {
"cols": {
...
...
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