{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "本例子是 v1.0 的基金净值预测引擎,现在已经升级的 v3.0,不需要在参考该 notebook 的代码,请直接使用 ``xa.QDIIPredict`` 类即可,\n", "各种情况都已做了妥善的封装和考虑" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import xalpha as xa\n", "import pandas as pd\n", "import numpy as np\n", "import seaborn as sns" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# 南方原油持仓及基准\n", "# 38335 WisdomTree WTI Crude Oil\n", "# 44793 United States 12 Month Oil Fund LP\n", "# 995771 UBS ETF CHCMCI Oil SF USD A-dis https://cn.investing.com/etfs/ubs-cmci-oil-sf-usd\n", "# 44794 United States Oil Fund LP\n", "# 44792 Invesco DB Oil Fund\n", "# 38324 WisdomTree Brent Crude Oil\n", "# 44634 United States Brent Oil Fund LP\n", "# 37450 WisdomTree Brent Crude Oil 1mth\n", "# 1014132 iPath S&P GSCI Crude Oil Total Return Index ETN\n", "\n", "# 8833 brent oil\n", "# 8849 wti oil\n", "\n", "# 2019 第四季度季报披露\n", "# reference: http://pdf.dfcfw.com/pdf/H2_AN202001191374337197_1.pdf\n", "holdings_501018_19s3 = {\n", " \"37450\": 15.31,\n", " \"44792\": 13.64,\n", " \"44794\": 13.46,\n", " \"44634\": 12.48,\n", " \"38335\": 11.73,\n", " \"38324\": 9.45,\n", " \"995771\": 6.53,\n", " \"44793\": 6.02,\n", " \"1014132\": 5.42,\n", "}\n", "# 2019 第三季度季报披露\n", "# reference: http://pdf.dfcfw.com/pdf/H2_AN201910241369695857_1.pdf\n", "holdings_501018_19s4 = {\n", " \"38335\": 7.34,\n", " \"44793\": 8.14,\n", " \"995771\": 8.68,\n", " \"44794\": 9.63,\n", " \"44792\": 11.6,\n", " \"38324\": 15.04,\n", " \"44634\": 15.42,\n", " \"37450\": 17.51,\n", " \"1014132\": 0.06,\n", "}\n", "holdings_501018_bc_cash = {\"8849\": 52.8, \"8833\": 35.2}\n", "# holdings_bc = {\"8849\": 60, \"8833\": 40}" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "## 国泰商品相关基金持仓\n", "# 14218 PROSHARES ULTRA BLOOMBERG CRUDE OIL\n", "# 37471 Invesco DB US Dollar Index Bullish Fund (UUP)\n", "## 44792 Invesco DB Oil Fund (DBO)\n", "# 44798 VELOCITYSHARES 3X LONG CRUDE OIL ETN\n", "# 44718 INVESCO DB PRECIOUS METALS FUND\n", "# 9236 ISHARES SILVER TRUST (SLV)\n", "\n", "holdings_160216_19s4 = {\n", " \"44794\": 16.9,\n", " \"14218\": 14.03,\n", " \"44634\": 11.77,\n", " \"37471\": 10.98,\n", " \"44792\": 9.1,\n", " \"44798\": 7.82,\n", " \"1014132\": 7.76,\n", " \"44793\": 2.25,\n", " \"44718\": 0.01,\n", " \"9236\": 0,\n", "}\n", "# reference: http://pdf.dfcfw.com/pdf/H2_AN202001161374256079_1.pdf" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# 华宝油气\n", "# 38284 SPDR® S&P Oil & Gas Exploration & Production ETF (XOP)\n", "# 1010825 S&P Oil & Gas Exploration & Production Select Industry TR (SPSIOPTR)\n", "# 华宝油气直接持仓 SPSIOPTR 成分股,而非买入 XOP,直接用油气指数模拟持仓\n", "holdings_162411_19s4 = {\"1010825\": 90}\n", "# reference: http://pdf.dfcfw.com/pdf/H2_AN202001201374387272_1.pdf" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "def cache_data(data, *args, start=\"20180101\"):\n", " for arg in args:\n", " for k in arg:\n", " if k not in data:\n", " data[k] = xa.get_daily(k, start=start)\n", "\n", "\n", "def daily_increment(code, date, lastday=None, _default=None):\n", " if not _default:\n", " tds = xa.get_daily(code=code, end=date, prev=15)\n", " tds = tds[tds[\"date\"] <= date]\n", " if not lastday:\n", " ratio = tds.iloc[-1][\"close\"] / tds.iloc[-2][\"close\"]\n", " else:\n", " tds2 = tds[tds[\"date\"] <= lastday]\n", " ratio = tds.iloc[-1][\"close\"] / tds2.iloc[-1][\"close\"]\n", " return ratio\n", " # _default table dict is existing\n", " tds = _default[code][_default[code][\"date\"] <= date]\n", " if not lastday:\n", " ratio = tds.iloc[-1][\"close\"] / tds.iloc[-2][\"close\"]\n", " else:\n", " tds2 = tds[tds[\"date\"] <= lastday]\n", " ratio = tds.iloc[-1][\"close\"] / tds2.iloc[-1][\"close\"]\n", " return ratio\n", "\n", "\n", "def evaluate_fluctuation(holding_dict, date, lastday=None, _default=None, _usd=\"\"):\n", " price = 0\n", " tot = 0\n", " for k, v in holding_dict.items():\n", " tot += v\n", " remain = 100 - tot\n", " for fundid, percent in holding_dict.items():\n", " ratio = daily_increment(fundid, date, lastday, _default=_default)\n", " # print(fundid, ratio)\n", " price += ratio * percent / 100\n", " price += remain / 100 # currency part\n", " if _usd: # 美元资产需换算汇率, 中间价数据似乎精确度好于市场数据 2111\n", " price = price * daily_increment(_usd, date, lastday, _default=_default)\n", " return (price - 1) * 100\n", "\n", "\n", "def estimate_table(start, end, *cols, _default=None):\n", " \"\"\"\n", "\n", " :param cols: Tuple[str, str, Dict]. (colname, _usd, holding_dict).\n", " \"\"\"\n", " compare_data = {\n", " \"date\": [],\n", " }\n", " for col in cols:\n", " compare_data[col[0]] = []\n", " dl = pd.Series(pd.date_range(start=start, end=end))\n", " dl = dl[dl.isin(xa.cons.opendate)]\n", " for i, d in enumerate(dl):\n", " if i == 0:\n", " continue\n", "\n", " dstr = d.strftime(\"%Y%m%d\")\n", " lstdstr = dl.iloc[i - 1].strftime(\"%Y%m%d\")\n", " compare_data[\"date\"].append(d)\n", " for col in cols:\n", " compare_data[col[0]].append(\n", " evaluate_fluctuation(\n", " col[2], dstr, lstdstr, _default=_default, _usd=col[1]\n", " )\n", " )\n", " cpdf = pd.DataFrame(compare_data)\n", " col0 = cols[0]\n", " for col in cols[1:]:\n", " cpdf[\"diff_\" + col0[0] + \"_\" + col[0]] = cpdf[col0[0]] - cpdf[col[0]]\n", " return cpdf" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "cache_table = {}\n", "cache_data(\n", " cache_table,\n", " holdings_160216_19s4,\n", " holdings_162411_19s4,\n", " holdings_501018_19s3,\n", " holdings_501018_19s4,\n", " holdings_501018_bc_cash,\n", " [\"F501018\", \"USD/CNY\", \"2111\", \"F160216\", \"F162411\"],\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 南方原油净值预估" ] }, { "cell_type": "code", "execution_count": 91, "metadata": {}, "outputs": [], "source": [ "nfyydf = estimate_table(\n", " \"20190101\",\n", " \"20200305\",\n", " (\"real\", \"\", {\"F501018\": 100}),\n", " (\"fund_est\", \"USD/CNY\", holdings_501018_19s4),\n", " (\"fund_est_2111\", \"2111\", holdings_501018_19s4),\n", " (\"bc_est\", \"USD/CNY\", holdings_501018_bc_cash),\n", " (\"bc_est_2111\", \"2111\", holdings_501018_bc_cash),\n", " _default=cache_table,\n", ")" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
daterealfund_estfund_est_2111bc_estbc_est_2111diff_real_fund_estdiff_real_fund_est_2111diff_real_bc_estdiff_real_bc_est_2111
2632020-02-07-0.647948-0.785591-0.037261-1.254779-0.5099880.137642-0.6106870.606830-0.137960
2642020-02-10-1.096838-1.426025-1.800490-1.428398-1.8028540.3291870.7036520.3315600.706016
2652020-02-110.4296130.6242010.3102940.9321860.617319-0.1945870.119319-0.502573-0.187706
2662020-02-121.5718272.2440642.5933952.1981302.547303-0.672238-1.021568-0.626303-0.975477
2672020-02-130.3330070.5049820.4819380.7016620.678573-0.171975-0.148931-0.368655-0.345566
2682020-02-140.8297541.1989741.2584121.3433491.402872-0.369220-0.428658-0.513595-0.573118
2692020-02-170.116178-0.021618-0.0330480.2981170.2866510.1377960.149225-0.181939-0.170473
2702020-02-18-0.232086-0.0020150.181235-0.0585250.124622-0.230071-0.413321-0.173561-0.356708
2712020-02-192.2681012.5333182.2755332.3648672.107506-0.265216-0.007432-0.0967650.160596
2722020-02-200.7108330.4787900.8132690.6187370.9536810.232043-0.1024360.092097-0.242848
2732020-02-21-1.138716-1.355870-1.555549-0.612975-0.8141570.2171540.416833-0.525741-0.324559
2742020-02-24-2.760590-3.476302-3.494192-3.202966-3.2209070.7157110.7336020.4423760.460317
2752020-02-25-2.085169-1.550823-1.753927-2.434255-2.635537-0.534346-0.3312410.3490860.550368
2762020-02-26-1.759648-1.753248-1.478477-2.359271-2.086195-0.006400-0.2811710.5996230.326547
2772020-02-27-4.152249-3.919189-4.286936-2.476869-2.850136-0.2330600.134687-1.675381-1.302113
2782020-02-28-3.291569-3.027993-2.995196-3.936630-3.904141-0.263577-0.2963730.6450610.612572
2792020-03-022.9644273.6330323.5504252.9329882.850939-0.668605-0.5859980.0314390.113488
2802020-03-030.309234-0.0414690.3971380.0340110.4729500.350703-0.0879040.275223-0.163715
2812020-03-040.212608-0.466318-0.975291-0.945985-1.4525050.6789261.1878991.1585931.665113
2822020-03-05-1.665429-1.922691-1.608400-1.934909-1.6206560.257262-0.0570290.269480-0.044773
\n", "
" ], "text/plain": [ " date real fund_est fund_est_2111 bc_est bc_est_2111 \\\n", "263 2020-02-07 -0.647948 -0.785591 -0.037261 -1.254779 -0.509988 \n", "264 2020-02-10 -1.096838 -1.426025 -1.800490 -1.428398 -1.802854 \n", "265 2020-02-11 0.429613 0.624201 0.310294 0.932186 0.617319 \n", "266 2020-02-12 1.571827 2.244064 2.593395 2.198130 2.547303 \n", "267 2020-02-13 0.333007 0.504982 0.481938 0.701662 0.678573 \n", "268 2020-02-14 0.829754 1.198974 1.258412 1.343349 1.402872 \n", "269 2020-02-17 0.116178 -0.021618 -0.033048 0.298117 0.286651 \n", "270 2020-02-18 -0.232086 -0.002015 0.181235 -0.058525 0.124622 \n", "271 2020-02-19 2.268101 2.533318 2.275533 2.364867 2.107506 \n", "272 2020-02-20 0.710833 0.478790 0.813269 0.618737 0.953681 \n", "273 2020-02-21 -1.138716 -1.355870 -1.555549 -0.612975 -0.814157 \n", "274 2020-02-24 -2.760590 -3.476302 -3.494192 -3.202966 -3.220907 \n", "275 2020-02-25 -2.085169 -1.550823 -1.753927 -2.434255 -2.635537 \n", "276 2020-02-26 -1.759648 -1.753248 -1.478477 -2.359271 -2.086195 \n", "277 2020-02-27 -4.152249 -3.919189 -4.286936 -2.476869 -2.850136 \n", "278 2020-02-28 -3.291569 -3.027993 -2.995196 -3.936630 -3.904141 \n", "279 2020-03-02 2.964427 3.633032 3.550425 2.932988 2.850939 \n", "280 2020-03-03 0.309234 -0.041469 0.397138 0.034011 0.472950 \n", "281 2020-03-04 0.212608 -0.466318 -0.975291 -0.945985 -1.452505 \n", "282 2020-03-05 -1.665429 -1.922691 -1.608400 -1.934909 -1.620656 \n", "\n", " diff_real_fund_est diff_real_fund_est_2111 diff_real_bc_est \\\n", "263 0.137642 -0.610687 0.606830 \n", "264 0.329187 0.703652 0.331560 \n", "265 -0.194587 0.119319 -0.502573 \n", "266 -0.672238 -1.021568 -0.626303 \n", "267 -0.171975 -0.148931 -0.368655 \n", "268 -0.369220 -0.428658 -0.513595 \n", "269 0.137796 0.149225 -0.181939 \n", "270 -0.230071 -0.413321 -0.173561 \n", "271 -0.265216 -0.007432 -0.096765 \n", "272 0.232043 -0.102436 0.092097 \n", "273 0.217154 0.416833 -0.525741 \n", "274 0.715711 0.733602 0.442376 \n", "275 -0.534346 -0.331241 0.349086 \n", "276 -0.006400 -0.281171 0.599623 \n", "277 -0.233060 0.134687 -1.675381 \n", "278 -0.263577 -0.296373 0.645061 \n", "279 -0.668605 -0.585998 0.031439 \n", "280 0.350703 -0.087904 0.275223 \n", "281 0.678926 1.187899 1.158593 \n", "282 0.257262 -0.057029 0.269480 \n", "\n", " diff_real_bc_est_2111 \n", "263 -0.137960 \n", "264 0.706016 \n", "265 -0.187706 \n", "266 -0.975477 \n", "267 -0.345566 \n", "268 -0.573118 \n", "269 -0.170473 \n", "270 -0.356708 \n", "271 0.160596 \n", "272 -0.242848 \n", "273 -0.324559 \n", "274 0.460317 \n", "275 0.550368 \n", "276 0.326547 \n", "277 -1.302113 \n", "278 0.612572 \n", "279 0.113488 \n", "280 -0.163715 \n", "281 1.665113 \n", "282 -0.044773 " ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nfyydf.iloc[-20:]" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.13494830952722817,\n", " 0.2729164993400751,\n", " 0.422895067226587,\n", " 0.4503039730692361)" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(\n", " np.mean(np.abs(nfyydf[\"diff_real_fund_est\"][-100:])),\n", " np.mean(np.abs(nfyydf[\"diff_real_fund_est_2111\"][-100:])),\n", " np.mean(np.abs(nfyydf[\"diff_real_bc_est\"][-100:])),\n", " np.mean(np.abs(nfyydf[\"diff_real_bc_est_2111\"][-100:])),\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "可以看出,人民币中间价做汇率换算,比人民币市场价格要准很多,利用基金持仓的涨跌直接估算,也要比用基准准很多。\n", "南方原油大家一直抱怨不好估值,但我想 0.13 个百分点的平均误差水平应该是全网最准了。因为我想不到比直接从持仓开始算更准的方式了。\n", "如果有方式用最近100交易日的数据可以打败这一偏移水平,欢迎告诉我。" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "% matplotlib inline\n", "sns.distplot(nfyydf[\"diff_real_fund_est\"])" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.05" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len([i for i in nfyydf[\"diff_real_fund_est\"][-100:] if abs(i) > 0.5]) / 100" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "可以看出有大约5%的概率,预测净值和真实净值的偏差超过0.5个百分点,总体上是一个可以接受的净值预测\n", "可以和其他qdii基金比一下预测精度" ] }, { "cell_type": "code", "execution_count": 92, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "271 12 0.04240282685512368\n" ] } ], "source": [ "# 反向预测的比例\n", "p = 0\n", "n = 0\n", "for i, row in nfyydf.iterrows():\n", " r = row[\"fund_est\"] * row[\"real\"]\n", " if r >= 0:\n", " p += 1\n", " else:\n", " n += 1\n", "print(p, n, n / (n + p))\n", "# 竟然有4%+的机会预测完全反号。。。。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 国泰商品净值预估" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [], "source": [ "gtspdf = estimate_table(\n", " \"20190101\",\n", " \"20200305\",\n", " (\"real\", \"\", {\"F160216\": 100}),\n", " (\"fund_est\", \"USD/CNY\", holdings_160216_19s4),\n", " (\"fund_est_2111\", \"2111\", holdings_160216_19s4),\n", " _default=cache_table,\n", ")" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
daterealfund_estfund_est_2111diff_real_fund_estdiff_real_fund_est_2111
2632020-02-07-1.173709-1.508188-0.7653090.334479-0.408400
2642020-02-10-1.425178-1.450684-1.8250550.0255060.399877
2652020-02-110.9638550.9419570.6270590.0218990.336796
2662020-02-122.1479712.6100182.960598-0.462046-0.812627
2672020-02-130.2336450.3784720.355457-0.144827-0.121812
2682020-02-141.1655011.0566231.1159770.1088780.049524
2692020-02-17-0.230415-0.068726-0.080150-0.161689-0.150265
2702020-02-180.2309470.1490820.3326090.081865-0.101663
2712020-02-192.3041472.2979442.0407510.0062040.263396
2722020-02-200.6756760.7390451.074390-0.063369-0.398714
2732020-02-21-0.894855-0.966361-1.1668280.0715060.271973
2742020-02-24-3.611738-3.480442-3.498332-0.131296-0.113406
2752020-02-25-3.044496-3.001084-3.201197-0.0434120.156700
2762020-02-26-1.932367-2.232813-1.9593830.3004460.027016
2772020-02-27-3.448276-3.543438-3.9126230.0951620.464347
2782020-02-28-3.061224-3.473936-3.4412910.4127120.380066
2792020-03-023.6842114.2599994.176892-0.575789-0.492682
2802020-03-03-0.761421-0.858441-0.4234180.097020-0.338003
2812020-03-04-0.255754-0.283699-0.7936060.0279440.537851
2822020-03-05-2.564103-2.663462-2.3515440.099360-0.212558
\n", "
" ], "text/plain": [ " date real fund_est fund_est_2111 diff_real_fund_est \\\n", "263 2020-02-07 -1.173709 -1.508188 -0.765309 0.334479 \n", "264 2020-02-10 -1.425178 -1.450684 -1.825055 0.025506 \n", "265 2020-02-11 0.963855 0.941957 0.627059 0.021899 \n", "266 2020-02-12 2.147971 2.610018 2.960598 -0.462046 \n", "267 2020-02-13 0.233645 0.378472 0.355457 -0.144827 \n", "268 2020-02-14 1.165501 1.056623 1.115977 0.108878 \n", "269 2020-02-17 -0.230415 -0.068726 -0.080150 -0.161689 \n", "270 2020-02-18 0.230947 0.149082 0.332609 0.081865 \n", "271 2020-02-19 2.304147 2.297944 2.040751 0.006204 \n", "272 2020-02-20 0.675676 0.739045 1.074390 -0.063369 \n", "273 2020-02-21 -0.894855 -0.966361 -1.166828 0.071506 \n", "274 2020-02-24 -3.611738 -3.480442 -3.498332 -0.131296 \n", "275 2020-02-25 -3.044496 -3.001084 -3.201197 -0.043412 \n", "276 2020-02-26 -1.932367 -2.232813 -1.959383 0.300446 \n", "277 2020-02-27 -3.448276 -3.543438 -3.912623 0.095162 \n", "278 2020-02-28 -3.061224 -3.473936 -3.441291 0.412712 \n", "279 2020-03-02 3.684211 4.259999 4.176892 -0.575789 \n", "280 2020-03-03 -0.761421 -0.858441 -0.423418 0.097020 \n", "281 2020-03-04 -0.255754 -0.283699 -0.793606 0.027944 \n", "282 2020-03-05 -2.564103 -2.663462 -2.351544 0.099360 \n", "\n", " diff_real_fund_est_2111 \n", "263 -0.408400 \n", "264 0.399877 \n", "265 0.336796 \n", "266 -0.812627 \n", "267 -0.121812 \n", "268 0.049524 \n", "269 -0.150265 \n", "270 -0.101663 \n", "271 0.263396 \n", "272 -0.398714 \n", "273 0.271973 \n", "274 -0.113406 \n", "275 0.156700 \n", "276 0.027016 \n", "277 0.464347 \n", "278 0.380066 \n", "279 -0.492682 \n", "280 -0.338003 \n", "281 0.537851 \n", "282 -0.212558 " ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gtspdf.iloc[-20:]" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.10589187603833962, 0.22399439609501928)" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(\n", " np.mean(np.abs(gtspdf[\"diff_real_fund_est\"][-100:])),\n", " np.mean(np.abs(gtspdf[\"diff_real_fund_est_2111\"][-100:])),\n", ")" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(-0.02266683846031749, -0.023893072096493828, 0.007916101144943788)" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 看看有没有肉眼可见的系统偏差\n", "(\n", " np.mean(gtspdf[\"diff_real_fund_est\"][-150:-100]),\n", " np.mean(gtspdf[\"diff_real_fund_est\"][-100:-50]),\n", " np.mean(gtspdf[\"diff_real_fund_est\"][-50:]),\n", ")\n", "# 最近的最准,也可以理解,毕竟是按照4季度底持仓模拟的" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "预测精度要比南方原油好,用人民币中间价,平均误差只有0.1个百分点。" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.distplot(gtspdf[\"diff_real_fund_est\"]) # 看误差分布展宽也明显比南方原油窄" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.05" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len([i for i in gtspdf[\"diff_real_fund_est\"][-100:] if abs(i) > 0.31]) / 100" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "极端值情况,5%分位的误差偏移仅有0.31个百分点,也比南方原油强不少,因此国泰商品预测性更强,更适合套利,或者说套利溢价的阈值更低,因为溢价预测的误差窗口小一些。\n", "\n", "我们再看一下,预测误差的正负和实际上涨与下降之间的关系,这之前先看一下完全反号的预测" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "283 0 0.0\n" ] } ], "source": [ "p = 0\n", "n = 0\n", "for i, row in gtspdf.iterrows():\n", " r = row[\"fund_est\"] * row[\"real\"]\n", " if r >= 0:\n", " p += 1\n", " else:\n", " n += 1\n", "print(p, n, n / (n + p))\n", "# 并没有反向预测这种严重错误,这是一个好消息!" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "65 99 63 56\n" ] } ], "source": [ "uu, ud, dd, du = 0, 0, 0, 0\n", "# uu 实际上涨,real-est>0 (预测涨的少)\n", "# ud 预测涨的多\n", "# du 预测跌的多\n", "# dd 预测跌的少\n", "for i, row in gtspdf.iterrows():\n", " if row[\"real\"] >= 0 and row[\"diff_real_fund_est\"] > 0:\n", " uu += 1\n", " elif row[\"real\"] >= 0 and row[\"diff_real_fund_est\"] <= 0:\n", " ud += 1\n", " elif row[\"real\"] < 0 and row[\"diff_real_fund_est\"] > 0:\n", " du += 1\n", " else:\n", " dd += 1\n", "print(uu, ud, du, dd)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "还是比较平均的,预测涨的比实际多的情况稍多。也就是说预计涨的时候,可能预计的偏大。预计跌的时候,还是没有什么系统性误差的。\n", "\n", "说人话就是基金涨的时候跟不上持仓,跌的时候跟挺紧。。。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 华宝油气净值预估情况" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [], "source": [ "hbyqdf = estimate_table(\n", " \"20190101\",\n", " \"20200305\",\n", " (\"real\", \"\", {\"F162411\": 100}),\n", " (\"fund_est\", \"USD/CNY\", holdings_162411_19s4),\n", " (\"fund_est_2111\", \"2111\", holdings_162411_19s4),\n", " _default=cache_table,\n", ")" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
daterealfund_estfund_est_2111diff_real_fund_estdiff_real_fund_est_2111
2632020-02-07-1.873199-1.913981-1.1741620.040782-0.699037
2642020-02-10-2.055800-2.121451-2.4932730.0656500.437473
2652020-02-110.5397300.5784530.264689-0.0387230.275041
2662020-02-120.7456010.7922621.136632-0.046661-0.391031
2672020-02-13-0.266430-0.265953-0.288820-0.0004770.022391
2682020-02-14-0.831107-0.931193-0.8730060.1000860.041899
2692020-02-17-0.089793-0.068726-0.080150-0.021068-0.009643
2702020-02-18-0.629119-0.674867-0.4928500.045748-0.136270
2712020-02-192.6530002.9201692.661412-0.267169-0.008412
2722020-02-200.2055800.2342150.567880-0.028635-0.362300
2732020-02-21-1.524033-1.646148-1.8452390.1221150.321206
2742020-02-24-5.089286-5.531251-5.5487610.4419650.459475
2752020-02-25-4.358733-4.790551-4.9869710.4318170.628238
2762020-02-26-4.098361-4.569926-4.3030330.4715650.204672
2772020-02-27-5.094017-5.641765-6.0029190.5477480.908902
2782020-02-282.7377523.0680033.102861-0.330251-0.365109
2792020-03-02-0.736325-0.848291-0.9273260.1119650.191001
2802020-03-03-2.825857-3.158663-2.7337330.332806-0.092123
2812020-03-040.3998550.450548-0.063114-0.0506930.462968
2822020-03-05-3.511948-3.924178-3.6163000.4122300.104352
\n", "
" ], "text/plain": [ " date real fund_est fund_est_2111 diff_real_fund_est \\\n", "263 2020-02-07 -1.873199 -1.913981 -1.174162 0.040782 \n", "264 2020-02-10 -2.055800 -2.121451 -2.493273 0.065650 \n", "265 2020-02-11 0.539730 0.578453 0.264689 -0.038723 \n", "266 2020-02-12 0.745601 0.792262 1.136632 -0.046661 \n", "267 2020-02-13 -0.266430 -0.265953 -0.288820 -0.000477 \n", "268 2020-02-14 -0.831107 -0.931193 -0.873006 0.100086 \n", "269 2020-02-17 -0.089793 -0.068726 -0.080150 -0.021068 \n", "270 2020-02-18 -0.629119 -0.674867 -0.492850 0.045748 \n", "271 2020-02-19 2.653000 2.920169 2.661412 -0.267169 \n", "272 2020-02-20 0.205580 0.234215 0.567880 -0.028635 \n", "273 2020-02-21 -1.524033 -1.646148 -1.845239 0.122115 \n", "274 2020-02-24 -5.089286 -5.531251 -5.548761 0.441965 \n", "275 2020-02-25 -4.358733 -4.790551 -4.986971 0.431817 \n", "276 2020-02-26 -4.098361 -4.569926 -4.303033 0.471565 \n", "277 2020-02-27 -5.094017 -5.641765 -6.002919 0.547748 \n", "278 2020-02-28 2.737752 3.068003 3.102861 -0.330251 \n", "279 2020-03-02 -0.736325 -0.848291 -0.927326 0.111965 \n", "280 2020-03-03 -2.825857 -3.158663 -2.733733 0.332806 \n", "281 2020-03-04 0.399855 0.450548 -0.063114 -0.050693 \n", "282 2020-03-05 -3.511948 -3.924178 -3.616300 0.412230 \n", "\n", " diff_real_fund_est_2111 \n", "263 -0.699037 \n", "264 0.437473 \n", "265 0.275041 \n", "266 -0.391031 \n", "267 0.022391 \n", "268 0.041899 \n", "269 -0.009643 \n", "270 -0.136270 \n", "271 -0.008412 \n", "272 -0.362300 \n", "273 0.321206 \n", "274 0.459475 \n", "275 0.628238 \n", "276 0.204672 \n", "277 0.908902 \n", "278 -0.365109 \n", "279 0.191001 \n", "280 -0.092123 \n", "281 0.462968 \n", "282 0.104352 " ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hbyqdf.iloc[-20:]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "这个净值预估就有点意思了,因为雪球上油气姐也有每日官方的净值预报,让我们比一下谁的更准\n", "要知道实在不行我们还有个持仓比例的超参可以调!\n", "\n", "下面是雪球的预估数据\n", "3.5 -4.06\n", "3.4 0.33\n", "3.3 -3.21\n", "3.2 -0.77\n", "2.28 3.39\n", "\n", "就拿最新五天的数据为例,四天都是我们上面的预计更准,因此可以说也是全网最准了,毕竟比官方的预估要接近真实值" ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.11470246307431636, 0.25056930156434193)" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(\n", " np.mean(np.abs(hbyqdf[\"diff_real_fund_est\"][-200:])),\n", " np.mean(np.abs(hbyqdf[\"diff_real_fund_est_2111\"][-200:])),\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "油气的预测平均偏差是0.11个百分点强,比国泰商品的预测精度还低,同样是人民币中间价比市价准很多。\n", "这样看国泰商品竟然是比华宝油气这种跟踪单一指数的产品净值预测更容易,估计这颠覆了很多人的认识" ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(-0.03564024234015609, -0.009798129247228005, 0.02813788155226706)" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(\n", " np.mean(hbyqdf[\"diff_real_fund_est\"][-150:-100]),\n", " np.mean(hbyqdf[\"diff_real_fund_est\"][-100:-50]),\n", " np.mean(hbyqdf[\"diff_real_fund_est\"][-50:]),\n", ")" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAELCAYAAAAiIMZEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3XmcnHWV7/HP6X3fO72ll+wkkJUm\nYRGDLIqAoIKKyAygDoPKVUfnXr06wyjzckaYGec6giKuIDuoGBbZl0Ag+0b2dLbuTjq973tVnftH\nVaDT6aSqO1X1VFWf9+tVr9TyVNW3O92nn/o9v+f8RFUxxhgTW+KcDmCMMSb4rLgbY0wMsuJujDEx\nyIq7McbEICvuxhgTg6y4G2NMDLLibowxMciKuzHGxCAr7sYYE4MSnHrjgoICraqqcurtjTEmKm3Y\nsKFFVQv9bedYca+qqmL9+vVOvb0xxkQlETkUyHZ+h2VEJEVE1orIFhHZLiI/HGObm0WkWUQ2+y5f\nnkhoY4wxwRHInvsgcLGq9ohIIvC2iPxVVVeP2u5xVb09+BGNMcaMl9/irt62kT2+m4m+i7WSNMaY\nCBbQbBkRiReRzUAT8LKqrhljs2tFZKuIPCUi5UFNaYwxZlwCKu6q6lbVRcBUYKmInDVqk2eAKlVd\nALwMPDDW64jIrSKyXkTWNzc3n05uY4wxpzCuee6q2gG8Dlw+6v5WVR303fw1cPZJnn+/qlaranVh\nod+ZPMYYYyYokNkyhSKS47ueClwG7Bq1TcmIm1cDO4MZ0hhjzPgEMlumBHhAROLx/jF4QlWfFZE7\ngfWqugL4uohcDbiANuDmUAU2xhjjnzi1hmp1dbXaSUzGGDM+IrJBVav9befYGarGhNMja2rHvP+G\nZRVhTmJMeFjjMGOMiUFW3I0xJgZZcTfGmBhkxd0YY2KQFXdjjIlBVtyNMSYGWXE3xpgYZMXdGGNi\nkBV3Y4yJQVbcjTEmBllxN8aYGGTF3RhjYpAVd2OMiUFW3I0xJgZZcTfGmBhk/dxNTDlZ33ZjJhvb\nczfGmBhkxd0YY2KQFXdjjIlBVtyNMSYG+S3uIpIiImtFZIuIbBeRH46xTbKIPC4iNSKyRkSqQhHW\nGGNMYALZcx8ELlbVhcAi4HIROXfUNl8C2lV1JvDfwF3BjWmMMWY8/BZ39erx3Uz0XXTUZtcAD/iu\nPwVcIiIStJTGGGPGJaAxdxGJF5HNQBPwsqquGbVJGVAHoKouoBPID2ZQY4wxgQvoJCZVdQOLRCQH\n+LOInKWq28b7ZiJyK3ArQEVFxXifbiahk52UdMMy+/kx5lTGNVtGVTuA14HLRz10GCgHEJEEIBto\nHeP596tqtapWFxYWTiyxMcYYvwKZLVPo22NHRFKBy4BdozZbAdzku34d8Jqqjh6XN8YYEyaBDMuU\nAA+ISDzePwZPqOqzInInsF5VVwC/Af4gIjVAG3B9yBIbY4zxy29xV9WtwOIx7r9jxPUB4DPBjWaM\nMWai7AxVY4yJQVbcjTEmBllxN8aYGGTF3RhjYpCtxGQmhaauAXqH3KQnx5ORlEBqUjzWIcPEMivu\nJqb1D7l5cftR1h1sO64hUmV+Gp+rLncslzGhZsXdxKyt9R08s7WBvkEX58/IZ3ZxJr2Dbtr7hnhz\nTzM/e62GOcWZXDK3yOmoxgSdFXcTk3Yc6eSxdXVMzU3llvOrKM1JPe7x+WXZPLq2li89sJ5vXTab\nr18yy6GkxoSGFXcTc5q6BnhyQz1Tc1P5uwunkxh/4ryBgoxkbls+g0217fzk5T1MK0jnEwtLHUhr\nTGjYbBkTUwaG3Ty05hAJ8XF8YVnlmIX9mMT4OO6+biFnV+byf57ayq6jXWFMakxoWXE3MUNVeWJ9\nHW29Q9ywtILs1ES/z0lKiOMXX1hCZkoCtz64gc6+4TAkNSb0bFjGxIxntzaw62g3V84vYVpBesDP\nm5KVwi9uXML196/mW09s5tc3VfPo2roxt7U+8iZa2J67iQkDw25+/NddlGSncN6M8S8CdnZlHt/9\n+Fxe3dXE05sPhyChMeFlxd3EhF+t3M/hjn6unF9C3ARPTrr5/CqWVORw5zM76Bl0BTmhMeFlxd1E\nvcauAX7+xj4uP7OY6YUZE36d+DjhrmsX0Dvo5tmtR4KY0Jjws+Juot7dL+zG7VG+d8Xc036tWUWZ\n3H7xTLbWd7KzwWbPmOhlxd1EtZ0NXfxxYz23fKiKivy0oLzmbctnUJyVwl82H2Zw2B2U1zQm3Ky4\nm6h235v7SE+K56vLZwbtNZMS4vjU4jK6B1y8srMxaK9rTDhZcTdRq7a1j2e2HOGGZRVkp/mf0z4e\n5XlpLJ2Wxzv7Wjnc0R/U1zYmHKy4m6j1y5X7SIiL48sXTg/J6390XjHpyQk8vekwHlX/TzAmgthJ\nTCYqNXV7+8dce3YZRVkpE36dR9bUnvSx1KR4rpxfwuPr61hzoI3zpo9//rwxTrE9dxOVfvP2AVxu\nD3//4RkhfZ8FU7OZWZjBS9uP0tlvrQlM9PBb3EWkXEReF5EdIrJdRL4xxjYXiUiniGz2Xe4ITVxj\nvAtwPLy6livml1A1jjYDEyEiXLOoFLdHWbHlCGrDMyZKBLLn7gK+rarzgHOBr4nIvDG2e0tVF/ku\ndwY1pTEjbKxtp2fQxW3LQ7vXfkx+RjKXzi1iZ0MXL2w7Gpb3NOZ0+S3uqtqgqht917uBnUBZqIMZ\nMxaPKqv3t7KkIoezyrLD9r4XzCygNDuFO1Zst86RJiqMa8xdRKqAxcCaMR4+T0S2iMhfReTMkzz/\nVhFZLyLrm5ubxx3WmH3NPbT2DvG351WF9X3j44RPLZlKW+8Q//b8zrC+tzETEXBxF5EM4I/AN1V1\n9HnZG4FKVV0I/Ax4eqzXUNX7VbVaVasLCwsnmtlMYmv2t5GWFM/H5xeH/b3LclL58oXTeHx9Hatq\nWsL+/saMR0DFXUQS8Rb2h1X1T6MfV9UuVe3xXX8eSBSRgqAmNZNeR98QOxu6OKcqj+SEeEcy/MOl\ns5lekM53/riVXuscaSKY33nuIiLAb4CdqvqTk2xTDDSqqorIUrx/NFqDmtRMemsPtgGwdFqeYxlS\nEuO5+7oFfOaX73LXC7u485qzTrn9WPPobcEPEw6BnMR0AfA3wHsistl33/eACgBVvQ+4DviKiLiA\nfuB6tTljJohcHg/rDrYzpziT3LQkR7NUV+Vx8/lV/G7VQa6YX8K5dnKTiUB+i7uqvg2ccvUDVb0H\nuCdYoYwZbWdDN72DLpZNi4xC+r8/NodXdzbxnT9u5YVvfJjUJGeGiYw5GTtD1USFjYfayU5NZFbR\nxBfjCKa0pAR+fO18DrX2ce/rNU7HMeYEVtxNxOsaGGZPYzeLy3MmvIReKJw/o4BPLynjlyv3UdPU\n7XQcY45jxd1EvC11HSiwuCLX6Sgn+N4Vc0lLSuCfnt5mrQlMRLHibiKaqrLhUDsVeWkUZiY7HecE\nBRnJfOfyM1i9v40/bzrsdBxj3mfF3US0Ix0DNHUPsrgix+koJ3X9OeUsrsjhR8/ttM6RJmJYP3cT\n0TbUtpMQJywoi9ziHhcnXDCjgE21NfzD45u5dG6R05GMsT13E7kGXW621HUwtyQr4qcaluakcmZp\nFqtqWugbsjNXjfOsuJuI9fquZvqH3SyJwAOpY7lkbhFDLg9v77W+M8Z5VtxNxHpm6xHSk+KZOSUy\n5rb7U5yVwlll2byzr9X6zhjHWXE3EalvyMVrO5s4qyyb+LjImdvuzyVnTGHY7eGtvdbS2jjLiruJ\nSK/taqJ/2M38MC7IEQxTslJYWJ7Du/tb6bG9d+MgK+4mIj27pYHCzOSQr5EaChfNKWTYrWzwdbE0\nxglW3E3E6Rl08fruJq6cXxJR7QYCNSUzhWkF6aw71I7Hzlo1DrF57iasxupvDsf3OH91ZyODLg9X\nLihhb2NPuKIF5GT5R6uuzOXJDfUcaOllRuHxB4QD+R4Yc7psz91EnGe2NFCclcLZUTIFcixnlWWT\nkhjHOhuaMQ6x4m4iStfAMCv3NHPlghLiomiWzGiJ8XEsLs9l+5Eu+uzAqnGAFXcTUV7Z0ciQ2zsk\nE+2qq3Jxe5RNdR1ORzGTkBV3E1Fe3H6U4qwUFpdHbi+ZQJVkpzI1N5V1B9usHbAJOyvuJmIMDLtZ\nuaeFy+YVIVE4S2Ys51Tl0dQ9SF1bn9NRzCRjxd1EjFU1LfQPu7lsXux0VZzvO8N225Eup6OYScaK\nu4kYL21vJDM5gXOnR8Yi2MGQkhjP9IJ0djZ02dCMCSu/xV1EykXkdRHZISLbReQbY2wjIvI/IlIj\nIltFZElo4ppY5fYor+5qZPmcQpISYmufY25JFq29QzR1DzodxUwigZzE5AK+raobRSQT2CAiL6vq\njhHbfByY5bssA37h+9eYgNz9wi5aeoZIT04I6EShQE8migRzS7JYseUIOxu6KMpKcTqOmST87iKp\naoOqbvRd7wZ2AmWjNrsGeFC9VgM5IhL9c9lM2Oxs6CJehDlFmU5HCbrs1ETKclLZ2WDj7iZ8xvX5\nV0SqgMXAmlEPlQF1I27Xc+IfAGNOakdDF9MK00lJjOwVlyZqXmkWde39dA3YGqsmPAIu7iKSAfwR\n+KaqTmgXRERuFZH1IrK+udn6XRuvpu4BWnqGmFuS5XSUkDn2te1q6HY4iZksAiruIpKIt7A/rKp/\nGmOTw0D5iNtTffcdR1XvV9VqVa0uLCycSF4Tg44VvLnFsTckc0xRZjJ56Uk2NGPCJpDZMgL8Btip\nqj85yWYrgL/1zZo5F+hU1YYg5jQxbNfRbkqyU8hJS3I6SsiICHOLM9nX3MOgy+10HDMJBLLnfgHw\nN8DFIrLZd7lCRG4Tkdt82zwP7AdqgF8BXw1NXBNr+ofc1Lb1xuSB1NHmlmbh8mjEtTE2scnvVEhV\nfRs45bng6j0742vBCmUmj71N3XgU5sTwkMwxlXnpJCfEsa+5h7OibPlAE31i62wRE3X2NHaTmhhP\neV6a01FCLj5OqMpPZ19zr9NRzCRgxd04xqPK7sYeZhdlROVyehMxvTCdlp5BuvptSqQJLSvuxjFH\nOvrpHXRNiiGZY44tube/xcbdTWhZcTeO2XW0GwFmTZk8xb04O4XUxHj229CMCTEr7sYxexq7Kc9L\nIz158qzTHifCtIJ09jXbnrsJLSvuxhHdA8PUt/czexJMgRxtemE67X3DtPcOOR3FxDAr7sYRx+Z6\nT6bx9mOm27i7CQMr7sYRuxu7yUxOoDR78rXALcpMJj3Jxt1NaFlxN2Hn9ig1TT3MKsqMmbVSx0NE\nmF6Ywb7mHludyYSMFXcTdofb++gfdjO7KMPpKI6ZXphO14CLVht3NyFixd2E3Z6mHgSYOWXyFvcZ\nBd6v3WbNmFCx4m7C7tgUyLSkyTMFcrT8jCQykxOobe1zOoqJUVbcTVj1DLo43N4/qYdkwDvuXpGf\nxqE2K+4mNKy4m7CqaepBYVLObx+tIi+Ntt4hum3pPRMCVtxNWO1t7CYtKZ7SnFSnoziu0tcJs9b2\n3k0IWHE3YePxKHsau5ldlDlpukCeSmlOKglxYuPuJiSsuJuw2X6ki94hN7Mm8SyZkRLi4yjLSbVx\ndxMSVtxN2Ly5pwmAWTbe/r6K/DQOd/Qz7PY4HcXEGCvuJmze2N1MWU4qGZOoC6Q/lXlpuD3KkY5+\np6OYGGPF3YRFR98QG2vbbZbMKOV2UNWEiBV3ExYr97ZMmoWwxyMzJZG89CQO2UFVE2R+i7uI/FZE\nmkRk20kev0hEOkVks+9yR/Bjmmj3xu4mctMSmZprUyBHq8xLo7atz5qImaAKZM/998DlfrZ5S1UX\n+S53nn4sE0s8HuXN3c18eHahTYEcQ0V+Gj2DLhuaMUHlt7ir6kqgLQxZTIx673Anrb1DfGTOFKej\nRKTKvHQANhxqdziJiSXBGnM/T0S2iMhfReTMIL2miRFv7G5GBD48u9DpKBFpSlYyyQlxVtxNUAVj\nTtpGoFJVe0TkCuBpYNZYG4rIrcCtABUVFUF4axMNXt/dxMKpOeSlJzkdJSLFiVCem8bmug6no5gY\nctp77qrapao9vuvPA4kiUnCSbe9X1WpVrS4stL24yaC1Z5At9R1cNMf+v09lal4qu4520z/kdjqK\niRGnXdxFpFh8a6WJyFLfa7ae7uua2PDW3hZUsfF2PypyvSczvXe40+koJkb4HZYRkUeBi4ACEakH\n/gVIBFDV+4DrgK+IiAvoB65Xm9NlfF7f3UR+ehLzy7KdjhLRpvpOZtpU287SaXkOpzGxwG9xV9XP\n+3n8HuCeoCUyMWPY7eH1XU1cOq+IuDibAnkqGckJVOSlsanWxt1NcNgZqiZk1h1so2vAxUfnFTkd\nJSosrsixg6omaKy4m5B5ZUcTSQlxXDjLDqYGYnF5Dke7BmjotCZi5vRZcTchoaq8vPMoF8zIJ926\nQAZkUUUugA3NmKCw4m5CYk9jD3Vt/Vw2r9jpKFFjXkkWSQlxNjRjgsKKuwmJV3Y2AnDJXJsCGaik\nhDjOKs1iU62dqWpOnxV3ExIv7WhkYXkORVkpTkeJKovKc9la32krM5nTZsXdBF1T1wBb6jq4zPba\nx21xRQ6DLg+7j3Y7HcVEOSvuJuhe3eVdK9XG28dvUXkOgA3NmNNmxd0E3cs7GinPS2V2UYbTUaLO\n1NxUCjKSbcaMOW1W3E1QdfYP89beZj42rxixhTnGTURYUpHDRttzN6fJirsJqpe2H2XYrVy1sNTp\nKFFrSWUuB1v7aO0ZdDqKiWJW3E1QPbu1gfK8VBZOtUZhE7XETmYyQWDF3QRNe+8Qq2pauHJ+qQ3J\nnIYFU7NJiBMbmjGnxYq7CZoXth/F5VGuWlDidJSolpIYz7zSLCvu5rRYcTdB8+zWI0wrSOfM0iyn\no0S9JRW5bKnrxGUnM5kJsuJugqK5e5B397Vy1YISG5IJgsUVOfQPu9llJzOZCbLiboLihW0NeBSu\nWmCzZILh2EFVG5oxE2XF3QTFM1sbmDUlgznFmU5HiQlTc1MpzExm4yEr7mZirLib03aotZe1B9q4\nZpHttQfLBycz2XRIMzFW3M1pe2J9HXEC151d7nSUmLKkIpfatj5a7GQmMwG2RI45LS63h6c21LN8\ndiHF2R+0931kTa2DqWLDkkrfuPuhdj56pjVhM+Nje+7mtKzc20xj1yCfO6fC6SgxZ35ZNonxYkMz\nZkL8FncR+a2INInItpM8LiLyPyJSIyJbRWRJ8GOaSPXY2joKMpJsxaUQ8J7MlM2GQ21ORzFRKJA9\n998Dl5/i8Y8Ds3yXW4FfnH4sEw2auwd5bVcTn14ylcR4+xAYCsum5bGlrpOBYbfTUUyU8fsbqaor\ngVPtOlwDPKheq4EcEbHzzyeBP22sx+VRPlttB1JDZWlVHkNujy2abcYtGLtbZUDdiNv1vvtOICK3\nish6EVnf3NwchLc2TvF4lMfX1VFdmcvMKbYoR6icU5WHCKw9YEMzZnzC+llaVe9X1WpVrS4sLAzn\nW5sge3NPM/tberlhmR1IDaXstETOKM6y4m7GLRjF/TAw8nP5VN99Job9+u39FGUlW7uBMFg2LY8N\nh9oZtiZiZhyCMc99BXC7iDwGLAM6VbUhCK9rIsjIeetHOvpZVdPKx84sJinBDqSG2rJpefz+nYO8\nd7jz/Z4zxvjjt7iLyKPARUCBiNQD/wIkAqjqfcDzwBVADdAH3BKqsCYyrKppISk+jqVVeU5HmRTO\nmeb9Pq890GbF3QTMb3FX1c/7eVyBrwUtkYlonf3DbKnvYNn0fFKT4p2OMykUZCQzozCdNftbuW35\nDKfjmChhn6nNuLy7rxVVuGBGgdNRJpVl0/NZf7Adt0edjmKihBV3E7CBYTdrD7ZyZmkWeelJTseZ\nVJZNy6N70MXOhi6no5goYcXdBOztmhYGhj0sn22tBsJt6Yhxd2MCYcXdBKRv0MWqmhbOLM2iLDfV\n6TiTTkl2KhV5aaw50Op0FBMlrLibgKzc28KQy8Olc4ucjjJpnTc9n3f2tdqi2SYg1s99kjpZv/Wx\nzjht6h7g3f0tLCzPoSgr5bjHrG978Pj7P1k+p5DH19exua6DapuGavywPXfj1y/e2Ifbo1x8ho21\nO+mCmQXExwlv7rG+TMY/K+7mlOra+nh4dS1LKnIpyEh2Os6klp2ayOLyHCvuJiBW3M0p/ei5ncTH\nCZfYWHtEuGhOIVvrO21dVeOXFXdzUm/vbeGF7Ue5/eKZZKcmOh3HwPvTUN/e2+JwEhPprLibMQ27\nPfzgme1U5qfxpQ9NczqO8TmzNIv89CTe2N3kdBQT4ay4mzE9+O4happ6+Ocr55GSaD1kIkVcnPDh\n2YWs3NuCx1oRmFOw4m5O0NQ9wP97eQ8XzSm0ha8j0PLZhbT1DrHtSKfTUUwEs+JujqOq/PPT2xhy\ne7jjqnmIiNORzCgXzipABN7cbbNmzMlZcTfHef69o7y4vZFvXTab6YW2Nmokys9IZn5ZNq/buLs5\nBSvu5n29gy7u+Ms2FkzNtoOoEe6SM4rYVNfB0c4Bp6OYCGXF3bzv2a1H6BoY5u7rFpAQbz8akeyq\nhSWownPv2YqWZmz2G2wA2Ha4ky31ndz+kVmcUZzldBzjx4zCDOaVZPHMliNORzERyoq7oaNviD9v\nOszU3FS+cpEt4xYtPrGwlM11HdS19TkdxUQgK+6TnEeVJ9bX41blc9XlJCXYj0S0uGpBCQDPbrWh\nGXMi+02e5N7Y3cTB1l6uWVhKvjUGiyrleWksKs+xoRkzpoCKu4hcLiK7RaRGRL47xuM3i0iziGz2\nXb4c/Kgm2A609PLariYWleewuCLX6ThmAq5aUMKOhi72Nfc4HcVEGL+LdYhIPHAvcBlQD6wTkRWq\numPUpo+r6u0hyGhCoKt/mEfX1pKblsTVC0udjmNO4VSLeFy1oJQfPb+TZ7c08I1LZ4U5mYlkgey5\nLwVqVHW/qg4BjwHXhDaWCaUhl4dH1tYy5PJw47mV1jsmihVnp3BOZR4rthxG1XrNmA8EUtzLgLoR\nt+t99412rYhsFZGnRKQ8KOlMSNz57HZq2/q49uypJyybZ6LPdWdPZV9zL6v3tzkdxUSQYB1QfQao\nUtUFwMvAA2NtJCK3ish6EVnf3Gx9MZzw6NpaHlpdy4dnFTC/LNvpOCYIrl5USm5aIr9bdcDpKCaC\nBFLcDwMj98Sn+u57n6q2quqxpWF+DZw91gup6v2qWq2q1YWFhRPJa07Dyj3N/NPT21g+u5DL5hU7\nHccESUpiPJ9fWsErOxttzrt5XyDFfR0wS0SmiUgScD2wYuQGIlIy4ubVwM7gRTTBsOtoF199eCOz\npmRwzw2LiY+zbo+x5MZzKxERHnz3oNNRTITwW9xV1QXcDryIt2g/oarbReROEbnat9nXRWS7iGwB\nvg7cHKrAZvyaugb44u/WkZ4cz+9uOYfMFFsyL9aU5qRy+VnFPLaujt5Bl9NxTAQIaMxdVZ9X1dmq\nOkNVf+S77w5VXeG7/n9V9UxVXaiqH1HVXaEMbQLX0TfE3/52LR39w/zmpnMoyU51OpIJkVvOr6J7\nwMWfNx32v7GJeX7nuZvoMNZc6EGXmxVbjrC/uZff3nwOZwVwAPVkc6pN5Du7Mpf5Zdn8btUBPr+0\nIuKH3k41f9+cPms/EKNcbg8Pr65lS10H//P5RXxoVoHTkUyIiQi3fng6+5p7+dPGeqfjGIdZcY9B\nLrf3JKWa5h7uunYBl59V4v9JJiZctaCEheU5/OdLu+kbsrH3ycyKe4xxuT08vKaWXUe7uXphKZ+p\ntvPJJhMR4Z+vnEtj1yC/Wmnz3iczK+4xZNjt4aE1h9jd2M01i0o5d3q+05GMA6qr8rhifjH3vbmP\nxi5bhm+ysuIeIwaH3fzh3UPsaezhk4vKWDbNCvtk9p3Lz8Dl8fBfL+12OopxiBX3GNDWO8RvVh1g\nf0sP1y6ZytJpeU5HMg6rzE/n5vOreHJDPe/sa3E6jnGAFfcod6Sjn8/c9w5HOwf4wrJKzq60vuzG\n65uXzmZaQTrffGwzLT2D/p9gYorNc49i79V38uUH19E36OaWC6YxrSD9hG1s3nrs8jdPPD05gXtv\nWMI1967iW09s4aPzioiTE+e+27zy2GR77lHqhW1H+ewv3yUhLo4nv3LemIXdmLklWfzzVfNYuaeZ\nt/fa8MxkYsU9yng8yr2v13DbQxs4oySTp792AWcUZzkdy0SwG5dVcMX8Yl7acZSdDV1OxzFhYsU9\ninT2DXPrH9bzHy/u5uqFpTz6d+dSmGmLWptTExHuunYBpTmpPLKmll1HrcBPBlbco8R79Z1c+bO3\neHNPMz+8+kx+ev0iWx7PBCwzJZFbzp9GUXYyD6+pZU9jt9ORTIhZcY9ww24PP31lL5/6+So8HuXx\nvz+Pm86vQsY4MGbMqaQmxfPFC6YxJTOZh1YfYmNtu9ORTAjZbJkItvtoN99+cjPbDndxzaJSfvCJ\nM8lNT3I6loliaUkJfOmCaTy8tpanNtRzsKWXTy8ps0+BMciKewRq7x3ip6/u5aHVh8hOTeS+G5dY\n8y8TNGnJCXzxgmm8uquRN3Y388l7V/Hvn57P4orwnSMxMOymobOfzv5h3B7F7VEAslMTOdLRz5TM\nZBLibWDhdFhxjyB9Qy4eWVPLz16roXtgmBuWVfCty+aQZ3vrJsji44SPziumMi+d595r4FM/f4er\nFpTwncvPoDwvLajv5fEoe5q6WXugjTX729h6uIP69n5Ux97+lyv3kxgvzC/Lproqj+rKXM6fWUBG\nspWr8RA92Xc4xKqrq3X9+vWOvHcwjHehgVNt39Y7xAPvHOTBdw/S3jfMh2YWsKQyl+KslGDFNeak\nrl5Uyi/f3Mev3tqPxwMfn1/MZ6vLOdDSO+GTnpq6B1hV08LKPS28tKPx/aX/slMTqchLY0pmMgWZ\nyeSmJZEYL8SL4AG6+oeZU5zJgZZeNh5qZ2t9J0NuD0nxcVTmp3FGSRbzSrLITv1gqciJ/M5FMxHZ\noKrV/razP4UOcbk97G7s5isPbeDVXU0MuTxcOreI25ZPp7oqz84sNWGTkZzAtz86hy8sq+Tnb9Tw\n9KbD/GXzEXLTEpldlEllfhrqpt6AAAAMpUlEQVQVeenkpCWOWex7B13UNPWwp7GbTXUdrN7fyv7m\nXgDy0pOYWZjOzCmZTCtIJzct8ZSTAYqzUvj80g+K78Cwm021Hby2q5E/bTzMM1uO8MyWI0zNTeXM\nkizOKMlCVW2CwRisuIeJR5Xm7kH2Nfewr7mX/c09DLo8FGQkccPSCm48t4KZUzKdjmkmseLsFO68\n5iy+d8VcXtx+lHtfr2FzXQdrDrQBECfelgYPvnsQgN4hF72Dbtp6h95/jYzkBM6pyuVz1eWcNyOf\ns0qzeWxd3YQzpSTGc96MfM6bkc+0ggyaugfYcaSL7Ue6eHFHIy/uaOSpDfVcfMYUPjSrgKVVeTbp\nwMeKe5D1Dbk43N7PodY+DrX1caClhx1Huth2uIshtwfw7s0smJrNmaXZ/NOVc+3AkYkoKYnxXLOo\njN5BNx5VGrsGqG3ro6NvmN5BFzlpSYh4C3laUjzFWSnMKspkdlEGFXlpIf15npKZwpQ5KVw0Zwod\nfUPsbuymd9DFUxvq+cPqQwCcUZzJ4opc+oZclOWkUpSVQuIk/B0LqLiLyOXAT4F44Neq+uNRjycD\nDwJnA63A51T1YHCjOq+zf5iGzn4aOgdYd6CNzoFhuvqH6RoYpqvfRWf/MN/783vHPSczJYG5JVmc\nXZVLaXYq0wrSjztAaoXdRLI4EUqyUynJTn3/vkgZs85JS2LZtHxuWFbBoMvN1vpO1uxvZc2BNp7b\neoSuAe84vwC56UkUZiRTmJmMW5Wq/DSq8tMpyU6J2d9Bv8VdROKBe4HLgHpgnYisUNUdIzb7EtCu\nqjNF5HrgLuBzoQgcKqpKZ/8w9e39vksf9e391LX1cbijn8Pt/XQPHr8mpQAZKQlkpSSSm5ZIVUEa\nH55dSGl2KpX5aVTmfzDGaGPoxoROckI851TlcU5VHrfj/X2+9/V9HO7op6lrgKbuwfeHRd+u+aCB\nWkKcUJabSkVeGuV5aZTnplGel8rU3DSm5qaSn54UteP5gey5LwVqVHU/gIg8BlwDjCzu1wA/8F1/\nCrhHREQdmorj8ShDbg99Q276hlz0Dbnp6h+ms3+Yjr5hWnsHae0ZorlnkMauARo6BzjaOUDfkPu4\n18lITmBqrvc/+tzp+ZTmpFCa492LWbO/lcyUROLjjv+Pj5S9GmMmMxEhLz3J+ym5LPv9+z2qXDJ3\nCgdaeqlr66O2rY/atn5qW3t5YdvR444fACQnxFGSnUJxdgrFWSkUZCSTn5FMfkYSOamJZKcmkpWa\nSHpSAmnJ8aQlxZOcEH9CXXBCIMW9DBh5RKQeWHaybVTVJSKdQD4Q9B6jr+5s5I6/bMejikcVtwfc\nHg9uj+LyKEMuDy6P/78pSQlxFGYkMyUrmTOKM/nInCmUZKe8/xd7am4q2aknP7K/+6j15jAm2hw3\nzDTjxMd7Bl3eT+vt/d5P7B39vp2/fjbUttPSPUT/sPvEJ44SHyckxceREC8kxAnxcUKcHLvAjedV\n8tWLZobgK/xAWA+oisitwK2+mz0iEooFHgsI8I/K3hC8+Rcmvn3AuSOM5Q6/oGY/jZ/Z8Qood6jz\nTCB/0H9W3gW+NvGnVwayUSDF/TBQPuL2VN99Y21TLyIJQDbeA6vHUdX7gfsDCTZRIrI+kAn+kcZy\nh1e05obozW65wyuQw8TrgFkiMk1EkoDrgRWjtlkB3OS7fh3wmlPj7cYYYwLYc/eNod8OvIh3KuRv\nVXW7iNwJrFfVFcBvgD+ISA3QhvcPgDHGGIcENOauqs8Dz4+6744R1weAzwQ32oSFdNgnhCx3eEVr\nboje7JY7jBxrHGaMMSZ0YvPULGOMmeSivriLSJ6IvCwie33/jrnigIhUiMhLIrJTRHaISFV4k56Q\nJ6Dcvm2zRKReRO4JZ8aTZPGbW0QWici7IrJdRLaKiGNnK4vI5SKyW0RqROS7YzyeLCKP+x5f4/TP\nxTEB5P6W7+d4q4i8KiIBTY8LB3/ZR2x3rYioiETETJRAcovIZ33f9+0i8ki4M46Lqkb1Bbgb+K7v\n+neBu06y3RvAZb7rGUBaNOT2Pf5T4BHgnmj4fgOzgVm+66VAA5DjQNZ4YB8wHUgCtgDzRm3zVeA+\n3/Xrgccj4HscSO6PHPsZBr4SCbkDze7bLhNYCawGqqMhNzAL2ATk+m5PcTr3qS5Rv+eOt/XBA77r\nDwCfHL2BiMwDElT1ZQBV7VHVvvBFHJPf3AAicjZQBLwUplz++M2tqntUda/v+hGgCSgMW8IPvN86\nQ1WHgGOtM0Ya+fU8BVwizjcT8ZtbVV8f8TO8Gu/5J5EgkO85wL/i7UE1EM5wpxBI7r8D7lXVdgBV\nbQpzxnGJheJepKoNvutH8RbC0WYDHSLyJxHZJCL/4WuI5iS/uUUkDvgv4B/DGcyPQL7f7xORpXj3\nhPaFOtgYxmqdUXaybVTVBRxrneGkQHKP9CXgryFNFDi/2UVkCVCuqs+FM5gfgXzPZwOzRWSViKz2\ndcuNWFHRz11EXgGKx3jo+yNvqKqKyFjTfxKAC4HFQC3wOHAz3vn5IROE3F8FnlfV+nDuTAYh97HX\nKQH+ANykqp7gpjQAInIjUA0sdzpLIHw7LD/B+/sXbRLwDs1chPeT0koRma+qHY6mOomoKO6qeunJ\nHhORRhEpUdUGXzEZ66NSPbBZP+hs+TRwLiEu7kHIfR5woYh8Fe9xgiQR6VHVkx6kCoYg5EZEsoDn\ngO+r6uoQRfUnaK0zwiyQ3IjIpXj/4C5X1cEwZfPHX/ZM4CzgDd8OSzGwQkSuVlUnF1UO5HteD6xR\n1WHggIjswVvs14Un4vjEwrDMyNYHNwF/GWObdUCOiBwb972Y41sWO8FvblX9gqpWqGoV3qGZB0Nd\n2APgN7evTcWf8eZ9KozZRovW1hl+c4vIYuCXwNURNvZ7yuyq2qmqBapa5fu5Xo33a3CysENgPytP\n491rR0QK8A7T7A9nyHFx+oju6V7wjo++irfJ4ytAnu/+aryrRh3b7jJgK/Ae8HsgKRpyj9j+ZiJj\ntozf3MCNwDCwecRlkUN5rwD24B3z/77vvjvxFhSAFOBJoAZYC0x3+nscYO5XgMYR398VTmcONPuo\nbd8gAmbLBPg9F7xDSjt8deR6pzOf6mJnqBpjTAyKhWEZY4wxo1hxN8aYGGTF3RhjYpAVd2OMiUFW\n3I0xJgZZcTfGmBhkxd04QkR+ICL/KCJ3+s60REQu9LVS3Swiqb4eQNtF5D9ClKFKRLb52eZRX1vd\nfwjC+90crLbNvuw3BOO1TGyKivYDJnbpiOUagS8A/66qDwGIyK14T5Jy+3sdEUlQb+OvoBGRYuAc\nVZ0ZzNcNkirgBrytoI05ge25m7ARke+LyB4ReRuY47vv9yJynYh8Gfgs8K8i8rCIrMDbT2fDyRb7\n8D33PhFZA9wtIuki8lsRWevr/nmNb7sqEXlLRDb6LucHGPkloMz3SeJCEXnj2MISIlIgIgd912/2\ndRx9QbyLmNw9IuMtvq95LXCBn+9PoYj8UUTW+S4X+O5f7suw2fd1ZQI/xtt3aHMwPlWY2GN77iYs\nxNuX/npgEd6fu43AhmOPq+qvReRDwLPq60fja5K2yM9LTwXOV1W3iPwb3t4wXxSRHGCtr8NlE96F\nWgZEZBbwKN52Cf5c7cuzyJfnVNsuwtt1dBDYLSI/A1zAD4Gz8bYSfh3vYg8n81Pgv1X1bRGpAF4E\n5uLtK/Q1VV0lIhl4e6B/F/hHVb0qgK/DTEJW3E24XAj8WX0LTPj2zIPhyRHDNh8FrhaRY/3vU4AK\n4Ahwj4gsAtx4Gz4F26uq2gkgIjuASqAAeENVm333P+7nvS8F5o34I5LlK+argJ+IyMPAnzTMLaBN\ndLLibqJd74jrAlyrqrtHbiAiP8DbZGsh3qHIia7+4+KDocyUUY+NbLnrZmK/W3HAuao6Ot+PReQ5\nvI2tVonIxybw2maSsTF3Ey4rgU/6ZsFkAp8IwXu8CPwv8e3W+trigrdHe4N6Fwz5G7zrZU7EQbxD\nLOBtD+zPGmC5iOSLSCLwGT/bvwT8r2M3fJ80EJEZqvqeqt6FtzXtGUA33t7oxozJirsJC1XdiHcF\nrC14l4QLxQIH/wokAltFZLvvNsDPgZtEZAvewth7kuf785/AV0RkE94hl1NS73KEPwDexTu0stPP\nU74OVPumXu4AbvPd/00R2SYiW/G2Uv4r3vbVbhHZYgdUzVis5a8xxsQg23M3xpgYZAdUTcQTke9z\n4nj1k6r6oyC9/seAu0bdfUBVPxWM1x/j/UL69RgDNixjjDExyYZljDEmBllxN8aYGGTF3RhjYpAV\nd2OMiUFW3I0xJgb9f+erI0xemPoFAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.distplot(hbyqdf[\"diff_real_fund_est\"], bins=40) # 误差分布涨的有点丑, 好像确实也没有国泰商品的正态" ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.05" ] }, "execution_count": 77, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len([i for i in hbyqdf[\"diff_real_fund_est\"][-100:] if abs(i) > 0.40]) / 100" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "百分之五极端分位是预测偏离0.4个百分点" ] }, { "cell_type": "code", "execution_count": 80, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "283 0 0.0\n" ] } ], "source": [ "p = 0\n", "n = 0\n", "for i, row in hbyqdf.iterrows():\n", " r = row[\"fund_est\"] * row[\"real\"]\n", " if r >= 0:\n", " p += 1\n", " else:\n", " n += 1\n", "print(p, n, n / (n + p))\n", "# 无反相预测" ] }, { "cell_type": "code", "execution_count": 81, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "78 67 58 80\n" ] } ], "source": [ "uu, ud, dd, du = 0, 0, 0, 0\n", "# uu 实际上涨,real-est>0 (预测涨的少)\n", "# ud 预测涨的多\n", "# du 预测跌的多\n", "# dd 预测跌的少\n", "for i, row in hbyqdf.iterrows():\n", " if row[\"real\"] >= 0 and row[\"diff_real_fund_est\"] > 0:\n", " uu += 1\n", " elif row[\"real\"] >= 0 and row[\"diff_real_fund_est\"] <= 0:\n", " ud += 1\n", " elif row[\"real\"] < 0 and row[\"diff_real_fund_est\"] > 0:\n", " du += 1\n", " else:\n", " dd += 1\n", "print(uu, ud, du, dd)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "对于华宝油气,预估涨的时候往往预估得不如真实涨的多;预估跌的时候,往往预估比实际跌的少,这似乎说明华宝油气预估的仓位不足,导致预估倾向比较小,让我们调一下这个超参" ] }, { "cell_type": "code", "execution_count": 88, "metadata": {}, "outputs": [], "source": [ "hbyqdf91 = estimate_table(\n", " \"20190101\",\n", " \"20200305\",\n", " (\"real\", \"\", {\"F162411\": 100}),\n", " (\"fund_est\", \"USD/CNY\", {\"1010825\": 91}),\n", " (\"fund_est_2111\", \"2111\", {\"1010825\": 91}),\n", " _default=cache_table,\n", ")" ] }, { "cell_type": "code", "execution_count": 89, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "72 73 62 76\n" ] } ], "source": [ "uu, ud, dd, du = 0, 0, 0, 0\n", "# uu 实际上涨,real-est>0 (预测涨的少)\n", "# ud 预测涨的多\n", "# du 预测跌的多\n", "# dd 预测跌的少\n", "for i, row in hbyqdf91.iterrows():\n", " if row[\"real\"] >= 0 and row[\"diff_real_fund_est\"] > 0:\n", " uu += 1\n", " elif row[\"real\"] >= 0 and row[\"diff_real_fund_est\"] <= 0:\n", " ud += 1\n", " elif row[\"real\"] < 0 and row[\"diff_real_fund_est\"] > 0:\n", " du += 1\n", " else:\n", " dd += 1\n", "print(uu, ud, du, dd)" ] }, { "cell_type": "code", "execution_count": 90, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.11827697989010805" ] }, "execution_count": 90, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.mean(np.abs(hbyqdf91[\"diff_real_fund_est\"][-200:])) # 偏差大了点,但是预测与实际涨跌偏差的正负比较对称了\n", "# 所以仓位90 91 自己看着办吧,差不太多" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## DAX30" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "warning: this fund has no data for rate\n" ] } ], "source": [ "cache_data(cache_table, [\"EUR/CNY\", \"/indices/germany-30\", \"F513030\"])" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [], "source": [ "daxdf = estimate_table(\n", " \"20190101\",\n", " \"20200305\",\n", " (\"real\", \"\", {\"F513030\": 100}),\n", " (\"fund_est\", \"EUR/CNY\", {\"/indices/germany-30\": 97}),\n", " _default=cache_table,\n", ")\n", "\n", "# 这里的仓位97是调超参得到的最好结果" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.03418095656058967" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.mean(np.abs(daxdf[\"diff_real_fund_est\"][-200:]))\n", "# 平均 0.03 偏移,德国30跟踪还是很可以的" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
daterealfund_estdiff_real_fund_est
2632020-02-07-0.884956-0.878367-0.006589
2642020-02-10-0.267857-0.259268-0.008590
2652020-02-110.6266790.5806330.046046
2662020-02-120.7117440.6933140.018430
2672020-02-13-0.353357-0.3577330.004376
2682020-02-14-0.265957-0.228721-0.037236
2692020-02-170.1777780.216454-0.038676
2702020-02-18-0.709849-0.7253450.015496
2712020-02-190.7149240.6631410.051783
2722020-02-20-0.798580-0.712748-0.085832
2732020-02-21-0.536673-0.5419780.005306
2742020-02-24-3.507194-3.424654-0.082540
2752020-02-25-1.770736-1.696144-0.074593
2762020-02-260.000000-0.0305650.030565
2772020-02-27-2.941176-2.913132-0.028044
2782020-02-28-3.030303-2.928281-0.102022
2792020-03-02-0.100806-0.064356-0.036450
2802020-03-031.4127141.3611340.051580
2812020-03-041.3930351.425901-0.032866
2822020-03-05-1.962709-1.9709180.008209
\n", "
" ], "text/plain": [ " date real fund_est diff_real_fund_est\n", "263 2020-02-07 -0.884956 -0.878367 -0.006589\n", "264 2020-02-10 -0.267857 -0.259268 -0.008590\n", "265 2020-02-11 0.626679 0.580633 0.046046\n", "266 2020-02-12 0.711744 0.693314 0.018430\n", "267 2020-02-13 -0.353357 -0.357733 0.004376\n", "268 2020-02-14 -0.265957 -0.228721 -0.037236\n", "269 2020-02-17 0.177778 0.216454 -0.038676\n", "270 2020-02-18 -0.709849 -0.725345 0.015496\n", "271 2020-02-19 0.714924 0.663141 0.051783\n", "272 2020-02-20 -0.798580 -0.712748 -0.085832\n", "273 2020-02-21 -0.536673 -0.541978 0.005306\n", "274 2020-02-24 -3.507194 -3.424654 -0.082540\n", "275 2020-02-25 -1.770736 -1.696144 -0.074593\n", "276 2020-02-26 0.000000 -0.030565 0.030565\n", "277 2020-02-27 -2.941176 -2.913132 -0.028044\n", "278 2020-02-28 -3.030303 -2.928281 -0.102022\n", "279 2020-03-02 -0.100806 -0.064356 -0.036450\n", "280 2020-03-03 1.412714 1.361134 0.051580\n", "281 2020-03-04 1.393035 1.425901 -0.032866\n", "282 2020-03-05 -1.962709 -1.970918 0.008209" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "daxdf.iloc[-20:]" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(-0.010051134143197249, -0.0079593039572593)" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(\n", " np.mean(daxdf[\"diff_real_fund_est\"][-200:-100]),\n", " np.mean(daxdf[\"diff_real_fund_est\"][-200:]),\n", ")" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "76 80 48 79\n" ] } ], "source": [ "uu, ud, dd, du = 0, 0, 0, 0\n", "# uu 实际上涨,real-est>0 (预测涨的少)\n", "# ud 预测涨的多\n", "# du 预测跌的多\n", "# dd 预测跌的少\n", "for i, row in daxdf.iterrows():\n", " if row[\"real\"] >= 0 and row[\"diff_real_fund_est\"] > 0:\n", " uu += 1\n", " elif row[\"real\"] >= 0 and row[\"diff_real_fund_est\"] <= 0:\n", " ud += 1\n", " elif row[\"real\"] < 0 and row[\"diff_real_fund_est\"] > 0:\n", " du += 1\n", " else:\n", " dd += 1\n", "print(uu, ud, du, dd)" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nRHzi/wOq49UR9K6kVQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "sns.distplot(daxdf[\"diff_real_fund_est\"], bins=30)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "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.3" } }, "nbformat": 4, "nbformat_minor": 2 }