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
428687f0
Commit
428687f0
authored
Jul 03, 2019
by
Dr.李
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update example 9
parent
b6923004
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
199 additions
and
15 deletions
+199
-15
Quick Start 9 - Back Testing Stock Screening.ipynb
notebooks/Quick Start 9 - Back Testing Stock Screening.ipynb
+199
-15
No files found.
notebooks/Quick Start 9 - Back Testing Stock Screening.ipynb
View file @
428687f0
...
...
@@ -34,12 +34,13 @@
"* 调仓频率:每周\n",
"* 股票池 :中证800\n",
"* 起始日 :2017-05-31\n",
"* 结束日 :2019-05-31"
"* 结束日 :2019-05-31\n",
"* 业绩基准:沪深300"
]
},
{
"cell_type": "code",
"execution_count":
2
,
"execution_count":
50
,
"metadata": {},
"outputs": [],
"source": [
...
...
@@ -48,6 +49,7 @@
"engine = SqlEngine(os.environ['DB_URI'])\n",
"start_date = '2017-05-31'\n",
"end_date = '2019-05-31'\n",
"benchmark_code = 300\n",
"rebalance_dates = makeSchedule(start_date, end_date, freq, 'china.sse', BizDayConventions.Preceding)"
]
},
...
...
@@ -94,7 +96,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time:
40
.7 s\n"
"Wall time:
9
.7 s\n"
]
}
],
...
...
@@ -120,7 +122,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time: 2
1.1
s\n"
"Wall time: 2
4.8
s\n"
]
}
],
...
...
@@ -204,14 +206,14 @@
},
{
"cell_type": "code",
"execution_count":
14
,
"execution_count":
8
,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time:
1
ms\n"
"Wall time:
4
ms\n"
]
}
],
...
...
@@ -227,9 +229,16 @@
"portfolio_rtns['dd.'] = dds"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* 累积收益曲线 + 回撤曲线"
]
},
{
"cell_type": "code",
"execution_count":
15
,
"execution_count":
9
,
"metadata": {},
"outputs": [
{
...
...
@@ -238,7 +247,7 @@
"(-0.6, 0.3)"
]
},
"execution_count":
15
,
"execution_count":
9
,
"metadata": {},
"output_type": "execute_result"
},
...
...
@@ -266,21 +275,116 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"### 4.2 月度收益"
"* 最大回撤、年化收益"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"最大回撤: 48.18%\n",
"年化收益: -5.46%\n"
]
}
],
"source": [
"print(\"最大回撤: {0:.2f}%\".format(-np.min(portfolio_rtns['dd.']) * 100.))\n",
"print(\"年化收益: {0:.2f}%\".format(250 * np.mean(portfolio_rtns['ret']) * 100.))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 4.2 超额收益以及alpha"
]
},
{
"cell_type": "code",
"execution_count": 95,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time: 29.2 s\n"
]
}
],
"source": [
"%%time\n",
"benchmark = engine.fetch_dx_return_index_range(benchmark_code, start_date, end_date)[['trade_date', 'dx']].set_index('trade_date')['dx']"
]
},
{
"cell_type": "code",
"execution_count": 96,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"年化超额收益: -7.45%\n"
]
}
],
"source": [
"excess_ret = portfolio_rtns['ret'] - benchmark\n",
"print(\"年化超额收益: {0:.2f}%\".format(250 * np.mean(excess_ret) * 100.))"
]
},
{
"cell_type": "code",
"execution_count": 102,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"年化alpha: -7.42%\n",
"beta: 0.99\n",
"Wall time: 1e+03 µs\n"
]
}
],
"source": [
"%%time\n",
"\n",
"p_rets = portfolio_rtns['ret'].values\n",
"b_rets = benchmark.values\n",
"x = np.concatenate([np.ones((len(b_rets),1)), b_rets.reshape((-1, 1))], axis=1)\n",
"alpha, beta = np.linalg.solve(x.T @ x, x.T @ p_rets)\n",
"print(\"年化alpha: {0:.2f}%\".format(250 * alpha * 100.))\n",
"print(\"beta: {0:.2f}\".format(beta))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 4.3 月度收益"
]
},
{
"cell_type": "code",
"execution_count":
16
,
"execution_count":
98
,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x1
5935d669b0
>"
"<matplotlib.legend.Legend at 0x1
758b7e0048
>"
]
},
"execution_count":
16
,
"execution_count":
98
,
"metadata": {},
"output_type": "execute_result"
},
...
...
@@ -306,12 +410,12 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"### 4.
3
行业分布"
"### 4.
4
行业分布"
]
},
{
"cell_type": "code",
"execution_count":
1
9,
"execution_count":
9
9,
"metadata": {},
"outputs": [
{
...
...
@@ -730,7 +834,7 @@
"[2939 rows x 2 columns]"
]
},
"execution_count":
1
9,
"execution_count":
9
9,
"metadata": {},
"output_type": "execute_result"
}
...
...
@@ -739,6 +843,86 @@
"portfolios.reset_index().groupby(['index', 'industry']).count()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 4.5 换手率"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* 月换手直方图"
]
},
{
"cell_type": "code",
"execution_count": 103,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time: 170 ms\n"
]
}
],
"source": [
"%%time\n",
"\n",
"p_groups = portfolios.groupby(level=0)\n",
"\n",
"previous_date = None\n",
"previous_pos = None\n",
"\n",
"turn_over = []\n",
"\n",
"for ref_date, g in p_groups:\n",
" g = g.set_index('code')\n",
" if previous_date:\n",
" diff_pos = g['weight'].subtract(previous_pos, fill_value=0)\n",
" turn_over.append(diff_pos.abs().sum())\n",
" previous_date = ref_date\n",
" previous_pos = g['weight']\n",
"\n",
"turn_over = pd.Series(turn_over, index=portfolios.index.unique()[1:])"
]
},
{
"cell_type": "code",
"execution_count": 104,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x1758b869470>"
]
},
"execution_count": 104,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1152x504 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"turn_over.resample('M').sum().plot(kind='bar', figsize=(16, 7))"
]
},
{
"cell_type": "code",
"execution_count": null,
...
...
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