Commit 3e50b6a9 authored by Dr.李's avatar Dr.李

added style attribution

parent 6eee2118
...@@ -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>2010000045</td>\n", " <td>2010000001</td>\n",
" <td>海信视像</td>\n", " <td>浦发银行</td>\n",
" <td>600060.XSHG</td>\n", " <td>600000.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>2010000121</td>\n", " <td>2010000005</td>\n",
" <td>中青旅</td>\n", " <td>白云机场</td>\n",
" <td>600138.XSHG</td>\n", " <td>600004.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>2010000171</td>\n", " <td>2010000007</td>\n",
" <td>复星医药</td>\n", " <td>东风汽车</td>\n",
" <td>600196.XSHG</td>\n", " <td>600006.XSHG</td>\n",
" <td>-0.642</td>\n", " <td>-0.664</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>2010000377</td>\n", " <td>2010000008</td>\n",
" <td>片仔癀</td>\n", " <td>中国国贸</td>\n",
" <td>600436.XSHG</td>\n", " <td>600007.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>2010000438</td>\n", " <td>2010000009</td>\n",
" <td>贵州茅台</td>\n", " <td>首创环保</td>\n",
" <td>600519.XSHG</td>\n", " <td>600008.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 2010000045 海信视像 600060.XSHG -1.983\n", "0 2021-06-30 2010000001 浦发银行 600000.XSHG -0.041\n",
"1 2021-06-30 2010000121 中青旅 600138.XSHG -0.743\n", "1 2021-06-30 2010000005 白云机场 600004.XSHG -0.539\n",
"2 2021-06-30 2010000171 复星医药 600196.XSHG -0.642\n", "2 2021-06-30 2010000007 东风汽车 600006.XSHG -0.664\n",
"3 2021-06-30 2010000377 片仔癀 600436.XSHG -1.400\n", "3 2021-06-30 2010000008 中国国贸 600007.XSHG 2.145\n",
"4 2021-06-30 2010000438 贵州茅台 600519.XSHG -0.835" "4 2021-06-30 2010000009 首创环保 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.580110</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": {
......
...@@ -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 2010000377 片仔癀 69974163.35 160069.0 0.092948\n", "0 1030000006 2010000045 海信视像 71468410.0 4228900.0 1.61 0.021116\n",
"1 1030000006 2010000671 中航沈飞 57228444.00 841100.0 0.076017\n", "1 1030000006 2010000121 中青旅 33714502.5 3210905.0 0.76 0.009961\n",
"2 1030000006 2010000773 中航高科 59143464.00 1653900.0 0.078561\n", "2 1030000006 2010000171 复星医药 48781519.0 676300.0 1.10 0.014413\n",
"3 1030000006 2010000804 航发动力 76564490.00 1206500.0 0.101702\n", "3 1030000006 2010000377 片仔癀 89447057.5 199525.0 2.02 0.026428\n",
"4 1030000006 2010003333 爱尔眼科 61072572.12 1444479.0 0.081123" "4 1030000006 2010000438 贵州茅台 136307792.5 66275.0 3.08 0.040273"
] ]
}, },
"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.0045</td>\n", " <td>0.0055</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.0020</td>\n", " <td>0.0022</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.0029</td>\n", " <td>0.0017</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.0019</td>\n", " <td>0.0009</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.0016</td>\n", " <td>0.0018</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.0045\n", "0 2021-06-30 2010000001 浦发银行 0.0055\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.0019\n", "3 2021-06-30 2010000012 华能国际 0.0009\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.0264</td>\n", " <td>0.0294</td>\n",
" <td>0.000000</td>\n", " <td>0.000000</td>\n",
" <td>0.005835</td>\n", " <td>0.013769</td>\n",
" <td>-0.000154</td>\n", " <td>-4.048145e-04</td>\n",
" <td>-0.000154</td>\n", " <td>-0.000405</td>\n",
" <td>-0.000154</td>\n", " <td>-0.000405</td>\n",
" <td>0.000154</td>\n", " <td>4.048145e-04</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>休闲服务</th>\n", " <th>休闲服务</th>\n",
" <td>0.000000</td>\n", " <td>0.039602</td>\n",
" <td>0.0107</td>\n", " <td>0.0149</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.000000</td>\n", " <td>0.036138</td>\n",
" <td>0.0107</td>\n", " <td>0.0140</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.000548</td>\n", " <td>-0.000188</td>\n",
" <td>0.000548</td>\n", " <td>0.000016</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.000000</td>\n", " <td>0.000012</td>\n",
" <td>0.0240</td>\n", " <td>0.0177</td>\n",
" <td>0.000000</td>\n", " <td>0.042125</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.007669</td>\n", " <td>-0.000067</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.000000</td>\n", " <td>0.000003</td>\n",
" <td>0.0163</td>\n", " <td>0.0161</td>\n",
" <td>0.000000</td>\n", " <td>-0.007081</td>\n",
" <td>-0.005454</td>\n", " <td>-0.005968</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.000089</td>\n", " <td>0.000096</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.000000</td>\n", " <td>0.000096</td>\n",
" <td>0.0382</td>\n", " <td>0.0347</td>\n",
" <td>0.000000</td>\n", " <td>0.032804</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.000253</td>\n", " <td>0.000986</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.008541</td>\n", " <td>0.000089</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.0021</td>\n", " <td>0.0026</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.256280</td>\n", " <td>0.000000</td>\n",
" <td>0.0149</td>\n", " <td>0.0129</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.001085</td>\n", " <td>-0.000183</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.000000</td>\n", " <td>0.050703</td>\n",
" <td>0.0318</td>\n", " <td>0.0363</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.000310</td>\n", " <td>0.000085</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.0126</td>\n", " <td>0.0111</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.000000</td>\n", " <td>0.000007</td>\n",
" <td>0.0160</td>\n", " <td>0.0122</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.005479</td>\n", " <td>-0.000224</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.0183</td>\n", " <td>0.0206</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.097392</td>\n", " <td>0.000007</td>\n",
" <td>0.0345</td>\n", " <td>0.0243</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.000000</td>\n", " <td>0.050724</td>\n",
" <td>0.0236</td>\n", " <td>0.0246</td>\n",
" <td>0.000000</td>\n", " <td>-0.000273</td>\n",
" <td>-0.063295</td>\n", " <td>0.018532</td>\n",
" <td>0.001494</td>\n", " <td>-4.697309e-04</td>\n",
" <td>0.001494</td>\n", " <td>-0.000463</td>\n",
" <td>0.001494</td>\n", " <td>0.000484</td>\n",
" <td>-0.001494</td>\n", " <td>-4.912561e-04</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>汽车</th>\n", " <th>汽车</th>\n",
" <td>0.000000</td>\n", " <td>0.000005</td>\n",
" <td>0.0326</td>\n", " <td>0.0324</td>\n",
" <td>0.000000</td>\n", " <td>-0.009157</td>\n",
" <td>0.012605</td>\n", " <td>-0.003305</td>\n",
" <td>-0.000411</td>\n", " <td>1.070463e-04</td>\n",
" <td>-0.000411</td>\n", " <td>-0.000190</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.000000</td>\n", " <td>0.065804</td>\n",
" <td>0.0971</td>\n", " <td>0.1012</td>\n",
" <td>0.000000</td>\n", " <td>0.017476</td>\n",
" <td>0.014911</td>\n", " <td>0.019454</td>\n",
" <td>-0.001448</td>\n", " <td>-8.187368e-04</td>\n",
" <td>-0.001448</td>\n", " <td>-0.000200</td>\n",
" <td>-0.001448</td>\n", " <td>-0.000689</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.000000</td>\n", " <td>0.000005</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.024746</td>\n", " <td>-0.001362</td>\n",
" <td>-0.024746</td>\n", " <td>-0.000803</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.000000</td>\n", " <td>0.000007</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.000000</td>\n", " <td>0.000015</td>\n",
" <td>0.0259</td>\n", " <td>0.0273</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.000432</td>\n", " <td>0.002714</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.000000</td>\n", " <td>0.014181</td>\n",
" <td>0.0029</td>\n", " <td>0.0034</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.0103</td>\n", " <td>0.0108</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.0085</td>\n", " <td>0.0080</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.001004</td>\n", " <td>-0.000042</td>\n",
" <td>-0.001004</td>\n", " <td>-0.000042</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.0067</td>\n", " <td>0.0059</td>\n",
" <td>0.000000</td>\n", " <td>0.000000</td>\n",
" <td>0.335245</td>\n", " <td>0.000734</td>\n",
" <td>-0.002246</td>\n", " <td>-4.333400e-06</td>\n",
" <td>-0.002246</td>\n", " <td>-0.000004</td>\n",
" <td>-0.002246</td>\n", " <td>-0.000004</td>\n",
" <td>0.002246</td>\n", " <td>4.333400e-06</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.1077</td>\n", " <td>0.1239</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.1017</td>\n", " <td>0.1111</td>\n",
" <td>0.000000</td>\n", " <td>0.000000</td>\n",
" <td>0.019102</td>\n", " <td>0.007316</td>\n",
" <td>-0.001943</td>\n", " <td>-8.128087e-04</td>\n",
" <td>-0.001943</td>\n", " <td>-0.000813</td>\n",
" <td>-0.001943</td>\n", " <td>-0.000813</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.000000</td>\n", " <td>0.201270</td>\n",
" <td>0.1251</td>\n", " <td>0.1391</td>\n",
" <td>0.000000</td>\n", " <td>0.001934</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.006289</td>\n", " <td>0.000161</td>\n",
" <td>0.006289</td>\n", " <td>0.000048</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.0264 0.000000 0.005835 -0.000154 -0.000154 \n", "交通运输 0.000000 0.0294 0.000000 0.013769 -4.048145e-04 -0.000405 \n",
"休闲服务 0.000000 0.0107 0.000000 -0.260787 0.002790 0.002790 \n", "休闲服务 0.039602 0.0149 -0.006466 -0.004642 -1.868824e-04 -0.000027 \n",
"传媒 0.000000 0.0107 0.000000 -0.051229 0.000548 0.000548 \n", "传媒 0.036138 0.0140 -0.012678 0.000715 -4.681614e-04 -0.000188 \n",
"公用事业 0.000000 0.0240 0.000000 0.319549 -0.007669 -0.007669 \n", "公用事业 0.000012 0.0177 0.042125 0.003800 -6.675646e-05 0.000678 \n",
"农林牧渔 0.000000 0.0163 0.000000 -0.005454 0.000089 0.000089 \n", "农林牧渔 0.000003 0.0161 -0.007081 -0.005968 9.606328e-05 -0.000018 \n",
"化工 0.000000 0.0382 0.000000 -0.006631 0.000253 0.000253 \n", "化工 0.000096 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.0021 0.000000 -0.170496 0.000358 0.000358 \n", "商业贸易 0.000000 0.0026 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.000000 0.0318 0.000000 -0.009740 0.000310 0.000310 \n", "家用电器 0.050703 0.0363 -0.002778 0.005931 -3.561571e-04 -0.000316 \n",
"建筑材料 0.000000 0.0126 0.000000 0.004792 -0.000060 -0.000060 \n", "建筑材料 0.000000 0.0111 0.000000 -0.001708 1.896090e-05 0.000019 \n",
"建筑装饰 0.000000 0.0160 0.000000 0.342439 -0.005479 -0.005479 \n", "建筑装饰 0.000007 0.0122 -0.021015 -0.002694 3.272320e-05 -0.000224 \n",
"房地产 0.000000 0.0183 0.000000 0.090156 -0.001650 -0.001650 \n", "房地产 0.000000 0.0206 0.000000 -0.000414 8.521000e-06 0.000009 \n",
"有色金属 0.097392 0.0345 0.387793 0.344770 0.025873 0.001484 \n", "有色金属 0.000007 0.0243 0.013247 0.019732 -4.794005e-04 -0.000158 \n",
"机械设备 0.000000 0.0236 0.000000 -0.063295 0.001494 0.001494 \n", "机械设备 0.050724 0.0246 -0.000273 0.018532 -4.697309e-04 -0.000463 \n",
"汽车 0.000000 0.0326 0.000000 0.012605 -0.000411 -0.000411 \n", "汽车 0.000005 0.0324 -0.009157 -0.003305 1.070463e-04 -0.000190 \n",
"电子 0.000000 0.0971 0.000000 0.014911 -0.001448 -0.001448 \n", "电子 0.065804 0.1012 0.017476 0.019454 -8.187368e-04 -0.000200 \n",
"电气设备 0.000000 0.1042 0.000000 0.237483 -0.024746 -0.024746 \n", "电气设备 0.000005 0.0541 -0.010346 0.014837 -8.027072e-04 -0.001362 \n",
"纺织服装 0.000000 0.0003 0.000000 -0.341612 0.000102 0.000102 \n", "纺织服装 0.000027 0.0000 -0.000558 0.000000 -1.485314e-08 -0.000000 \n",
"综合 0.000000 0.0000 0.000000 0.000000 0.000000 0.000000 \n", "综合 0.000007 0.0000 0.019664 0.000000 1.281863e-07 0.000000 \n",
"计算机 0.000000 0.0259 0.000000 -0.016668 0.000432 0.000432 \n", "计算机 0.000015 0.0273 0.117384 0.017953 -4.883305e-04 0.002714 \n",
"轻工制造 0.000000 0.0029 0.000000 -0.116237 0.000337 0.000337 \n", "轻工制造 0.014181 0.0034 -0.035708 -0.001493 -5.013087e-04 -0.000116 \n",
"通信 0.000000 0.0103 0.000000 -0.016761 0.000173 0.000173 \n", "通信 0.000000 0.0108 0.000000 0.010520 -1.136123e-04 -0.000114 \n",
"采掘 0.000000 0.0085 0.000000 0.118131 -0.001004 -0.001004 \n", "采掘 0.000000 0.0080 0.000000 0.005232 -4.185280e-05 -0.000042 \n",
"钢铁 0.000000 0.0067 0.000000 0.335245 -0.002246 -0.002246 \n", "钢铁 0.000000 0.0059 0.000000 0.000734 -4.333400e-06 -0.000004 \n",
"银行 0.000000 0.1077 0.000000 -0.066267 0.007137 0.007137 \n", "银行 0.000000 0.1239 0.000000 0.009456 -1.171629e-03 -0.001172 \n",
"非银金融 0.000000 0.1017 0.000000 0.019102 -0.001943 -0.001943 \n", "非银金融 0.000000 0.1111 0.000000 0.007316 -8.128087e-04 -0.000813 \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.000154 0.000154 \n", "交通运输 -0.000405 4.048145e-04 \n",
"休闲服务 0.002790 -0.002790 \n", "休闲服务 -0.000115 -4.504017e-05 \n",
"传媒 0.000548 -0.000548 \n", "传媒 0.000016 -2.964908e-04 \n",
"公用事业 -0.007669 0.007669 \n", "公用事业 -0.000067 -6.778995e-04 \n",
"农林牧渔 0.000089 -0.000089 \n", "农林牧渔 0.000096 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.000310 -0.000310 \n", "家用电器 0.000085 -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.001494 -0.001494 \n", "机械设备 0.000484 -4.912561e-04 \n",
"汽车 -0.000411 0.000411 \n", "汽车 0.000107 1.895696e-04 \n",
"电子 -0.001448 0.001448 \n", "电子 -0.000689 7.000751e-05 \n",
"电气设备 -0.024746 0.024746 \n", "电气设备 -0.000803 1.362263e-03 \n",
"纺织服装 0.000102 -0.000102 \n", "纺织服装 0.000000 -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.001004 0.001004 \n", "采掘 -0.000042 4.185280e-05 \n",
"钢铁 -0.002246 0.002246 \n", "钢铁 -0.000004 4.333400e-06 \n",
"银行 0.007137 -0.007137 \n", "银行 -0.001172 1.171629e-03 \n",
"非银金融 -0.001943 0.001943 \n", "非银金融 -0.000813 8.128087e-04 \n",
"食品饮料 0.006289 -0.006289 " "食品饮料 0.000048 7.208423e-05 "
] ]
}, },
"execution_count": 8, "execution_count": 13,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
......
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
...@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment