Commit b6b4cb16 authored by Dr.李's avatar Dr.李
parents 706f4e19 3c7b1513
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"当前 SDK 版本号是: 1.2.6 已是最新版\n"
]
}
],
"source": [
"%matplotlib inline\n",
"from matplotlib import pyplot as plt\n",
"import uqer\n",
"import numpy as np\n",
"import pandas as pd\n",
"from uqer import DataAPI as api\n",
"from alphamind.data.store import fetch_data\n",
"from alphamind.data.store import risk_styles\n",
"from alphamind.data.store import append_industry_info\n",
"from alphamind.data.neutralize import neutralize\n",
"from sklearn.linear_model import LinearRegression\n",
"\n",
"plt.style.use('ggplot')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"_ = uqer.Client(token='')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"ref_date = '20170623'\n",
"factor = 'FY12P'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Algorithm Description\n",
"--------------------------"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"猜测的 ``neutralize`` 残差$\\bar Res$计算公式:\n",
"\n",
"$$\\bar Res_{i,k} = \\bar f_{i,k} - \\sum_j \\beta_{j,k} \\times \\bar Ex_{i, j, k}$$\n",
"\n",
"其中:$k$为行业分类,$i$为该行业中第$i$只股票,$j$为第$j$个风险因子。$\\bar f$为因子序列,$\\bar Ex$为风险暴露矩阵。系数$\\beta_{j,k}$由OLS确定。\n",
"\n",
"下面的章节,我们分别比较三种``neutralize``的方法差别:\n",
"\n",
"* **UQER Neutralize**\n",
"\n",
" 使用优矿的SDK计算因子残差。\n",
"\n",
"\n",
"* **Alpha-Mind Neutralize**\n",
"\n",
" 使用alpha-mind计算因子残差,alpha-mind可以由以下地址安装:\n",
" \n",
" ```\n",
" https://github.com/wegamekinglc/alpha-mind\n",
" ```\n",
"\n",
"* **Direct Linear Regression Implementation**\n",
"\n",
" 直接使用scikit-learn的线性回归功能来计算因子残差。\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Raw Data\n",
"---------------------------"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"factor_data = api.MktStockFactorsOneDayGet(tradeDate=ref_date, field='ticker,' + factor)\n",
"risk_factors = api.RMExposureDayGet(tradeDate=ref_date)\n",
"append_industry_info(risk_factors)\n",
"\n",
"total_data = pd.merge(factor_data, risk_factors, on=['ticker'])\n",
"total_data.set_index('ticker', inplace=True)\n",
"total_data.dropna(inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2407"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(total_data)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# UQER Neutralize\n",
"-----------------------"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"neutralized_factor_uqer = uqer.neutralize(total_data[factor],\n",
" target_date=ref_date,\n",
" risk_module='day',\n",
" industry_type='day')"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>uqer</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>000001</th>\n",
" <td>0.015150</td>\n",
" </tr>\n",
" <tr>\n",
" <th>000002</th>\n",
" <td>-0.003985</td>\n",
" </tr>\n",
" <tr>\n",
" <th>000006</th>\n",
" <td>-0.008520</td>\n",
" </tr>\n",
" <tr>\n",
" <th>000008</th>\n",
" <td>0.003012</td>\n",
" </tr>\n",
" <tr>\n",
" <th>000010</th>\n",
" <td>0.020408</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" uqer\n",
"000001 0.015150\n",
"000002 -0.003985\n",
"000006 -0.008520\n",
"000008 0.003012\n",
"000010 0.020408"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.DataFrame(neutralized_factor_uqer, columns=['uqer'])\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2406"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(neutralized_factor_uqer)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Alpha-Mind Neutralize\n",
"--------------------------"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"x = total_data[risk_styles].values\n",
"y = total_data[factor].values\n",
"groups = total_data['industry_code'].values.astype(int)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"neutralized_factor_alphamind = neutralize(x, y, groups)\n",
"alphamind_series = pd.Series(neutralized_factor_alphamind.flatten(), index=total_data.index)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"df['alpha-mind'] = alphamind_series"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2407"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(alphamind_series)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# The Ticker Missing in UQER but Still in Alpha-Mind\n",
"-----------------------------------"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"missed_codes = [c for c in alphamind_series.index if c not in neutralized_factor_uqer.index]"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>FY12P</th>\n",
" <th>tradeDate</th>\n",
" <th>secID</th>\n",
" <th>exchangeCD</th>\n",
" <th>secShortName</th>\n",
" <th>BETA</th>\n",
" <th>MOMENTUM</th>\n",
" <th>SIZE</th>\n",
" <th>EARNYILD</th>\n",
" <th>RESVOL</th>\n",
" <th>...</th>\n",
" <th>Media</th>\n",
" <th>IronSteel</th>\n",
" <th>NonBankFinan</th>\n",
" <th>ELECEQP</th>\n",
" <th>AERODEF</th>\n",
" <th>Conglomerates</th>\n",
" <th>COUNTRY</th>\n",
" <th>updateTime</th>\n",
" <th>industry</th>\n",
" <th>industry_code</th>\n",
" </tr>\n",
" <tr>\n",
" <th>ticker</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>000166</th>\n",
" <td>0.0577</td>\n",
" <td>20170623</td>\n",
" <td>000166.XSHE</td>\n",
" <td>XSHE</td>\n",
" <td>申万宏源</td>\n",
" <td>0.078</td>\n",
" <td>-0.916</td>\n",
" <td>1.589</td>\n",
" <td>-0.758</td>\n",
" <td>-1.205</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>2017-06-24 09:33:58</td>\n",
" <td>NonBankFinan</td>\n",
" <td>24</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1 rows × 47 columns</p>\n",
"</div>"
],
"text/plain": [
" FY12P tradeDate secID exchangeCD secShortName BETA \\\n",
"ticker \n",
"000166 0.0577 20170623 000166.XSHE XSHE 申万宏源 0.078 \n",
"\n",
" MOMENTUM SIZE EARNYILD RESVOL ... Media IronSteel \\\n",
"ticker ... \n",
"000166 -0.916 1.589 -0.758 -1.205 ... 0 0 \n",
"\n",
" NonBankFinan ELECEQP AERODEF Conglomerates COUNTRY \\\n",
"ticker \n",
"000166 1 0 0 0 1 \n",
"\n",
" updateTime industry industry_code \n",
"ticker \n",
"000166 2017-06-24 09:33:58 NonBankFinan 24 \n",
"\n",
"[1 rows x 47 columns]"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"total_data.ix[missed_codes]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Direct Linear Regression Implementation\n",
"------------------------"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"model = LinearRegression(fit_intercept=False)\n",
"\n",
"res = np.zeros(len(total_data))\n",
"\n",
"n_groups = np.unique(groups)\n",
"\n",
"for i in n_groups:\n",
" indices = groups == i\n",
" curr_x = x[indices]\n",
" curr_y = y[indices]\n",
" model.fit(curr_x, curr_y)\n",
" res[indices] = curr_y - curr_x @ model.coef_.T\n",
"\n",
"lg_series = pd.Series(res, index=total_data.index)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"df['linear_regression'] = lg_series"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Comparison\n",
"------------------"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"df['uqer - linear_regression'] = df['uqer'] - df['linear_regression']\n",
"df['alphamind - linear_regression'] = df['alpha-mind'] - df['linear_regression']"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x1f857afc8d0>"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA0QAAAGfCAYAAAB/fxLrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XmUFOW9P/53zwyrCgrcaLianBv9eu4lnhgdiPkZLsZA\nPDEmaBK5Llm4ot4QiMqiCCSKyqLIqkaiIiAobsgiyDaMIIiggOxiZHEQGNbZYJhheqb7eX5/dFd3\nVXVVdXVV9VQv79c5HGZ6anm6u+qp5/OsASmlBBERERERUR4q8DsBREREREREfmFAREREREREeYsB\nERERERER5S0GRERERERElLcYEBERERERUd5iQERERERERHmLAREREREREeUtBkRERERERJS3GBAR\nEREREVHeYkBERERERER5q8jvBDh19OhRv5NAea5Tp06oqKjwOxlEvBYpI/A6pEzBa5EUnTt3trUd\nW4iIiIiIiChvMSAiIiIiIqK8xYCIiIiIiIjyVtaOISIiIiIie6SUaGhogBACgUDA7+Sk1YkTJxAM\nBv1OBjUTKSUKCgrQunVrx9c2AyIiIiKiHNfQ0IAWLVqgqCj3i35FRUUoLCz0OxnUjEKhEBoaGtCm\nTRtH+7PLHBEREVGOE0LkRTBE+amoqAhCCMf7MyAiIiIiynG53k2OyM01zoCIiIiIiIjyFgMiIiIi\nIiLKWwyIiIiIiCjnHT58GD/72c8AADt27MBjjz3mc4oyR75/HhxdR0RERERZKRQKOZos4uqrr8bV\nV1+dhhTFhcPhpLPdOU2/QkoZm3bajeb4PDIZAyIiIiKiPCLeng55uMzTYwYu+w8U3Hm/6d8PHz6M\nvn37YvXq1QCAl156CXV1dRg6dCh27tyJIUOGAABuuOEGrFmzBqtXr0Y4HMa4ceOwceNGNDY2om/f\nvvjjH/+IDRs2YMKECWjfvj3279+P9evXp5zeDRs24KWXXsKcOXMwadIklJeX49ChQygvL8d9992H\ne++9FwAwf/58zJw5E42Njbjmmmvw9NNPo7CwEMOHD8eOHTvQ0NCAW265BQ8//DAA4LrrrkPv3r2x\nbt06DBgwALfeemvCuW+//XZ06dIFmzdvxq233oo+ffpg+PDhKC8vBwA8+eST6NatGyorKzFw4ECc\nOHECxcXFWLduHVasWIG6ujrcfffduOaaa7Br1y68/vrrOHDgACZOnIjGxkZ897vfxZQpU3Deeedh\n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\nAwfi+PHjKC4uhpTS8ee0YcMGvPTSS5gzZw4mTZqE8vJyHDp0COXl5bjvvvtw7733AgDmz5+PmTNn\norGxEddccw2efvppFBYWYvjw4dixYwcaGhpwyy234OGHHwYQabXq3bs31q1bhwEDBuDWW29NOPft\nt9+OLl26YPPmzbj11lvRp08fDB8+HOXl5QCAJ598Et26dUNlZSUGDhyIEydOoLi4GOvWrcOKFStQ\nV1eHu+++G9dccw127dqF119/HQcOHMDEiRPR2NiI7373u5gyZQrOO+88jBs3DiUlJSgqKkKPHj3w\n+OOPY8mSJZgyZQoKCgrQrl07LFiwQPN5VFdXY+jQoTh06BBat26NZ599Fl26dLH8nLzCLnNERERE\nlHaTJk3CihUrsGzZMsycOdOw29mBAwfQt29frF27FhdccAFmz54d+1uHDh2wcuVK/PGPf8RLL70E\nALjiiiuwcOFClJSU4OGHH8b48eNj23/11Vd49dVXsWzZMowfPx5t2rRBSUkJiouL8d577xmm0egc\nU6ZMwY9+9COsWbMGv/jFL2IBhBf279+PuXPnYunSpZg8eTKampqwb98+LF68GIsWLcKqVatQWFiI\nBQsWAAAeffRRLF++HKWlpfj000+xZ8+e2LEuuugirFy50jAYUjQ1NWH58uXo378/Hn/8cdx///1Y\ntmwZpk+fHguuJk+ejJ/85CdYs2YNbrnlFs37LSsrQ9++fbFmzRq0bdsWzz33XCz4vPrqq/HKK6+g\nqqoKy5cvx5o1a1BaWoqHHnoIADB16lTMnTsXpaWlmDVrVkLaJk2ahKuuugqlpaUYPnx4bD+zz8lL\nbCEiIiIiyiPJWnLSZebMmVi+fDkA4OjRoygrK0OHDh0023Tu3BndunUDAPz2t7/FzJkz0b9/fwDA\nzTffDAD4wQ9+EDvOmTNnMGjQIJSVlSEQCGgKytdffz3OP/98nH/++bjgggvw85//HADwX//1X5pA\nQs3oHJ9++ileffVVAECvXr1w4YUXuv8wonr27IlWrVqhVatW6NSpE06dOoX169dj165d+OUvfwkA\naGhoQKdOnQAAS5Yswdy5cxEOh3HixAns27cPXbp0AQD07t076fnU23z88cfYu3dv7PezZ8+irq4O\nmzZtwowZMwAAN954o+b9XnrppSguLgYAfP7559i7d28sAGtqakJxcTHatWuHVq1aYejQoejVqxd6\n9eoFAOjatSsGDx6MX//617HPWW3Tpk2YPn06AKB79+6orq5GbW2t6efUuXNnOx+xLQyIiIiIiCit\nNmzYgI8//hhLlixBmzZtcPvttyMYDCZsFwgETH9v1aoVAKCwsBDhcBhAZFKE66+/HjNmzMDhw4dx\n++23x7Zv2bJl7OeCgoLY/oFAILa/ntE57Fi+fDkmT54MAJg4caLtcTHK+dTnlFKiT58+GDFihGbb\nQ4cO4eWXX8bSpUtx4YUXYtCgQWhoiHd9bNu2bdLzqbcRQmDJkiVo3bq1rbTq95dSokePHpg2bVrC\ndkuXLsX69euxdOlSzJo1C/PmzcP48eOxdetWfPjhh7j55ptjAacdRp+Tl9hljoiIiIjSqra2Fu3b\nt0ebNm2wf/9+bN261XC78vJybNmyBQCwaNGiWGuR1XEvueQSAMC7777rbaKjfvzjH2PhwoUAgNWr\nV6OmpiZhm5tvvhmrVq3CqlWrXE8S0L17d3zwwQeoqKgAAFRXV+PIkSOora1FmzZt0K5dO5w6dQpr\n1qxxdZ4bbrhB03Vt9+7dAIBu3bphyZIlAIC1a9cavl8AKC4uxubNm1FWVgYAqK+vx4EDB1BXV4fa\n2lr07NkTTzzxRKw17uDBg7j22mvxyCOPoGPHjjh69KjmeNddd12sa+CGDRvQoUMHXHDBBa7eo11s\nISIiIiKitPrpT3+K119/HTfccAMuv/xyXHvttYbbXX755Zg9ezaGDh2KK6+8En379rU87l/+8hcM\nGjQIzz33HHr27JmOpGPw4MEYOHAgbrzxRnTt2hX//u//npbzKK688koMGzYMd911F6SUKCoqwtix\nY1FcXIyrrroKPXr00HQtdGr06NEYOXIkevXqhVAohOuuuw7jx4/HkCFDMGDAAMyfPx/FxcX41re+\nhfPOOw91dXWa/Tt27IgpU6Zg4MCBaGxsBAAMGzYM559/Pvr164dgMAgpJUaNGgUAGDNmDMrKyiCl\nRPfu3fH9738fGzdujB1vyJAhsW52rVu3xtSpU129v1QEpJupMnx0+JauAIDC6Yt9Tgnlq06dOsVq\nb4j8xGuRMgGvw8xWX19vq0uVnw4fPoy+ffti9erVro5TVFSEUCjkUaryTzAYRGFhIYqKirBlyxaM\nGDECq1at8jtZSRld43bHGbGFiIiIiIiIAES6Lfbv3x9CCLRs2RITJkzwO0lpx4CIiIiIiHx32WWX\nuW4dImDkyJHYvHmz5rX77rsPd9xxh639v/e976GkpCQdSctYDIiIiIiIclyWjpAgB8aNG+d3Enzh\n5hrnLHNEREREOa6goIDjaihnhUIhFBQ4D2vYQkRERESU41q3bo2GhgYEg8GEtX5yTatWrQzXOKLc\nJKVEQUFBSusp6TEgIiIiIspxgUAAbdq08TsZzYIzHlKqsr7LHPvEEhERERGRU1kfEBERERERETnF\ngIiIiIiIiPIWAyIiIiIiIspb2R8QcQwRERERERE5lP0BERERERERkUMMiIiIiIiIKG/lQEDELnNE\nRERERORMDgREREREREREzjAgIiIiIiKivJX9ARF7zBERERERkUPZHxARERERERE5xICIiIiIiIjy\nVvYHRFyYlYiIiIiIHMr+gIiIiIiIiMihIi8Osn37dsyaNQtCCPTs2RO33Xab5u/l5eWYNm0aysrK\ncOedd6J3796xvw0cOBCtW7dGQUEBCgsL8cwzz3iRJCIiIiIioqRcB0RCCMyYMQN///vf0bFjR4wY\nMQJdu3bFpZdeGtvm/PPPxz333IPNmzcbHmPUqFFo166dwxSwyxwRERERETnjusvc/v37cckll+Di\niy9GUVERrr/++oTAp3379rjiiitQWFjo9nRERERERESecd1CVFVVhY4dO8Z+79ixI/bt25fSMUaP\nHo2CggL8/Oc/R69evdwmiYiIiIiIyBZPxhC5MXr0aHTo0AGnT5/GmDFj0LlzZ3Tp0iVhu9LSUpSW\nlgKAZpxRp44dEWjRstnSS6QoKipCp06d/E4GEa9Fygi8DilT8FqkVLkOiDp06IDKysrY75WVlejQ\noUNK+wORbnXdunXD/v37DQOiXr16GbYeVVRUItCihYOUE7nTqVMnVFRU+J0MIl6LlBF4HVKm4LVI\nis6dO9vazvUYossvvxzHjh3DyZMnEQqFsGHDBnTt2tXWvg0NDTh37lzs5507d+I73/mO2yQRERER\nERHZ4rqFqLCwEP369cPYsWMhhMCNN96Iyy67DCUlJQCAm266CTU1NRg+fDjOnTuHQCCAZcuWYfLk\nyaitrcXEiRMBAOFwGN27d8cPf/jDFFPAWeaIiIiIiMiZgJQyKyOKw7dEWqEKpr3HMUTkCzbJU6bg\ntUiZgNchZQpei6Roti5zRERERERE2YoBERERERER5a3sD4iys8cfERERERFlgOwPiIiIiIiIiBxi\nQERERERERHkr+wMi9pgjIiIiIiKHsj8gIiIiIiIicogBERERERER5a0cCIjYZ46IiIiIiJzJgYCI\niIiIiIjIGQZERERERESUt7I/IOLCrERERERE5FD2B0REREREREQOMSAiIiIiIqK8lQMBEbvMERER\nERGRMzkQEBERERERETnDgIiIiIiIiPJW9gdE7DFHREREREQOZX9ARERERERE5BADIiIiIiIiylsM\niIiIiIiIKG9lf0AkOYiIiIiIiIicyf6AiIiIiIiIyCEGRERERERElLdyICBilzkiIiIiInImBwIi\nIiIiIiIiZxgQERERERFR3sr+gIg95oiIiIiIyKHsD4iIiIiIiIgcYkBERERERER5KwcCIvaZIyIi\nIiIiZ3IgICIiIiIiInKGAREREREREeWt7A+IJLvMERERERGRM9kfEBERERERETnEgIiIiIiIiPJW\n9gdE7DFHREREREQOZX9ARERERERE5BADIiIiIiIiylsMiIiIiIiIKG/lQEDEQURERERERORMDgRE\nREREREREzjAgIiIiIiKivJX9AZFklzkiIiIiInIm+wMiIiIiIiIihxgQERERERFR3sqBgIhd5oiI\niIiIyJkcCIiIiIiIiIicYUBERERERER5K/sDIvaYIyIiIiIih7I/ICIiIiIiInKIAREREREREeWt\n7A+IuDArERERERE5lP0BERERERERkUMMiIiIiIiIKG/lQEDELnNERERERORMDgREREREREREzhR5\ncZDt27dj1qxZEEKgZ8+euO222zR/Ly8vx7Rp01BWVoY777wTvXv3tr0vERERERFRurhuIRJCYMaM\nGRg5ciSmTJmCTz75BEeOHNFsc/755+Oee+7Br3/965T3JSIiIiIiShfXAdH+/ftxySWX4OKLL0ZR\nURGuv/56bN68WbNN+/btccUVV6CwsDDlfZPiECIiIiIiInLIdUBUVVWFjh07xn7v2LEjqqqq0r4v\nERERERGRW56MIWoOpaWlKC0tBQA888wzsdc7dOiAwo6d/EoW5bGioiJ06sRrj/zHa5EyAa9DyhS8\nFilVrgOiDh06oLKyMvZ7ZWUlOnTo4Pm+vXr1Qq9evRJer6qsREAGUkw1kXudOnVCRUWF38kg4rVI\nGYHXIWUKXouk6Ny5s63tXHeZu/zyy3Hs2DGcPHkSoVAIGzZsQNeuXdO+LxERERERkVuuW4gKCwvR\n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\nAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1f857b08518>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df[['uqer - linear_regression', 'alphamind - linear_regression']].plot(figsize=(14, 7))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Missing Codes for UQER neutralize in 2017\n",
"--------------------------------"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from PyFin.api import bizDatesList"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"biz_dates = bizDatesList('china.sse', '2017-01-05', '2017-07-03')"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"missed_codes_dict = {}\n",
"\n",
"for date in biz_dates:\n",
" ref_date = date.strftime('%Y%m%d')\n",
" factor_data = api.MktStockFactorsOneDayGet(tradeDate=ref_date, field='ticker,' + factor)\n",
" risk_factors = api.RMExposureDayGet(tradeDate=ref_date)\n",
" append_industry_info(risk_factors)\n",
"\n",
" total_data = pd.merge(factor_data, risk_factors, on=['ticker'])\n",
" total_data.set_index('ticker', inplace=True)\n",
" total_data.dropna(inplace=True)\n",
" \n",
" neutralized_factor_uqer = uqer.neutralize(total_data[factor],\n",
" target_date=ref_date,\n",
" risk_module='day',\n",
" industry_type='day')\n",
" \n",
" missed_codes = [c for c in total_data.index if c not in neutralized_factor_uqer.index]\n",
" missed_codes_dict[date] = missed_codes"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2017-01-05 [002821]\n",
"2017-01-06 [002821]\n",
"2017-01-09 [002821]\n",
"2017-01-10 [002821]\n",
"2017-01-11 [002821]\n",
"dtype: object"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"missing_codes = pd.Series(missed_codes_dict)\n",
"missing_codes.head()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python [conda root]",
"language": "python",
"name": "conda-root-py"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.1"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
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