Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
F
fof
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.李
fof
Commits
3e50b6a9
Commit
3e50b6a9
authored
Feb 05, 2022
by
Dr.李
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added style attribution
parent
6eee2118
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
705 additions
and
635 deletions
+705
-635
010 style attribution.ipynb
attribution/010 style attribution.ipynb
+260
-297
020 brison attribution.ipynb
attribution/020 brison attribution.ipynb
+426
-337
style.py
fof/style.py
+18
-0
utility.py
fof/utility.py
+1
-1
No files found.
attribution/010 style attribution.ipynb
View file @
3e50b6a9
...
@@ -2,39 +2,153 @@
...
@@ -2,39 +2,153 @@
"cells": [
"cells": [
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count":
1
,
"execution_count":
9
,
"id": "
8b4b7eaa-4778-4adb-bf1c-622794cd5027
",
"id": "
6470d267-ad02-44e2-acc3-e1427f606a82
",
"metadata": {},
"metadata": {},
"outputs": [],
"outputs": [],
"source": [
"source": [
"import sys\n",
"import sys\n",
"sys.path.append(\"../\")\n",
"sys.path.append(\"../\")\n",
"from fof.utility import *"
"import numpy as np\n",
"from fof.utility import *\n",
"from fof.style import single_style\n",
"from PyFin.api import *"
]
},
{
"cell_type": "markdown",
"id": "9ec81bcb-1f9b-4886-9027-7e9eb19e6f44",
"metadata": {},
"source": [
"# 1. Prepare Data\n",
"-----------------------"
]
]
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count":
2
,
"execution_count":
3
,
"id": "73399fb6-ea5c-48bb-872d-a35b555c1b00",
"id": "73399fb6-ea5c-48bb-872d-a35b555c1b00",
"metadata": {},
"metadata": {},
"outputs": [],
"outputs": [],
"source": [
"source": [
"trade_dt = \"20210630\""
"trade_dt = adjustDateByCalendar(\"china.sse\", \"2021-06-30\").strftime(\"%Y%m%d\")\n",
"model = \"short\""
]
]
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count":
3
,
"execution_count":
4
,
"id": "b547e094-4e2a-4ce8-b6c3-16b84f7d7d43",
"id": "b547e094-4e2a-4ce8-b6c3-16b84f7d7d43",
"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>pid</th>\n",
" <th>security_code</th>\n",
" <th>SKNAME</th>\n",
" <th>HOLDMKTCAP</th>\n",
" <th>HOLDAMT</th>\n",
" <th>NAVRTO</th>\n",
" <th>weight</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1030000006</td>\n",
" <td>2010000045</td>\n",
" <td>海信视像</td>\n",
" <td>71468410.0</td>\n",
" <td>4228900.0</td>\n",
" <td>1.61</td>\n",
" <td>0.021116</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1030000006</td>\n",
" <td>2010000121</td>\n",
" <td>中青旅</td>\n",
" <td>33714502.5</td>\n",
" <td>3210905.0</td>\n",
" <td>0.76</td>\n",
" <td>0.009961</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1030000006</td>\n",
" <td>2010000171</td>\n",
" <td>复星医药</td>\n",
" <td>48781519.0</td>\n",
" <td>676300.0</td>\n",
" <td>1.10</td>\n",
" <td>0.014413</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1030000006</td>\n",
" <td>2010000377</td>\n",
" <td>片仔癀</td>\n",
" <td>89447057.5</td>\n",
" <td>199525.0</td>\n",
" <td>2.02</td>\n",
" <td>0.026428</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1030000006</td>\n",
" <td>2010000438</td>\n",
" <td>贵州茅台</td>\n",
" <td>136307792.5</td>\n",
" <td>66275.0</td>\n",
" <td>3.08</td>\n",
" <td>0.040273</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" pid security_code SKNAME HOLDMKTCAP HOLDAMT NAVRTO weight\n",
"0 1030000006 2010000045 海信视像 71468410.0 4228900.0 1.61 0.021116\n",
"1 1030000006 2010000121 中青旅 33714502.5 3210905.0 0.76 0.009961\n",
"2 1030000006 2010000171 复星医药 48781519.0 676300.0 1.10 0.014413\n",
"3 1030000006 2010000377 片仔癀 89447057.5 199525.0 2.02 0.026428\n",
"4 1030000006 2010000438 贵州茅台 136307792.5 66275.0 3.08 0.040273"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"source": [
"portfolio = fd_skdetail(\"1030000006\", trade_dt=trade_dt)"
"# 获取指定基金在基准日的持仓(portfolio date)\n",
"portfolio = fd_skdetail(\"1030000006\", trade_dt=trade_dt)\n",
"portfolio.head()"
]
]
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count":
4
,
"execution_count":
5
,
"id": "470f668b-3547-4b49-8597-9d001ae8f9a7",
"id": "470f668b-3547-4b49-8597-9d001ae8f9a7",
"metadata": {},
"metadata": {},
"outputs": [
"outputs": [
...
@@ -233,19 +347,19 @@
...
@@ -233,19 +347,19 @@
"[5 rows x 40 columns]"
"[5 rows x 40 columns]"
]
]
},
},
"execution_count":
4
,
"execution_count":
5
,
"metadata": {},
"metadata": {},
"output_type": "execute_result"
"output_type": "execute_result"
}
}
],
],
"source": [
"source": [
"risk_exp = risk_exposure(
portfolio.SKCODE, trade_dt, trade_dt
)\n",
"risk_exp = risk_exposure(
trade_dt, trade_dt, portfolio.security_code
)\n",
"risk_exp.head()"
"risk_exp.head()"
]
]
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count":
5
,
"execution_count":
6
,
"id": "c75c33b2-c69e-412c-9151-8f6671c00cec",
"id": "c75c33b2-c69e-412c-9151-8f6671c00cec",
"metadata": {},
"metadata": {},
"outputs": [
"outputs": [
...
@@ -339,7 +453,7 @@
...
@@ -339,7 +453,7 @@
"[1 rows x 39 columns]"
"[1 rows x 39 columns]"
]
]
},
},
"execution_count":
5
,
"execution_count":
6
,
"metadata": {},
"metadata": {},
"output_type": "execute_result"
"output_type": "execute_result"
}
}
...
@@ -351,7 +465,7 @@
...
@@ -351,7 +465,7 @@
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count":
6
,
"execution_count":
7
,
"id": "e06d5836-1e39-47e7-9e1e-3ba77433aa05",
"id": "e06d5836-1e39-47e7-9e1e-3ba77433aa05",
"metadata": {},
"metadata": {},
"outputs": [
"outputs": [
...
@@ -387,42 +501,42 @@
...
@@ -387,42 +501,42 @@
" <tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <th>0</th>\n",
" <td>2021-06-30</td>\n",
" <td>2021-06-30</td>\n",
" <td>20100000
45
</td>\n",
" <td>20100000
01
</td>\n",
" <td>
海信视像
</td>\n",
" <td>
浦发银行
</td>\n",
" <td>6000
6
0.XSHG</td>\n",
" <td>6000
0
0.XSHG</td>\n",
" <td>-
1.983
</td>\n",
" <td>-
0.041
</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <th>1</th>\n",
" <td>2021-06-30</td>\n",
" <td>2021-06-30</td>\n",
" <td>2010000
121
</td>\n",
" <td>2010000
005
</td>\n",
" <td>
中青旅
</td>\n",
" <td>
白云机场
</td>\n",
" <td>600
138
.XSHG</td>\n",
" <td>600
004
.XSHG</td>\n",
" <td>-0.
743
</td>\n",
" <td>-0.
539
</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <th>2</th>\n",
" <td>2021-06-30</td>\n",
" <td>2021-06-30</td>\n",
" <td>2010000
171
</td>\n",
" <td>2010000
007
</td>\n",
" <td>
复星医药
</td>\n",
" <td>
东风汽车
</td>\n",
" <td>600
19
6.XSHG</td>\n",
" <td>600
00
6.XSHG</td>\n",
" <td>-0.6
42
</td>\n",
" <td>-0.6
64
</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <th>3</th>\n",
" <td>2021-06-30</td>\n",
" <td>2021-06-30</td>\n",
" <td>2010000
377
</td>\n",
" <td>2010000
008
</td>\n",
" <td>
片仔癀
</td>\n",
" <td>
中国国贸
</td>\n",
" <td>600
436
.XSHG</td>\n",
" <td>600
007
.XSHG</td>\n",
" <td>
-1.400
</td>\n",
" <td>
2.145
</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <th>4</th>\n",
" <td>2021-06-30</td>\n",
" <td>2021-06-30</td>\n",
" <td>2010000
438
</td>\n",
" <td>2010000
009
</td>\n",
" <td>
贵州茅台
</td>\n",
" <td>
首创环保
</td>\n",
" <td>600
519
.XSHG</td>\n",
" <td>600
008
.XSHG</td>\n",
" <td>-0.
835
</td>\n",
" <td>-0.
397
</td>\n",
" </tr>\n",
" </tr>\n",
" </tbody>\n",
" </tbody>\n",
"</table>\n",
"</table>\n",
...
@@ -430,27 +544,95 @@
...
@@ -430,27 +544,95 @@
],
],
"text/plain": [
"text/plain": [
" trade_date security_code secShortName symbol spret\n",
" trade_date security_code secShortName symbol spret\n",
"0 2021-06-30 20100000
45 海信视像 600060.XSHG -1.983
\n",
"0 2021-06-30 20100000
01 浦发银行 600000.XSHG -0.041
\n",
"1 2021-06-30 2010000
121 中青旅 600138.XSHG -0.743
\n",
"1 2021-06-30 2010000
005 白云机场 600004.XSHG -0.539
\n",
"2 2021-06-30 2010000
171 复星医药 600196.XSHG -0.642
\n",
"2 2021-06-30 2010000
007 东风汽车 600006.XSHG -0.664
\n",
"3 2021-06-30 2010000
377 片仔癀 600436.XSHG -1.400
\n",
"3 2021-06-30 2010000
008 中国国贸 600007.XSHG 2.145
\n",
"4 2021-06-30 2010000
438 贵州茅台 600519.XSHG -0.835
"
"4 2021-06-30 2010000
009 首创环保 600008.XSHG -0.397
"
]
]
},
},
"execution_count":
6
,
"execution_count":
7
,
"metadata": {},
"metadata": {},
"output_type": "execute_result"
"output_type": "execute_result"
}
}
],
],
"source": [
"source": [
"spec_rtn = specific_return(
portfolio.SKCODE,
trade_dt, trade_dt)\n",
"spec_rtn = specific_return(trade_dt, trade_dt)\n",
"spec_rtn.head()"
"spec_rtn.head()"
]
]
},
},
{
"cell_type": "markdown",
"id": "8a6fa837-6b20-4aee-a020-247cfd747865",
"metadata": {},
"source": [
"# 2. Risk Style Attribution\n",
"-------------------------------\n",
"\n",
"以下的归因我们都只做了 **一天** 的结果,区间归因即为每日归因的累加。"
]
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count": 7,
"execution_count": 10,
"id": "48d5bd0f-d33b-4b5e-bc91-b622cba7c0be",
"id": "36e1b625-3541-4046-a6ac-6fed5883492e",
"metadata": {},
"outputs": [],
"source": [
"portfolio_risk_styple_exposure, attributed_rtn = single_style(portfolio, risk_exp, risk_rtn, spec_rtn)"
]
},
{
"cell_type": "markdown",
"id": "69d85aa1-bbfa-41ca-9de8-97bb4039a651",
"metadata": {},
"source": [
"## 2.1 风格因子暴露"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "2bafbb46-6bdc-47c6-a9f3-077cb7fb8703",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"BTOP -1.050610\n",
"LEVERAGE -1.005935\n",
"EARNYILD -0.926693\n",
"SIZENL -0.021670\n",
"RESVOL 0.132134\n",
"LIQUIDTY 0.362404\n",
"GROWTH 0.493346\n",
"SIZE 0.667810\n",
"MOMENTUM 0.885153\n",
"BETA 1.272002\n",
"dtype: float64"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"portfolio_risk_styple_exposure.sort_values()"
]
},
{
"cell_type": "markdown",
"id": "070fabe4-77e0-4d41-81f8-91775d460435",
"metadata": {},
"source": [
"## 2.2 收益归因"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "5fc30cfa-2213-4415-a160-78f4d896581c",
"metadata": {},
"metadata": {},
"outputs": [
"outputs": [
{
{
...
@@ -474,8 +656,6 @@
...
@@ -474,8 +656,6 @@
" <thead>\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th></th>\n",
" <th>trade_date</th>\n",
" <th>FactorID</th>\n",
" <th>BETA</th>\n",
" <th>BETA</th>\n",
" <th>MOMENTUM</th>\n",
" <th>MOMENTUM</th>\n",
" <th>SIZE</th>\n",
" <th>SIZE</th>\n",
...
@@ -484,8 +664,9 @@
...
@@ -484,8 +664,9 @@
" <th>GROWTH</th>\n",
" <th>GROWTH</th>\n",
" <th>BTOP</th>\n",
" <th>BTOP</th>\n",
" <th>LEVERAGE</th>\n",
" <th>LEVERAGE</th>\n",
" <th>LIQUIDTY</th>\n",
" <th>SIZENL</th>\n",
" <th>...</th>\n",
" <th>...</th>\n",
" <th>Utilities</th>\n",
" <th>Telecom</th>\n",
" <th>Telecom</th>\n",
" <th>AgriForest</th>\n",
" <th>AgriForest</th>\n",
" <th>CHEM</th>\n",
" <th>CHEM</th>\n",
...
@@ -495,281 +676,63 @@
...
@@ -495,281 +676,63 @@
" <th>ELECEQP</th>\n",
" <th>ELECEQP</th>\n",
" <th>AERODEF</th>\n",
" <th>AERODEF</th>\n",
" <th>Conglomerates</th>\n",
" <th>Conglomerates</th>\n",
" <th>SPECIFIC</th>\n",
" </tr>\n",
" </tr>\n",
" </thead>\n",
" </thead>\n",
" <tbody>\n",
" <tbody>\n",
" <tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <th>0</th>\n",
" <td>2021-06-30</td>\n",
" <td>0.001374</td>\n",
" <td>0</td>\n",
" <td>0.001052</td>\n",
" <td>17.41000</td>\n",
" <td>-0.000469</td>\n",
" <td>-0.36765</td>\n",
" <td>0.001853</td>\n",
" <td>-1.245280</td>\n",
" <td>-0.000339</td>\n",
" <td>-1.010080</td>\n",
" <td>0.000397</td>\n",
" <td>4.308910</td>\n",
" <td>-0.000682</td>\n",
" <td>0.573464</td>\n",
" <td>0.00062</td>\n",
" <td>0.578040</td>\n",
" <td>0.00096</td>\n",
" <td>-0.124983</td>\n",
" <td>0.000014</td>\n",
" <td>...</td>\n",
" <td>-3.179720</td>\n",
" <td>4.888220</td>\n",
" <td>-8.581790</td>\n",
" <td>-0.200272</td>\n",
" <td>-3.514560</td>\n",
" <td>-17.73480</td>\n",
" <td>5.79121</td>\n",
" <td>6.31339</td>\n",
" <td>7.05734</td>\n",
" <td>-5.14934</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2021-06-30</td>\n",
" <td>1</td>\n",
" <td>-0.36765</td>\n",
" <td>26.03980</td>\n",
" <td>11.082400</td>\n",
" <td>-2.756620</td>\n",
" <td>-6.939070</td>\n",
" <td>5.527240</td>\n",
" <td>-4.961540</td>\n",
" <td>-3.526840</td>\n",
" <td>...</td>\n",
" <td>6.439720</td>\n",
" <td>-14.841600</td>\n",
" <td>0.362207</td>\n",
" <td>-1.501860</td>\n",
" <td>-4.812920</td>\n",
" <td>-2.10750</td>\n",
" <td>-20.00980</td>\n",
" <td>10.43610</td>\n",
" <td>-6.98387</td>\n",
" <td>2.60997</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2021-06-30</td>\n",
" <td>2</td>\n",
" <td>-1.24528</td>\n",
" <td>11.08240</td>\n",
" <td>27.074300</td>\n",
" <td>0.108353</td>\n",
" <td>-6.563630</td>\n",
" <td>4.981810</td>\n",
" <td>-3.827610</td>\n",
" <td>-0.831560</td>\n",
" <td>...</td>\n",
" <td>-4.848280</td>\n",
" <td>-6.873530</td>\n",
" <td>-0.902493</td>\n",
" <td>1.415400</td>\n",
" <td>-2.572230</td>\n",
" <td>-5.72210</td>\n",
" <td>-9.31991</td>\n",
" <td>2.72661</td>\n",
" <td>-4.81947</td>\n",
" <td>3.90944</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2021-06-30</td>\n",
" <td>3</td>\n",
" <td>-1.01008</td>\n",
" <td>-2.75662</td>\n",
" <td>0.108353</td>\n",
" <td>5.242660</td>\n",
" <td>-0.873673</td>\n",
" <td>-1.437590</td>\n",
" <td>0.176521</td>\n",
" <td>1.665720</td>\n",
" <td>...</td>\n",
" <td>0.312074</td>\n",
" <td>-0.008442</td>\n",
" <td>1.838370</td>\n",
" <td>5.241490</td>\n",
" <td>0.620696</td>\n",
" <td>10.86830</td>\n",
" <td>3.04039</td>\n",
" <td>-4.13551</td>\n",
" <td>-3.11186</td>\n",
" <td>-0.49132</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2021-06-30</td>\n",
" <td>4</td>\n",
" <td>4.30891</td>\n",
" <td>-6.93907</td>\n",
" <td>-6.563630</td>\n",
" <td>-0.873673</td>\n",
" <td>15.639900</td>\n",
" <td>-1.775660</td>\n",
" <td>5.010080</td>\n",
" <td>0.990544</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>0.
58011
0</td>\n",
" <td>0.0</td>\n",
" <td>
5.490300
</td>\n",
" <td>
-4.097016e-08
</td>\n",
" <td>-
3.171420
</td>\n",
" <td>-
1.626208e-07
</td>\n",
" <td>
3.719090
</td>\n",
" <td>
-0.00024
</td>\n",
" <td>
-0.874184
</td>\n",
" <td>
0.0
</td>\n",
" <td>
4.54887
</td>\n",
" <td>
0.0
</td>\n",
" <td>
1.97913
</td>\n",
" <td>
9.822411e-09
</td>\n",
" <td>
2.80706
</td>\n",
" <td>
0.0
</td>\n",
" <td>
10.57450
</td>\n",
" <td>
-1.424358e-08
</td>\n",
" <td>
3.98674
</td>\n",
" <td>
-0.008951
</td>\n",
" </tr>\n",
" </tr>\n",
" </tbody>\n",
" </tbody>\n",
"</table>\n",
"</table>\n",
"<p>
5 rows × 40
columns</p>\n",
"<p>
1 rows × 39
columns</p>\n",
"</div>"
"</div>"
],
],
"text/plain": [
"text/plain": [
" trade_date FactorID BETA MOMENTUM SIZE EARNYILD RESVOL \\\n",
" BETA MOMENTUM SIZE EARNYILD RESVOL GROWTH BTOP \\\n",
"0 2021-06-30 0 17.41000 -0.36765 -1.245280 -1.010080 4.308910 \n",
"0 0.001374 0.001052 -0.000469 0.001853 -0.000339 0.000397 -0.000682 \n",
"1 2021-06-30 1 -0.36765 26.03980 11.082400 -2.756620 -6.939070 \n",
"2 2021-06-30 2 -1.24528 11.08240 27.074300 0.108353 -6.563630 \n",
"3 2021-06-30 3 -1.01008 -2.75662 0.108353 5.242660 -0.873673 \n",
"4 2021-06-30 4 4.30891 -6.93907 -6.563630 -0.873673 15.639900 \n",
"\n",
"\n",
" GROWTH BTOP LEVERAGE ... Utilities Telecom AgriForest \\\n",
" LEVERAGE LIQUIDTY SIZENL ... Telecom AgriForest CHEM \\\n",
"0 0.573464 0.578040 -0.124983 ... -3.179720 4.888220 -8.581790 \n",
"0 0.00062 0.00096 0.000014 ... 0.0 -4.097016e-08 -1.626208e-07 \n",
"1 5.527240 -4.961540 -3.526840 ... 6.439720 -14.841600 0.362207 \n",
"2 4.981810 -3.827610 -0.831560 ... -4.848280 -6.873530 -0.902493 \n",
"3 -1.437590 0.176521 1.665720 ... 0.312074 -0.008442 1.838370 \n",
"4 -1.775660 5.010080 0.990544 ... 0.580110 5.490300 -3.171420 \n",
"\n",
"\n",
" CHEM Media IronSteel NonBankFinan ELECEQP AERODEF \\\n",
" Media IronSteel NonBankFinan ELECEQP AERODEF Conglomerates \\\n",
"0 -0.200272 -3.514560 -17.73480 5.79121 6.31339 7.05734 \n",
"0 -0.00024 0.0 0.0 9.822411e-09 0.0 -1.424358e-08 \n",
"1 -1.501860 -4.812920 -2.10750 -20.00980 10.43610 -6.98387 \n",
"2 1.415400 -2.572230 -5.72210 -9.31991 2.72661 -4.81947 \n",
"3 5.241490 0.620696 10.86830 3.04039 -4.13551 -3.11186 \n",
"4 3.719090 -0.874184 4.54887 1.97913 2.80706 10.57450 \n",
"\n",
"\n",
" Conglomerates \n",
" SPECIFIC \n",
"0 -5.14934 \n",
"0 -0.008951 \n",
"1 2.60997 \n",
"2 3.90944 \n",
"3 -0.49132 \n",
"4 3.98674 \n",
"\n",
"\n",
"[5 rows x 40 columns]"
"[1 rows x 39 columns]"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cov = risk_cov(trade_dt, trade_dt)\n",
"cov.head()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "88854e5b-ad2e-4629-bb8c-9e58a851a298",
"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>trade_date</th>\n",
" <th>security_code</th>\n",
" <th>secShortName</th>\n",
" <th>symbol</th>\n",
" <th>SRISK</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2021-06-30</td>\n",
" <td>2010000045</td>\n",
" <td>海信视像</td>\n",
" <td>600060.XSHG</td>\n",
" <td>43.597</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2021-06-30</td>\n",
" <td>2010000121</td>\n",
" <td>中青旅</td>\n",
" <td>600138.XSHG</td>\n",
" <td>20.325</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2021-06-30</td>\n",
" <td>2010000171</td>\n",
" <td>复星医药</td>\n",
" <td>600196.XSHG</td>\n",
" <td>49.067</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2021-06-30</td>\n",
" <td>2010000377</td>\n",
" <td>片仔癀</td>\n",
" <td>600436.XSHG</td>\n",
" <td>36.564</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2021-06-30</td>\n",
" <td>2010000438</td>\n",
" <td>贵州茅台</td>\n",
" <td>600519.XSHG</td>\n",
" <td>24.513</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" trade_date security_code secShortName symbol SRISK\n",
"0 2021-06-30 2010000045 海信视像 600060.XSHG 43.597\n",
"1 2021-06-30 2010000121 中青旅 600138.XSHG 20.325\n",
"2 2021-06-30 2010000171 复星医药 600196.XSHG 49.067\n",
"3 2021-06-30 2010000377 片仔癀 600436.XSHG 36.564\n",
"4 2021-06-30 2010000438 贵州茅台 600519.XSHG 24.513"
]
]
},
},
"execution_count":
8
,
"execution_count":
12
,
"metadata": {},
"metadata": {},
"output_type": "execute_result"
"output_type": "execute_result"
}
}
],
],
"source": [
"source": [
"spec_risk = special_risk(portfolio.SKCODE, trade_dt, trade_dt)\n",
"attributed_rtn"
"spec_risk.head()"
]
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "017644bc-3053-4170-89fb-3e87d7ee9339",
"metadata": {},
"outputs": [],
"source": []
}
}
],
],
"metadata": {
"metadata": {
...
...
attribution/020 brison attribution.ipynb
View file @
3e50b6a9
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
"cells": [
"cells": [
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count":
1
,
"execution_count":
2
,
"id": "a1fbf6c8-e22a-4d0d-b3d8-c6c54d60bce1",
"id": "a1fbf6c8-e22a-4d0d-b3d8-c6c54d60bce1",
"metadata": {},
"metadata": {},
"outputs": [],
"outputs": [],
...
@@ -26,18 +26,17 @@
...
@@ -26,18 +26,17 @@
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count":
2
,
"execution_count":
3
,
"id": "1813212b-9027-4831-a245-1a19a44e787b",
"id": "1813212b-9027-4831-a245-1a19a44e787b",
"metadata": {},
"metadata": {},
"outputs": [],
"outputs": [],
"source": [
"source": [
"trade_dt = adjustDateByCalendar(\"china.sse\", \"2021-06-30\").strftime(\"%Y%m%d\")\n",
"trade_dt = adjustDateByCalendar(\"china.sse\", \"2021-06-30\").strftime(\"%Y%m%d\")"
"portfolio_date = \"20211231\""
]
]
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count":
3
,
"execution_count":
4
,
"id": "21a0b455-1eb3-47f0-8a9c-15533dd12939",
"id": "21a0b455-1eb3-47f0-8a9c-15533dd12939",
"metadata": {},
"metadata": {},
"outputs": [
"outputs": [
...
@@ -67,6 +66,7 @@
...
@@ -67,6 +66,7 @@
" <th>SKNAME</th>\n",
" <th>SKNAME</th>\n",
" <th>HOLDMKTCAP</th>\n",
" <th>HOLDMKTCAP</th>\n",
" <th>HOLDAMT</th>\n",
" <th>HOLDAMT</th>\n",
" <th>NAVRTO</th>\n",
" <th>weight</th>\n",
" <th>weight</th>\n",
" </tr>\n",
" </tr>\n",
" </thead>\n",
" </thead>\n",
...
@@ -74,75 +74,80 @@
...
@@ -74,75 +74,80 @@
" <tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <th>0</th>\n",
" <td>1030000006</td>\n",
" <td>1030000006</td>\n",
" <td>2010000377</td>\n",
" <td>2010000045</td>\n",
" <td>片仔癀</td>\n",
" <td>海信视像</td>\n",
" <td>69974163.35</td>\n",
" <td>71468410.0</td>\n",
" <td>160069.0</td>\n",
" <td>4228900.0</td>\n",
" <td>0.092948</td>\n",
" <td>1.61</td>\n",
" <td>0.021116</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <th>1</th>\n",
" <td>1030000006</td>\n",
" <td>1030000006</td>\n",
" <td>2010000671</td>\n",
" <td>2010000121</td>\n",
" <td>中航沈飞</td>\n",
" <td>中青旅</td>\n",
" <td>57228444.00</td>\n",
" <td>33714502.5</td>\n",
" <td>841100.0</td>\n",
" <td>3210905.0</td>\n",
" <td>0.076017</td>\n",
" <td>0.76</td>\n",
" <td>0.009961</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <th>2</th>\n",
" <td>1030000006</td>\n",
" <td>1030000006</td>\n",
" <td>2010000773</td>\n",
" <td>2010000171</td>\n",
" <td>中航高科</td>\n",
" <td>复星医药</td>\n",
" <td>59143464.00</td>\n",
" <td>48781519.0</td>\n",
" <td>1653900.0</td>\n",
" <td>676300.0</td>\n",
" <td>0.078561</td>\n",
" <td>1.10</td>\n",
" <td>0.014413</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <th>3</th>\n",
" <td>1030000006</td>\n",
" <td>1030000006</td>\n",
" <td>2010000804</td>\n",
" <td>2010000377</td>\n",
" <td>航发动力</td>\n",
" <td>片仔癀</td>\n",
" <td>76564490.00</td>\n",
" <td>89447057.5</td>\n",
" <td>1206500.0</td>\n",
" <td>199525.0</td>\n",
" <td>0.101702</td>\n",
" <td>2.02</td>\n",
" <td>0.026428</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <th>4</th>\n",
" <td>1030000006</td>\n",
" <td>1030000006</td>\n",
" <td>2010003333</td>\n",
" <td>2010000438</td>\n",
" <td>爱尔眼科</td>\n",
" <td>贵州茅台</td>\n",
" <td>61072572.12</td>\n",
" <td>136307792.5</td>\n",
" <td>1444479.0</td>\n",
" <td>66275.0</td>\n",
" <td>0.081123</td>\n",
" <td>3.08</td>\n",
" <td>0.040273</td>\n",
" </tr>\n",
" </tr>\n",
" </tbody>\n",
" </tbody>\n",
"</table>\n",
"</table>\n",
"</div>"
"</div>"
],
],
"text/plain": [
"text/plain": [
" pid security_code SKNAME HOLDMKTCAP HOLDAMT weight\n",
" pid security_code SKNAME HOLDMKTCAP HOLDAMT
NAVRTO
weight\n",
"0 1030000006 2010000
377 片仔癀 69974163.35 160069.0 0.092948
\n",
"0 1030000006 2010000
045 海信视像 71468410.0 4228900.0 1.61 0.021116
\n",
"1 1030000006 2010000
671 中航沈飞 57228444.00 841100.0 0.076017
\n",
"1 1030000006 2010000
121 中青旅 33714502.5 3210905.0 0.76 0.009961
\n",
"2 1030000006 2010000
773 中航高科 59143464.00 1653900.0 0.078561
\n",
"2 1030000006 2010000
171 复星医药 48781519.0 676300.0 1.10 0.014413
\n",
"3 1030000006 2010000
804 航发动力 76564490.00 1206500.0 0.101702
\n",
"3 1030000006 2010000
377 片仔癀 89447057.5 199525.0 2.02 0.026428
\n",
"4 1030000006 201000
3333 爱尔眼科 61072572.12 1444479.0 0.08112
3"
"4 1030000006 201000
0438 贵州茅台 136307792.5 66275.0 3.08 0.04027
3"
]
]
},
},
"execution_count":
3
,
"execution_count":
4
,
"metadata": {},
"metadata": {},
"output_type": "execute_result"
"output_type": "execute_result"
}
}
],
],
"source": [
"source": [
"# 获取指定基金在基准日的持仓(portfolio date)\n",
"# 获取指定基金在基准日的持仓(portfolio date)\n",
"portfolio = fd_skdetail(\"1030000006\", trade_dt=
portfolio_date
)\n",
"portfolio = fd_skdetail(\"1030000006\", trade_dt=
trade_dt
)\n",
"portfolio.head()"
"portfolio.head()"
]
]
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count":
4
,
"execution_count":
6
,
"id": "82ca3a10-45e2-4b49-8be1-1e77104a1a52",
"id": "82ca3a10-45e2-4b49-8be1-1e77104a1a52",
"metadata": {},
"metadata": {},
"outputs": [
"outputs": [
...
@@ -176,38 +181,38 @@
...
@@ -176,38 +181,38 @@
" <tbody>\n",
" <tbody>\n",
" <tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <th>0</th>\n",
" <td>2021-
12-31
</td>\n",
" <td>2021-
06-30
</td>\n",
" <td>2010000001</td>\n",
" <td>2010000001</td>\n",
" <td>浦发银行</td>\n",
" <td>浦发银行</td>\n",
" <td>0.00
4
5</td>\n",
" <td>0.00
5
5</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <th>1</th>\n",
" <td>2021-
12-31
</td>\n",
" <td>2021-
06-30
</td>\n",
" <td>2010000010</td>\n",
" <td>2010000010</td>\n",
" <td>上海机场</td>\n",
" <td>上海机场</td>\n",
" <td>0.002
0
</td>\n",
" <td>0.002
2
</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <th>2</th>\n",
" <td>2021-
12-31
</td>\n",
" <td>2021-
06-30
</td>\n",
" <td>2010000011</td>\n",
" <td>2010000011</td>\n",
" <td>包钢股份</td>\n",
" <td>包钢股份</td>\n",
" <td>0.00
29
</td>\n",
" <td>0.00
17
</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <th>3</th>\n",
" <td>2021-
12-31
</td>\n",
" <td>2021-
06-30
</td>\n",
" <td>2010000012</td>\n",
" <td>2010000012</td>\n",
" <td>华能国际</td>\n",
" <td>华能国际</td>\n",
" <td>0.00
1
9</td>\n",
" <td>0.00
0
9</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <th>4</th>\n",
" <td>2021-
12-31
</td>\n",
" <td>2021-
06-30
</td>\n",
" <td>2010000014</td>\n",
" <td>2010000014</td>\n",
" <td>华夏银行</td>\n",
" <td>华夏银行</td>\n",
" <td>0.001
6
</td>\n",
" <td>0.001
8
</td>\n",
" </tr>\n",
" </tr>\n",
" </tbody>\n",
" </tbody>\n",
"</table>\n",
"</table>\n",
...
@@ -215,27 +220,27 @@
...
@@ -215,27 +220,27 @@
],
],
"text/plain": [
"text/plain": [
" trade_date security_code sname weight\n",
" trade_date security_code sname weight\n",
"0 2021-
12-31 2010000001 浦发银行 0.004
5\n",
"0 2021-
06-30 2010000001 浦发银行 0.005
5\n",
"1 2021-
12-31 2010000010 上海机场 0.0020
\n",
"1 2021-
06-30 2010000010 上海机场 0.0022
\n",
"2 2021-
12-31 2010000011 包钢股份 0.0029
\n",
"2 2021-
06-30 2010000011 包钢股份 0.0017
\n",
"3 2021-
12-31 2010000012 华能国际 0.001
9\n",
"3 2021-
06-30 2010000012 华能国际 0.000
9\n",
"4 2021-
12-31 2010000014 华夏银行 0.0016
"
"4 2021-
06-30 2010000014 华夏银行 0.0018
"
]
]
},
},
"execution_count":
4
,
"execution_count":
6
,
"metadata": {},
"metadata": {},
"output_type": "execute_result"
"output_type": "execute_result"
}
}
],
],
"source": [
"source": [
"# 获取基准指数的成分\n",
"# 获取基准指数的成分\n",
"idx_comp = index_component(\"2070000060\",
portfolio_date, portfolio_date
)\n",
"idx_comp = index_component(\"2070000060\",
trade_dt, trade_dt
)\n",
"idx_comp.head()"
"idx_comp.head()"
]
]
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count":
5
,
"execution_count":
9
,
"id": "6d57d8f9-6c1c-4a41-ae64-87763648a22b",
"id": "6d57d8f9-6c1c-4a41-ae64-87763648a22b",
"metadata": {},
"metadata": {},
"outputs": [
"outputs": [
...
@@ -269,35 +274,35 @@
...
@@ -269,35 +274,35 @@
" <tbody>\n",
" <tbody>\n",
" <tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <th>0</th>\n",
" <td>2021-
12-31
</td>\n",
" <td>2021-
06-30
</td>\n",
" <td>2010000001</td>\n",
" <td>2010000001</td>\n",
" <td>480000</td>\n",
" <td>480000</td>\n",
" <td>银行</td>\n",
" <td>银行</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <th>1</th>\n",
" <td>2021-
12-31
</td>\n",
" <td>2021-
06-30
</td>\n",
" <td>2010000005</td>\n",
" <td>2010000005</td>\n",
" <td>420000</td>\n",
" <td>420000</td>\n",
" <td>交通运输</td>\n",
" <td>交通运输</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <th>2</th>\n",
" <td>2021-
12-31
</td>\n",
" <td>2021-
06-30
</td>\n",
" <td>2010000007</td>\n",
" <td>2010000007</td>\n",
" <td>280000</td>\n",
" <td>280000</td>\n",
" <td>汽车</td>\n",
" <td>汽车</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <th>3</th>\n",
" <td>2021-
12-31
</td>\n",
" <td>2021-
06-30
</td>\n",
" <td>2010000008</td>\n",
" <td>2010000008</td>\n",
" <td>430000</td>\n",
" <td>430000</td>\n",
" <td>房地产</td>\n",
" <td>房地产</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <th>4</th>\n",
" <td>2021-
12-31
</td>\n",
" <td>2021-
06-30
</td>\n",
" <td>2010000009</td>\n",
" <td>2010000009</td>\n",
" <td>410000</td>\n",
" <td>410000</td>\n",
" <td>公用事业</td>\n",
" <td>公用事业</td>\n",
...
@@ -308,35 +313,117 @@
...
@@ -308,35 +313,117 @@
],
],
"text/plain": [
"text/plain": [
" trade_date security_code industry_code industry_name\n",
" trade_date security_code industry_code industry_name\n",
"0 2021-
12-31
2010000001 480000 银行\n",
"0 2021-
06-30
2010000001 480000 银行\n",
"1 2021-
12-31
2010000005 420000 交通运输\n",
"1 2021-
06-30
2010000005 420000 交通运输\n",
"2 2021-
12-31
2010000007 280000 汽车\n",
"2 2021-
06-30
2010000007 280000 汽车\n",
"3 2021-
12-31
2010000008 430000 房地产\n",
"3 2021-
06-30
2010000008 430000 房地产\n",
"4 2021-
12-31
2010000009 410000 公用事业"
"4 2021-
06-30
2010000009 410000 公用事业"
]
]
},
},
"execution_count":
5
,
"execution_count":
9
,
"metadata": {},
"metadata": {},
"output_type": "execute_result"
"output_type": "execute_result"
}
}
],
],
"source": [
"source": [
"# 获取行业分类信息\n",
"# 获取行业分类信息\n",
"ind = sw_industry_daily(
portfolio_date, portfolio_date
, 1)\n",
"ind = sw_industry_daily(
trade_dt, trade_dt
, 1)\n",
"ind.head()"
"ind.head()"
]
]
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count":
6
,
"execution_count":
11
,
"id": "fa17cc0d-61ad-4958-bf01-7cdc1c17230d",
"id": "fa17cc0d-61ad-4958-bf01-7cdc1c17230d",
"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>security_code</th>\n",
" <th>start_date</th>\n",
" <th>end_date</th>\n",
" <th>chg_pct</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2010000001</td>\n",
" <td>2021-06-30</td>\n",
" <td>2021-06-30</td>\n",
" <td>0.002004</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2010000005</td>\n",
" <td>2021-06-30</td>\n",
" <td>2021-06-30</td>\n",
" <td>0.001792</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2010000007</td>\n",
" <td>2021-06-30</td>\n",
" <td>2021-06-30</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2010000008</td>\n",
" <td>2021-06-30</td>\n",
" <td>2021-06-30</td>\n",
" <td>0.014689</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2010000009</td>\n",
" <td>2021-06-30</td>\n",
" <td>2021-06-30</td>\n",
" <td>-0.006601</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" security_code start_date end_date chg_pct\n",
"0 2010000001 2021-06-30 2021-06-30 0.002004\n",
"1 2010000005 2021-06-30 2021-06-30 0.001792\n",
"2 2010000007 2021-06-30 2021-06-30 0.000000\n",
"3 2010000008 2021-06-30 2021-06-30 0.014689\n",
"4 2010000009 2021-06-30 2021-06-30 -0.006601"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"source": [
"# 获取股票的区间收益,brison分解针对指定区间进行\n",
"# 获取股票的区间收益,brison分解针对指定区间进行\n",
"# 下面的例子,分解20210630到20211231区间的收益\n",
"# 下面的例子,分解20210630到20211231区间的收益\n",
"\n",
"\n",
"rtns = stk_return(trade_dt, \"20211231\")"
"rtns = stk_return(trade_dt, trade_dt)\n",
"rtns.head()"
]
]
},
},
{
{
...
@@ -356,12 +443,14 @@
...
@@ -356,12 +443,14 @@
"* **TR**: 总超额收益\n",
"* **TR**: 总超额收益\n",
"* **SR**: 证券选择收益\n",
"* **SR**: 证券选择收益\n",
"* **AR**: 行业配置收益\n",
"* **AR**: 行业配置收益\n",
"* **IR**: 交互收益"
"* **IR**: 交互收益\n",
"\n",
"以下的归因我们都只做了 **一天** 的结果,区间归因即为每日归因的累加。"
]
]
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count":
7
,
"execution_count":
12
,
"id": "41d6c18d-2ff7-4592-89cb-d19c4e8cc3e1",
"id": "41d6c18d-2ff7-4592-89cb-d19c4e8cc3e1",
"metadata": {},
"metadata": {},
"outputs": [
"outputs": [
...
@@ -369,7 +458,7 @@
...
@@ -369,7 +458,7 @@
"name": "stdout",
"name": "stdout",
"output_type": "stream",
"output_type": "stream",
"text": [
"text": [
"Wall time:
27
ms\n"
"Wall time:
86.1
ms\n"
]
]
}
}
],
],
...
@@ -381,7 +470,7 @@
...
@@ -381,7 +470,7 @@
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count":
8
,
"execution_count":
13
,
"id": "b31e7832-ee3f-43c8-b931-022e2f855919",
"id": "b31e7832-ee3f-43c8-b931-022e2f855919",
"metadata": {},
"metadata": {},
"outputs": [
"outputs": [
...
@@ -431,380 +520,380 @@
...
@@ -431,380 +520,380 @@
" <tr>\n",
" <tr>\n",
" <th>交通运输</th>\n",
" <th>交通运输</th>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.02
6
4</td>\n",
" <td>0.02
9
4</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.0
05835
</td>\n",
" <td>0.0
13769
</td>\n",
" <td>-
0.00015
4</td>\n",
" <td>-
4.048145e-0
4</td>\n",
" <td>-0.000
154
</td>\n",
" <td>-0.000
405
</td>\n",
" <td>-0.000
154
</td>\n",
" <td>-0.000
405
</td>\n",
" <td>
0.00015
4</td>\n",
" <td>
4.048145e-0
4</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>休闲服务</th>\n",
" <th>休闲服务</th>\n",
" <td>0.0
00000
</td>\n",
" <td>0.0
39602
</td>\n",
" <td>0.01
07
</td>\n",
" <td>0.01
49
</td>\n",
" <td>
0.000000
</td>\n",
" <td>
-0.006466
</td>\n",
" <td>-0.
260787
</td>\n",
" <td>-0.
004642
</td>\n",
" <td>
0.002790
</td>\n",
" <td>
-1.868824e-04
</td>\n",
" <td>
0.002790
</td>\n",
" <td>
-0.000027
</td>\n",
" <td>
0.002790
</td>\n",
" <td>
-0.000115
</td>\n",
" <td>-
0.002790
</td>\n",
" <td>-
4.504017e-05
</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>传媒</th>\n",
" <th>传媒</th>\n",
" <td>0.0
00000
</td>\n",
" <td>0.0
36138
</td>\n",
" <td>0.01
07
</td>\n",
" <td>0.01
40
</td>\n",
" <td>
0.000000
</td>\n",
" <td>
-0.012678
</td>\n",
" <td>
-0.051229
</td>\n",
" <td>
0.000715
</td>\n",
" <td>
0.000548
</td>\n",
" <td>
-4.681614e-04
</td>\n",
" <td>
0.00054
8</td>\n",
" <td>
-0.00018
8</td>\n",
" <td>0.000
548
</td>\n",
" <td>0.000
016
</td>\n",
" <td>-
0.000548
</td>\n",
" <td>-
2.964908e-04
</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>公用事业</th>\n",
" <th>公用事业</th>\n",
" <td>0.0000
00
</td>\n",
" <td>0.0000
12
</td>\n",
" <td>0.0
240
</td>\n",
" <td>0.0
177
</td>\n",
" <td>0.0
00000
</td>\n",
" <td>0.0
42125
</td>\n",
" <td>0.
319549
</td>\n",
" <td>0.
003800
</td>\n",
" <td>-
0.007669
</td>\n",
" <td>-
6.675646e-05
</td>\n",
" <td>
-0.007669
</td>\n",
" <td>
0.000678
</td>\n",
" <td>-0.00
7669
</td>\n",
" <td>-0.00
0067
</td>\n",
" <td>
0.007669
</td>\n",
" <td>
-6.778995e-04
</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>农林牧渔</th>\n",
" <th>农林牧渔</th>\n",
" <td>0.00000
0
</td>\n",
" <td>0.00000
3
</td>\n",
" <td>0.016
3
</td>\n",
" <td>0.016
1
</td>\n",
" <td>
0.000000
</td>\n",
" <td>
-0.007081
</td>\n",
" <td>-0.005
454
</td>\n",
" <td>-0.005
968
</td>\n",
" <td>
0.000089
</td>\n",
" <td>
9.606328e-05
</td>\n",
" <td>
0.000089
</td>\n",
" <td>
-0.000018
</td>\n",
" <td>0.0000
89
</td>\n",
" <td>0.0000
96
</td>\n",
" <td>
-0.000089
</td>\n",
" <td>
1.792142e-05
</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>化工</th>\n",
" <th>化工</th>\n",
" <td>0.0000
00
</td>\n",
" <td>0.0000
96
</td>\n",
" <td>0.03
82
</td>\n",
" <td>0.03
47
</td>\n",
" <td>0.0
00000
</td>\n",
" <td>0.0
32804
</td>\n",
" <td>
-0.006631
</td>\n",
" <td>
0.004375
</td>\n",
" <td>
0.000253
</td>\n",
" <td>
-1.486653e-04
</td>\n",
" <td>0.000
253
</td>\n",
" <td>0.000
986
</td>\n",
" <td>
0.000253
</td>\n",
" <td>
-0.000151
</td>\n",
" <td>-
0.000253
</td>\n",
" <td>-
9.837681e-04
</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>医药生物</th>\n",
" <th>医药生物</th>\n",
" <td>0.
646329
</td>\n",
" <td>0.
541291
</td>\n",
" <td>0.
0971
</td>\n",
" <td>0.
1119
</td>\n",
" <td>
-0.129286
</td>\n",
" <td>
0.002162
</td>\n",
" <td>
-0.217245
</td>\n",
" <td>
0.001370
</td>\n",
" <td>
-0.062466
</td>\n",
" <td>
1.016734e-03
</td>\n",
" <td>0.00
8541
</td>\n",
" <td>0.00
0089
</td>\n",
" <td>
-0.119317
</td>\n",
" <td>
0.000588
</td>\n",
" <td>
0.048310
</td>\n",
" <td>
3.399191e-04
</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>商业贸易</th>\n",
" <th>商业贸易</th>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.002
1
</td>\n",
" <td>0.002
6
</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>
-0.170496
</td>\n",
" <td>
0.000918
</td>\n",
" <td>
0.000358
</td>\n",
" <td>
-2.386400e-06
</td>\n",
" <td>
0.000358
</td>\n",
" <td>
-0.000002
</td>\n",
" <td>
0.000358
</td>\n",
" <td>
-0.000002
</td>\n",
" <td>
-0.000358
</td>\n",
" <td>
2.386400e-06
</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>国防军工</th>\n",
" <th>国防军工</th>\n",
" <td>0.
25628
0</td>\n",
" <td>0.
00000
0</td>\n",
" <td>0.01
4
9</td>\n",
" <td>0.01
2
9</td>\n",
" <td>0.
185243
</td>\n",
" <td>0.
000000
</td>\n",
" <td>0.
258038
</td>\n",
" <td>0.
014161
</td>\n",
" <td>
0.043629
</td>\n",
" <td>
-1.826710e-04
</td>\n",
" <td>-0.00
1085
</td>\n",
" <td>-0.00
0183
</td>\n",
" <td>
0.062285
</td>\n",
" <td>
-0.000183
</td>\n",
" <td>
-0.017571
</td>\n",
" <td>
1.826710e-04
</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>家用电器</th>\n",
" <th>家用电器</th>\n",
" <td>0.0
00000
</td>\n",
" <td>0.0
50703
</td>\n",
" <td>0.03
18
</td>\n",
" <td>0.03
63
</td>\n",
" <td>
0.000000
</td>\n",
" <td>
-0.002778
</td>\n",
" <td>
-0.009740
</td>\n",
" <td>
0.005931
</td>\n",
" <td>
0.000310
</td>\n",
" <td>
-3.561571e-04
</td>\n",
" <td>
0.000310
</td>\n",
" <td>
-0.000316
</td>\n",
" <td>0.000
310
</td>\n",
" <td>0.000
085
</td>\n",
" <td>-
0.000310
</td>\n",
" <td>-
1.254411e-04
</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>建筑材料</th>\n",
" <th>建筑材料</th>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.01
26
</td>\n",
" <td>0.01
11
</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>
0.004792
</td>\n",
" <td>
-0.001708
</td>\n",
" <td>
-0.000060
</td>\n",
" <td>
1.896090e-05
</td>\n",
" <td>
-0.000060
</td>\n",
" <td>
0.000019
</td>\n",
" <td>
-0.000060
</td>\n",
" <td>
0.000019
</td>\n",
" <td>
0.000060
</td>\n",
" <td>
-1.896090e-05
</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>建筑装饰</th>\n",
" <th>建筑装饰</th>\n",
" <td>0.00000
0
</td>\n",
" <td>0.00000
7
</td>\n",
" <td>0.01
60
</td>\n",
" <td>0.01
22
</td>\n",
" <td>
0.000000
</td>\n",
" <td>
-0.021015
</td>\n",
" <td>
0.342439
</td>\n",
" <td>
-0.002694
</td>\n",
" <td>
-0.005479
</td>\n",
" <td>
3.272320e-05
</td>\n",
" <td>-0.00
5479
</td>\n",
" <td>-0.00
0224
</td>\n",
" <td>
-0.005479
</td>\n",
" <td>
0.000033
</td>\n",
" <td>
0.005479
</td>\n",
" <td>
2.233851e-04
</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>房地产</th>\n",
" <th>房地产</th>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.0
183
</td>\n",
" <td>0.0
206
</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>
0.090156
</td>\n",
" <td>
-0.000414
</td>\n",
" <td>
-0.001650
</td>\n",
" <td>
8.521000e-06
</td>\n",
" <td>
-0.001650
</td>\n",
" <td>
0.000009
</td>\n",
" <td>
-0.001650
</td>\n",
" <td>
0.000009
</td>\n",
" <td>
0.001650
</td>\n",
" <td>
-8.521000e-06
</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>有色金属</th>\n",
" <th>有色金属</th>\n",
" <td>0.0
97392
</td>\n",
" <td>0.0
00007
</td>\n",
" <td>0.0
345
</td>\n",
" <td>0.0
243
</td>\n",
" <td>0.
387793
</td>\n",
" <td>0.
013247
</td>\n",
" <td>0.
344770
</td>\n",
" <td>0.
019732
</td>\n",
" <td>
0.025873
</td>\n",
" <td>
-4.794005e-04
</td>\n",
" <td>
0.001484
</td>\n",
" <td>
-0.000158
</td>\n",
" <td>
0.021683
</td>\n",
" <td>
-0.000479
</td>\n",
" <td>
0.002706
</td>\n",
" <td>
1.575546e-04
</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>机械设备</th>\n",
" <th>机械设备</th>\n",
" <td>0.0
00000
</td>\n",
" <td>0.0
50724
</td>\n",
" <td>0.02
3
6</td>\n",
" <td>0.02
4
6</td>\n",
" <td>
0.000000
</td>\n",
" <td>
-0.000273
</td>\n",
" <td>
-0.063295
</td>\n",
" <td>
0.018532
</td>\n",
" <td>
0.00149
4</td>\n",
" <td>
-4.697309e-0
4</td>\n",
" <td>
0.001494
</td>\n",
" <td>
-0.000463
</td>\n",
" <td>0.00
149
4</td>\n",
" <td>0.00
048
4</td>\n",
" <td>-
0.00149
4</td>\n",
" <td>-
4.912561e-0
4</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>汽车</th>\n",
" <th>汽车</th>\n",
" <td>0.00000
0
</td>\n",
" <td>0.00000
5
</td>\n",
" <td>0.032
6
</td>\n",
" <td>0.032
4
</td>\n",
" <td>
0.000000
</td>\n",
" <td>
-0.009157
</td>\n",
" <td>
0.0126
05</td>\n",
" <td>
-0.0033
05</td>\n",
" <td>
-0.000411
</td>\n",
" <td>
1.070463e-04
</td>\n",
" <td>-0.000
411
</td>\n",
" <td>-0.000
190
</td>\n",
" <td>
-0.000411
</td>\n",
" <td>
0.000107
</td>\n",
" <td>
0.000411
</td>\n",
" <td>
1.895696e-04
</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>电子</th>\n",
" <th>电子</th>\n",
" <td>0.0
00000
</td>\n",
" <td>0.0
65804
</td>\n",
" <td>0.
0971
</td>\n",
" <td>0.
1012
</td>\n",
" <td>0.0
00000
</td>\n",
" <td>0.0
17476
</td>\n",
" <td>0.01
4911
</td>\n",
" <td>0.01
9454
</td>\n",
" <td>-
0.001448
</td>\n",
" <td>-
8.187368e-04
</td>\n",
" <td>-0.00
1448
</td>\n",
" <td>-0.00
0200
</td>\n",
" <td>-0.00
1448
</td>\n",
" <td>-0.00
0689
</td>\n",
" <td>
0.001448
</td>\n",
" <td>
7.000751e-05
</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>电气设备</th>\n",
" <th>电气设备</th>\n",
" <td>0.00000
0
</td>\n",
" <td>0.00000
5
</td>\n",
" <td>0.
1042
</td>\n",
" <td>0.
0541
</td>\n",
" <td>
0.000000
</td>\n",
" <td>
-0.010346
</td>\n",
" <td>0.
237483
</td>\n",
" <td>0.
014837
</td>\n",
" <td>-
0.024746
</td>\n",
" <td>-
8.027072e-04
</td>\n",
" <td>-0.0
24746
</td>\n",
" <td>-0.0
01362
</td>\n",
" <td>-0.0
24746
</td>\n",
" <td>-0.0
00803
</td>\n",
" <td>
0.024746
</td>\n",
" <td>
1.362263e-03
</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>纺织服装</th>\n",
" <th>纺织服装</th>\n",
" <td>0.000027</td>\n",
" <td>0.0000</td>\n",
" <td>-0.000558</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.0003</td>\n",
" <td>-1.485314e-08</td>\n",
" <td>-0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>-0.341612</td>\n",
" <td>-1.485314e-08</td>\n",
" <td>0.000102</td>\n",
" <td>0.000102</td>\n",
" <td>0.000102</td>\n",
" <td>-0.000102</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>综合</th>\n",
" <th>综合</th>\n",
" <td>0.00000
0
</td>\n",
" <td>0.00000
7
</td>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" <td>0.019664</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>1.281863e-07</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>1.281863e-07</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>计算机</th>\n",
" <th>计算机</th>\n",
" <td>0.0000
00
</td>\n",
" <td>0.0000
15
</td>\n",
" <td>0.02
59
</td>\n",
" <td>0.02
73
</td>\n",
" <td>0.
000000
</td>\n",
" <td>0.
117384
</td>\n",
" <td>
-0.016668
</td>\n",
" <td>
0.017953
</td>\n",
" <td>
0.000432
</td>\n",
" <td>
-4.883305e-04
</td>\n",
" <td>0.00
0432
</td>\n",
" <td>0.00
2714
</td>\n",
" <td>
0.000432
</td>\n",
" <td>
-0.000490
</td>\n",
" <td>-
0.000432
</td>\n",
" <td>-
2.712942e-03
</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>轻工制造</th>\n",
" <th>轻工制造</th>\n",
" <td>0.0
00000
</td>\n",
" <td>0.0
14181
</td>\n",
" <td>0.00
29
</td>\n",
" <td>0.00
34
</td>\n",
" <td>
0.000000
</td>\n",
" <td>
-0.035708
</td>\n",
" <td>-0.
116237
</td>\n",
" <td>-0.
001493
</td>\n",
" <td>
0.000337
</td>\n",
" <td>
-5.013087e-04
</td>\n",
" <td>
0.000337
</td>\n",
" <td>
-0.000116
</td>\n",
" <td>
0.000337
</td>\n",
" <td>
-0.000016
</td>\n",
" <td>-
0.000337
</td>\n",
" <td>-
3.688828e-04
</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>通信</th>\n",
" <th>通信</th>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.010
3
</td>\n",
" <td>0.010
8
</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>
-0.016761
</td>\n",
" <td>
0.010520
</td>\n",
" <td>
0.000173
</td>\n",
" <td>
-1.136123e-04
</td>\n",
" <td>
0.000173
</td>\n",
" <td>
-0.000114
</td>\n",
" <td>
0.000173
</td>\n",
" <td>
-0.000114
</td>\n",
" <td>
-0.000173
</td>\n",
" <td>
1.136123e-04
</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>采掘</th>\n",
" <th>采掘</th>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.008
5
</td>\n",
" <td>0.008
0
</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.
118131
</td>\n",
" <td>0.
005232
</td>\n",
" <td>-
0.001004
</td>\n",
" <td>-
4.185280e-05
</td>\n",
" <td>-0.00
1004
</td>\n",
" <td>-0.00
0042
</td>\n",
" <td>-0.00
1004
</td>\n",
" <td>-0.00
0042
</td>\n",
" <td>
0.001004
</td>\n",
" <td>
4.185280e-05
</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>钢铁</th>\n",
" <th>钢铁</th>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.00
67
</td>\n",
" <td>0.00
59
</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.
335245
</td>\n",
" <td>0.
000734
</td>\n",
" <td>-
0.00224
6</td>\n",
" <td>-
4.333400e-0
6</td>\n",
" <td>-0.00
2246
</td>\n",
" <td>-0.00
0004
</td>\n",
" <td>-0.00
2246
</td>\n",
" <td>-0.00
0004
</td>\n",
" <td>
0.00224
6</td>\n",
" <td>
4.333400e-0
6</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>银行</th>\n",
" <th>银行</th>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.1
077
</td>\n",
" <td>0.1
239
</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>
-0.066267
</td>\n",
" <td>
0.009456
</td>\n",
" <td>
0.007137
</td>\n",
" <td>
-1.171629e-03
</td>\n",
" <td>
0.007137
</td>\n",
" <td>
-0.001172
</td>\n",
" <td>
0.007137
</td>\n",
" <td>
-0.001172
</td>\n",
" <td>
-0.007137
</td>\n",
" <td>
1.171629e-03
</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>非银金融</th>\n",
" <th>非银金融</th>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.1
017
</td>\n",
" <td>0.1
111
</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.0
19102
</td>\n",
" <td>0.0
07316
</td>\n",
" <td>-
0.001943
</td>\n",
" <td>-
8.128087e-04
</td>\n",
" <td>-0.00
194
3</td>\n",
" <td>-0.00
081
3</td>\n",
" <td>-0.00
194
3</td>\n",
" <td>-0.00
081
3</td>\n",
" <td>
0.001943
</td>\n",
" <td>
8.128087e-04
</td>\n",
" </tr>\n",
" </tr>\n",
" <tr>\n",
" <tr>\n",
" <th>食品饮料</th>\n",
" <th>食品饮料</th>\n",
" <td>0.
00000
0</td>\n",
" <td>0.
20127
0</td>\n",
" <td>0.1
25
1</td>\n",
" <td>0.1
39
1</td>\n",
" <td>0.00
0000
</td>\n",
" <td>0.00
1934
</td>\n",
" <td>
-0.050269
</td>\n",
" <td>
0.000774
</td>\n",
" <td>
0.006289
</td>\n",
" <td>
2.815118e-04
</td>\n",
" <td>0.00
6289
</td>\n",
" <td>0.00
0161
</td>\n",
" <td>0.00
6289
</td>\n",
" <td>0.00
0048
</td>\n",
" <td>
-0.006289
</td>\n",
" <td>
7.208423e-05
</td>\n",
" </tr>\n",
" </tr>\n",
" </tbody>\n",
" </tbody>\n",
"</table>\n",
"</table>\n",
"</div>"
"</div>"
],
],
"text/plain": [
"text/plain": [
" portfolio benchmark p_ret b_ret TR SR \\\n",
" portfolio benchmark p_ret b_ret
TR SR \\\n",
"industry \n",
"industry
\n",
"交通运输 0.000000 0.02
64 0.000000 0.005835 -0.000154 -0.000154
\n",
"交通运输 0.000000 0.02
94 0.000000 0.013769 -4.048145e-04 -0.000405
\n",
"休闲服务 0.0
00000 0.0107 0.000000 -0.260787 0.002790 0.002790
\n",
"休闲服务 0.0
39602 0.0149 -0.006466 -0.004642 -1.868824e-04 -0.000027
\n",
"传媒 0.0
00000 0.0107 0.000000 -0.051229 0.000548 0.00054
8 \n",
"传媒 0.0
36138 0.0140 -0.012678 0.000715 -4.681614e-04 -0.00018
8 \n",
"公用事业 0.0000
00 0.0240 0.000000 0.319549 -0.007669 -0.007669
\n",
"公用事业 0.0000
12 0.0177 0.042125 0.003800 -6.675646e-05 0.000678
\n",
"农林牧渔 0.00000
0 0.0163 0.000000 -0.005454 0.000089 0.000089
\n",
"农林牧渔 0.00000
3 0.0161 -0.007081 -0.005968 9.606328e-05 -0.000018
\n",
"化工 0.0000
00 0.0382 0.000000 -0.006631 0.000253 0.000253
\n",
"化工 0.0000
96 0.0347 0.032804 0.004375 -1.486653e-04 0.000986
\n",
"医药生物 0.
646329 0.0971 -0.129286 -0.217245 -0.062466 0.008541
\n",
"医药生物 0.
541291 0.1119 0.002162 0.001370 1.016734e-03 0.000089
\n",
"商业贸易 0.000000 0.002
1 0.000000 -0.170496 0.000358 0.000358
\n",
"商业贸易 0.000000 0.002
6 0.000000 0.000918 -2.386400e-06 -0.000002
\n",
"国防军工 0.
256280 0.0149 0.185243 0.258038 0.043629 -0.001085
\n",
"国防军工 0.
000000 0.0129 0.000000 0.014161 -1.826710e-04 -0.000183
\n",
"家用电器 0.0
00000 0.0318 0.000000 -0.009740 0.000310 0.000310
\n",
"家用电器 0.0
50703 0.0363 -0.002778 0.005931 -3.561571e-04 -0.000316
\n",
"建筑材料 0.000000 0.01
26 0.000000 0.004792 -0.000060 -0.000060
\n",
"建筑材料 0.000000 0.01
11 0.000000 -0.001708 1.896090e-05 0.000019
\n",
"建筑装饰 0.00000
0 0.0160 0.000000 0.342439 -0.005479 -0.005479
\n",
"建筑装饰 0.00000
7 0.0122 -0.021015 -0.002694 3.272320e-05 -0.000224
\n",
"房地产 0.000000 0.0
183 0.000000 0.090156 -0.001650 -0.001650
\n",
"房地产 0.000000 0.0
206 0.000000 -0.000414 8.521000e-06 0.000009
\n",
"有色金属 0.0
97392 0.0345 0.387793 0.344770 0.025873 0.001484
\n",
"有色金属 0.0
00007 0.0243 0.013247 0.019732 -4.794005e-04 -0.000158
\n",
"机械设备 0.0
00000 0.0236 0.000000 -0.063295 0.001494 0.001494
\n",
"机械设备 0.0
50724 0.0246 -0.000273 0.018532 -4.697309e-04 -0.000463
\n",
"汽车 0.00000
0 0.0326 0.000000 0.012605 -0.000411 -0.000411
\n",
"汽车 0.00000
5 0.0324 -0.009157 -0.003305 1.070463e-04 -0.000190
\n",
"电子 0.0
00000 0.0971 0.000000 0.014911 -0.001448 -0.001448
\n",
"电子 0.0
65804 0.1012 0.017476 0.019454 -8.187368e-04 -0.000200
\n",
"电气设备 0.00000
0 0.1042 0.000000 0.237483 -0.024746 -0.024746
\n",
"电气设备 0.00000
5 0.0541 -0.010346 0.014837 -8.027072e-04 -0.001362
\n",
"纺织服装 0.0000
00 0.0003 0.000000 -0.341612 0.000102 0.000102
\n",
"纺织服装 0.0000
27 0.0000 -0.000558 0.000000 -1.485314e-08 -0.000000
\n",
"综合 0.00000
0 0.0000 0.000000 0.000000 0.000000
0.000000 \n",
"综合 0.00000
7 0.0000 0.019664 0.000000 1.281863e-07
0.000000 \n",
"计算机 0.0000
00 0.0259 0.000000 -0.016668 0.000432 0.000432
\n",
"计算机 0.0000
15 0.0273 0.117384 0.017953 -4.883305e-04 0.002714
\n",
"轻工制造 0.0
00000 0.0029 0.000000 -0.116237 0.000337 0.000337
\n",
"轻工制造 0.0
14181 0.0034 -0.035708 -0.001493 -5.013087e-04 -0.000116
\n",
"通信 0.000000 0.010
3 0.000000 -0.016761 0.000173 0.000173
\n",
"通信 0.000000 0.010
8 0.000000 0.010520 -1.136123e-04 -0.000114
\n",
"采掘 0.000000 0.008
5 0.000000 0.118131 -0.001004 -0.001004
\n",
"采掘 0.000000 0.008
0 0.000000 0.005232 -4.185280e-05 -0.000042
\n",
"钢铁 0.000000 0.00
67 0.000000 0.335245 -0.002246 -0.002246
\n",
"钢铁 0.000000 0.00
59 0.000000 0.000734 -4.333400e-06 -0.000004
\n",
"银行 0.000000 0.1
077 0.000000 -0.066267 0.007137 0.007137
\n",
"银行 0.000000 0.1
239 0.000000 0.009456 -1.171629e-03 -0.001172
\n",
"非银金融 0.000000 0.1
017 0.000000 0.019102 -0.001943 -0.00194
3 \n",
"非银金融 0.000000 0.1
111 0.000000 0.007316 -8.128087e-04 -0.00081
3 \n",
"食品饮料 0.
000000 0.1251 0.000000 -0.050269 0.006289 0.006289
\n",
"食品饮料 0.
201270 0.1391 0.001934 0.000774 2.815118e-04 0.000161
\n",
"\n",
"\n",
" AR IR \n",
" AR
IR \n",
"industry \n",
"industry
\n",
"交通运输 -0.000
154 0.00015
4 \n",
"交通运输 -0.000
405 4.048145e-0
4 \n",
"休闲服务
0.002790 -0.002790
\n",
"休闲服务
-0.000115 -4.504017e-05
\n",
"传媒 0.000
548 -0.000548
\n",
"传媒 0.000
016 -2.964908e-04
\n",
"公用事业 -0.00
7669 0.007669
\n",
"公用事业 -0.00
0067 -6.778995e-04
\n",
"农林牧渔 0.0000
89 -0.000089
\n",
"农林牧渔 0.0000
96 1.792142e-05
\n",
"化工
0.000253 -0.000253
\n",
"化工
-0.000151 -9.837681e-04
\n",
"医药生物
-0.119317 0.048310
\n",
"医药生物
0.000588 3.399191e-04
\n",
"商业贸易
0.000358 -0.000358
\n",
"商业贸易
-0.000002 2.386400e-06
\n",
"国防军工
0.062285 -0.017571
\n",
"国防军工
-0.000183 1.826710e-04
\n",
"家用电器 0.000
310 -0.000310
\n",
"家用电器 0.000
085 -1.254411e-04
\n",
"建筑材料
-0.000060 0.000060
\n",
"建筑材料
0.000019 -1.896090e-05
\n",
"建筑装饰
-0.005479 0.005479
\n",
"建筑装饰
0.000033 2.233851e-04
\n",
"房地产
-0.001650 0.001650
\n",
"房地产
0.000009 -8.521000e-06
\n",
"有色金属
0.021683 0.002706
\n",
"有色金属
-0.000479 1.575546e-04
\n",
"机械设备 0.00
1494 -0.00149
4 \n",
"机械设备 0.00
0484 -4.912561e-0
4 \n",
"汽车
-0.000411 0.000411
\n",
"汽车
0.000107 1.895696e-04
\n",
"电子 -0.00
1448 0.001448
\n",
"电子 -0.00
0689 7.000751e-05
\n",
"电气设备 -0.0
24746 0.024746
\n",
"电气设备 -0.0
00803 1.362263e-03
\n",
"纺织服装 0.000
102 -0.000102
\n",
"纺织服装 0.000
000 -1.485314e-08
\n",
"综合 0.000000
0.000000
\n",
"综合 0.000000
1.281863e-07
\n",
"计算机
0.000432 -0.000432
\n",
"计算机
-0.000490 -2.712942e-03
\n",
"轻工制造
0.000337 -0.000337
\n",
"轻工制造
-0.000016 -3.688828e-04
\n",
"通信
0.000173 -0.000173
\n",
"通信
-0.000114 1.136123e-04
\n",
"采掘 -0.00
1004 0.001004
\n",
"采掘 -0.00
0042 4.185280e-05
\n",
"钢铁 -0.00
2246 0.00224
6 \n",
"钢铁 -0.00
0004 4.333400e-0
6 \n",
"银行
0.007137 -0.007137
\n",
"银行
-0.001172 1.171629e-03
\n",
"非银金融 -0.00
1943 0.001943
\n",
"非银金融 -0.00
0813 8.128087e-04
\n",
"食品饮料 0.00
6289 -0.006289
"
"食品饮料 0.00
0048 7.208423e-05
"
]
]
},
},
"execution_count":
8
,
"execution_count":
13
,
"metadata": {},
"metadata": {},
"output_type": "execute_result"
"output_type": "execute_result"
}
}
...
...
fof/style.py
0 → 100644
View file @
3e50b6a9
import
pandas
as
pd
from
.utility
import
RISK_STYLES
,
INDUSTRY_STYLES
def
single_style
(
portfolio
,
risk_exposure
,
risk_returns
,
specific_returns
):
risk_combined
=
pd
.
merge
(
portfolio
[[
"security_code"
,
"weight"
]],
risk_exposure
,
on
=
[
"security_code"
])
risk_combined
[
RISK_STYLES
+
INDUSTRY_STYLES
]
\
=
(
risk_combined
[
RISK_STYLES
+
INDUSTRY_STYLES
]
.
values
.
T
*
risk_combined
[
"weight"
]
.
values
)
.
T
portfolio_risk_style_exposure
=
risk_combined
[
RISK_STYLES
]
.
sum
()
portfolio_exposure
=
risk_combined
[
RISK_STYLES
+
INDUSTRY_STYLES
]
.
sum
()
risk_attributed_rtn
=
risk_returns
[
RISK_STYLES
+
INDUSTRY_STYLES
]
*
portfolio_exposure
risk_combined
=
pd
.
merge
(
risk_combined
,
specific_returns
[[
"security_code"
,
"spret"
]],
on
=
[
"security_code"
])
spec_attributed_rtn
=
risk_combined
[
"weight"
]
@
risk_combined
[
"spret"
]
/
100.0
risk_attributed_rtn
[
"SPECIFIC"
]
=
spec_attributed_rtn
attributed_rtn
=
risk_attributed_rtn
.
copy
()
return
portfolio_risk_style_exposure
,
attributed_rtn
fof/utility.py
View file @
3e50b6a9
...
@@ -247,7 +247,7 @@ def fd_skdetail(security_ids, trade_dt):
...
@@ -247,7 +247,7 @@ def fd_skdetail(security_ids, trade_dt):
p_id_strs
=
_security_ids
(
security_ids
)
p_id_strs
=
_security_ids
(
security_ids
)
query
=
f
"""
query
=
f
"""
SELECT SECODE as pid, SKCODE as security_code, SKNAME, HOLDMKTCAP, HOLDAMT FROM TQ_FD_SKDETAIL
SELECT SECODE as pid, SKCODE as security_code, SKNAME, HOLDMKTCAP, HOLDAMT
, NAVRTO
FROM TQ_FD_SKDETAIL
WHERE
WHERE
ENDDATE = '{trade_dt}' AND
ENDDATE = '{trade_dt}' AND
ISVALID = 1 AND
ISVALID = 1 AND
...
...
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