Commit c86610be authored by Dr.李's avatar Dr.李

update example

parent 265f1b2a
......@@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
"execution_count": null,
"execution_count": 1,
"metadata": {
"collapsed": true
},
......@@ -21,7 +21,7 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 2,
"metadata": {
"collapsed": true
},
......@@ -34,22 +34,23 @@
"start_date = '2010-01-01'\n",
"end_date = '2018-02-14'\n",
"\n",
"frequency = '20b'\n",
"frequency = '10b'\n",
"method = 'risk_neutral'\n",
"neutralize_risk = industry_styles\n",
"turn_over_target_base = 2.0\n",
"benchmark_total_lower = 1.0\n",
"industry_name = 'sw_adj'\n",
"industry_level = 1\n",
"benchmark_total_lower = 0.8\n",
"benchmark_total_upper = 1.0\n",
"horizon = map_freq(frequency)\n",
"weight_gap = 0.300\n",
"weight_gap = 0.01\n",
"benchmark_code = 905\n",
"universe_name = ['hs300']\n",
"universe_name = ['zz800']\n",
"universe = Universe('custom', universe_name)\n",
"ref_dates = makeSchedule(start_date, end_date, frequency, 'china.sse')\n",
"\n",
"executor = NaiveExecutor()\n",
"connect_str = 'postgres+psycopg2://postgres:we083826@192.168.0.102/alpha'\n",
"engine = SqlEngine(connect_str)"
"data_source = 'postgres+psycopg2://postgres:we083826@192.168.0.102/alpha'\n",
"engine = SqlEngine(data_source)"
]
},
{
......@@ -64,7 +65,8 @@
"Constraints settings\n",
"\"\"\"\n",
"\n",
"constraint_risk = ['SIZE', 'SIZENL', 'BETA']\n",
"industry_names = industry_list(industry_name, industry_level)\n",
"constraint_risk = ['SIZE', 'SIZENL', 'BETA'] + industry_names\n",
"total_risk_names = constraint_risk + ['benchmark', 'total']\n",
"\n",
"b_type = []\n",
......@@ -76,10 +78,6 @@
" b_type.append(BoundaryType.RELATIVE)\n",
" l_val.append(benchmark_total_lower)\n",
" u_val.append(benchmark_total_upper)\n",
" elif name == 'total':\n",
" b_type.append(BoundaryType.RELATIVE)\n",
" l_val.append(1.0)\n",
" u_val.append(1.0)\n",
" else:\n",
" b_type.append(BoundaryType.ABSOLUTE)\n",
" l_val.append(0.0)\n",
......@@ -91,7 +89,9 @@
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"\"\"\"\n",
......@@ -105,7 +105,10 @@
" dates=ref_dates,\n",
" horizon=horizon,\n",
" offset=1)\n",
"return_groups = codes_return.groupby('trade_date')"
"\n",
"return_groups = codes_return.groupby('trade_date')\n",
"industry_total = engine.fetch_industry_matrix_range(universe, dates=ref_dates, category=industry_name, level=industry_level)\n",
"industry_groups = industry_total.groupby('trade_date')"
]
},
{
......@@ -146,11 +149,12 @@
" date = value[0]\n",
" data = value[1]\n",
" index_dates.append(date)\n",
"\n",
" \n",
" industry_matrix = industry_groups.get_group(date)\n",
" total_data = data.fillna(data[alpha_name].median())\n",
" total_data = pd.merge(total_data, industry_matrix, on=['code'])\n",
" alpha_logger.info('{0}: {1}'.format(date, len(total_data)))\n",
" risk_exp = total_data[neutralize_risk].values.astype(float)\n",
" industry = total_data.industry_code.values\n",
" benchmark_w = total_data.weight.values\n",
" is_in_benchmark = (benchmark_w > 0.).astype(float).reshape(-1, 1)\n",
"\n",
......@@ -174,7 +178,7 @@
"\n",
" alpha_logger.info('{0} full re-balance'.format(date))\n",
" target_pos, _ = er_portfolio_analysis(er,\n",
" industry,\n",
" total_data.industry_name.values,\n",
" None,\n",
" constraints,\n",
" False,\n",
......@@ -217,13 +221,13 @@
"\n",
"def worker_func_positive(factor_name):\n",
" from alphamind.api import SqlEngine\n",
" engine = SqlEngine(connect_str)\n",
" engine = SqlEngine(data_source)\n",
" return factor_analysis(engine, factor_name, universe, benchmark_code, positive=True)\n",
"\n",
"\n",
"def worker_func_negative(factor_name):\n",
" from alphamind.api import SqlEngine\n",
" engine = SqlEngine(connect_str)\n",
" engine = SqlEngine(data_source)\n",
" return factor_analysis(engine, factor_name, universe, benchmark_code, positive=False)"
]
},
......@@ -237,7 +241,7 @@
"source": [
"df = engine.fetch_factor_coverage(start_date='2011-01-01',\n",
" end_date='2018-02-12',\n",
" universe='hs300')\n",
" universe=universe_name[0])\n",
"df = df[df.source != 'risk_exposure']\n",
"df = df.groupby('factor').mean()\n",
"df = df[df.coverage >= 0.98]"
......@@ -246,40 +250,41 @@
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%%time\n",
"\n",
"from dask.distributed import Client\n",
"from dask.diagnostics import ProgressBar\n",
"\n",
"client = Client('192.168.0.102:8786')\n",
"\n",
"tasks = client.map(worker_func_positive, df.index.tolist(), pure=False)\n",
"with ProgressBar():\n",
" res1 = client.gather(tasks)\n",
"res1 = client.gather(tasks)\n",
"\n",
"tasks = client.map(worker_func_negative, df.index.tolist(), pure=False)\n",
"with ProgressBar():\n",
" res2 = client.gather(tasks)\n",
"res2 = client.gather(tasks)\n",
"\n",
"factor_df = pd.DataFrame()\n",
"ic_df = pd.DataFrame()\n",
"\n",
"for f_name, df in res1:\n",
" factor_df[f_name] = df['returns']\n",
" ic_df[f_name] = df['IC']\n",
"for f_name, res in res1:\n",
" factor_df[f_name] = res['returns']\n",
" ic_df[f_name] = res['IC']\n",
"\n",
"for f_name, df in res2:\n",
" factor_df[f_name] = df['returns']\n",
" ic_df[f_name] = df['IC']"
"for f_name, res in res2:\n",
" factor_df[f_name] = res['returns']\n",
" ic_df[f_name] = res['IC']"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"writer = pd.ExcelWriter(f'{universe_name[0]}.xlsx', engine='xlsxwriter')\n",
......@@ -288,33 +293,6 @@
"writer.close()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"ic_df.shape"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
......@@ -350,7 +328,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.4"
"version": "3.6.3"
}
},
"nbformat": 4,
......
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import numpy as np\n",
"import pandas as pd\n",
"from PyFin.api import *\n",
"from alphamind.api import *\n",
"from matplotlib import pyplot as plt\n",
"\n",
"plt.style.use('ggplot')"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# Back test parameter settings\n",
"start_date = '2011-01-01'\n",
"end_date = '2018-02-14'\n",
"\n",
"freq = '10b'\n",
"industry_lower = 1.\n",
"industry_upper = 1.\n",
"neutralized_risk = industry_styles\n",
"industry_name = 'sw_adj'\n",
"industry_level = 1\n",
"turn_over_target_base = 0.3\n",
"benchmark_total_lower = 0.8\n",
"benchmark_total_upper = 1.0\n",
"batch = 0\n",
"horizon = map_freq(freq)\n",
"weight_gap = 0.01\n",
"universe = Universe(\"custom\", ['zz800'])\n",
"data_source = 'postgres+psycopg2://postgres:we083826@192.168.0.102/alpha'\n",
"benchmark_code = 905\n",
"\n",
"executor = NaiveExecutor()\n",
"ref_dates = makeSchedule(start_date, end_date, freq, 'china.sse')\n",
"engine = SqlEngine(data_source)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"base1 = LAST('roe_q')\n",
"base2 = LAST('ep_q')\n",
"\n",
"alpha_factors = {\n",
" 'f01': base1,\n",
" 'f02': base2,\n",
" 'f03': LAST('ILLIQUIDITY'),\n",
" 'f04': LAST('cfinc1_q'),\n",
" 'f05': LAST('CHV'),\n",
" 'f06': LAST('CFToAsset'),\n",
" 'f07': LAST('market_confidence_75d'),\n",
" 'f08': LAST('PB'),\n",
" 'f09': LAST('con_pe_rolling_order'),\n",
" 'f10': LAST('con_pb_rolling_order'),\n",
"}\n",
"\n",
"weights = dict(f01=1.,\n",
" f02=1.,\n",
" f03=0.25,\n",
" f04=0.25,\n",
" f05=0.25,\n",
" f06=0.25,\n",
" f07=0.25,\n",
" f08=-0.25,\n",
" f09=-0.25,\n",
" f10=-0.25)\n",
"alpha_model = ConstLinearModel(features=alpha_factors, weights=weights)\n",
"\n",
"def train_worker(ref_date):\n",
" data_meta = DataMeta(freq=freq,\n",
" universe=universe,\n",
" batch=batch,\n",
" neutralized_risk=neutralized_risk,\n",
" risk_model='short',\n",
" pre_process=[winsorize_normal, standardize],\n",
" post_process=[winsorize_normal, standardize],\n",
" warm_start=0,\n",
" data_source=data_source)\n",
" \n",
" return train_model(ref_date, alpha_model, data_meta)\n",
"\n",
"\n",
"def predict_worker(params):\n",
" data_meta = DataMeta(freq=freq,\n",
" universe=universe,\n",
" batch=batch,\n",
" neutralized_risk=neutralized_risk,\n",
" risk_model='short',\n",
" pre_process=[winsorize_normal, standardize],\n",
" post_process=[winsorize_normal, standardize],\n",
" warm_start=0,\n",
" data_source=data_source)\n",
" ref_date, model = params\n",
" er = predict_by_model(ref_date, model, data_meta)\n",
" return er"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time: 6min 49s\n"
]
}
],
"source": [
"%%time\n",
"\n",
"# training / predict on dask executor\n",
"\n",
"from dask.distributed import Client\n",
"client = Client('192.168.0.102:8786')\n",
"\n",
"tasks = client.map(predict_worker, [(d.strftime('%Y-%m-%d'), alpha_model) for d in ref_dates], pure=False)\n",
"predicts = client.gather(tasks)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"2018-02-25 14:48:14,666 - ALPHA_MIND - INFO - 2011-01-04 partial re-balance: 799\n",
"2018-02-25 14:48:14,936 - ALPHA_MIND - INFO - 2011-01-04 is finished\n",
"2018-02-25 14:48:14,952 - ALPHA_MIND - INFO - 2011-01-18 partial re-balance: 799\n",
"2018-02-25 14:48:15,352 - ALPHA_MIND - INFO - 2011-01-18 is finished\n",
"2018-02-25 14:48:15,372 - ALPHA_MIND - INFO - 2011-02-01 partial re-balance: 798\n",
"2018-02-25 14:48:15,736 - ALPHA_MIND - INFO - 2011-02-01 is finished\n",
"2018-02-25 14:48:15,756 - ALPHA_MIND - INFO - 2011-02-22 partial re-balance: 797\n",
"2018-02-25 14:48:16,127 - ALPHA_MIND - INFO - 2011-02-22 is finished\n",
"2018-02-25 14:48:16,148 - ALPHA_MIND - INFO - 2011-03-08 partial re-balance: 798\n",
"2018-02-25 14:48:16,509 - ALPHA_MIND - INFO - 2011-03-08 is finished\n",
"2018-02-25 14:48:16,530 - ALPHA_MIND - INFO - 2011-03-22 partial re-balance: 798\n",
"2018-02-25 14:48:16,882 - ALPHA_MIND - INFO - 2011-03-22 is finished\n",
"2018-02-25 14:48:16,914 - ALPHA_MIND - INFO - 2011-04-07 partial re-balance: 798\n",
"2018-02-25 14:48:17,288 - ALPHA_MIND - INFO - 2011-04-07 is finished\n",
"2018-02-25 14:48:17,320 - ALPHA_MIND - INFO - 2011-04-21 partial re-balance: 798\n",
"2018-02-25 14:48:17,673 - ALPHA_MIND - INFO - 2011-04-21 is finished\n",
"2018-02-25 14:48:17,693 - ALPHA_MIND - INFO - 2011-05-06 partial re-balance: 798\n",
"2018-02-25 14:48:18,059 - ALPHA_MIND - INFO - 2011-05-06 is finished\n",
"2018-02-25 14:48:18,078 - ALPHA_MIND - INFO - 2011-05-20 partial re-balance: 798\n",
"2018-02-25 14:48:18,504 - ALPHA_MIND - INFO - 2011-05-20 is finished\n",
"2018-02-25 14:48:18,549 - ALPHA_MIND - INFO - 2011-06-03 partial re-balance: 798\n",
"2018-02-25 14:48:18,925 - ALPHA_MIND - INFO - 2011-06-03 is finished\n",
"2018-02-25 14:48:18,945 - ALPHA_MIND - INFO - 2011-06-20 partial re-balance: 798\n",
"2018-02-25 14:48:19,305 - ALPHA_MIND - INFO - 2011-06-20 is finished\n",
"2018-02-25 14:48:19,333 - ALPHA_MIND - INFO - 2011-07-04 partial re-balance: 798\n",
"2018-02-25 14:48:19,690 - ALPHA_MIND - INFO - 2011-07-04 is finished\n",
"2018-02-25 14:48:19,710 - ALPHA_MIND - INFO - 2011-07-18 partial re-balance: 798\n",
"2018-02-25 14:48:20,075 - ALPHA_MIND - INFO - 2011-07-18 is finished\n",
"2018-02-25 14:48:20,095 - ALPHA_MIND - INFO - 2011-08-01 partial re-balance: 797\n",
"2018-02-25 14:48:20,588 - ALPHA_MIND - INFO - 2011-08-01 is finished\n",
"2018-02-25 14:48:20,625 - ALPHA_MIND - INFO - 2011-08-15 partial re-balance: 797\n",
"2018-02-25 14:48:20,988 - ALPHA_MIND - INFO - 2011-08-15 is finished\n",
"2018-02-25 14:48:21,020 - ALPHA_MIND - INFO - 2011-08-29 partial re-balance: 796\n",
"2018-02-25 14:48:21,367 - ALPHA_MIND - INFO - 2011-08-29 is finished\n",
"2018-02-25 14:48:21,389 - ALPHA_MIND - INFO - 2011-09-13 partial re-balance: 797\n",
"2018-02-25 14:48:21,768 - ALPHA_MIND - INFO - 2011-09-13 is finished\n",
"2018-02-25 14:48:21,790 - ALPHA_MIND - INFO - 2011-09-27 partial re-balance: 797\n",
"2018-02-25 14:48:22,223 - ALPHA_MIND - INFO - 2011-09-27 is finished\n",
"2018-02-25 14:48:22,245 - ALPHA_MIND - INFO - 2011-10-18 partial re-balance: 798\n",
"2018-02-25 14:48:22,670 - ALPHA_MIND - INFO - 2011-10-18 is finished\n",
"2018-02-25 14:48:22,695 - ALPHA_MIND - INFO - 2011-11-01 partial re-balance: 798\n",
"2018-02-25 14:48:23,069 - ALPHA_MIND - INFO - 2011-11-01 is finished\n",
"2018-02-25 14:48:23,076 - ALPHA_MIND - INFO - 2011-11-15 partial re-balance: 798\n",
"2018-02-25 14:48:23,467 - ALPHA_MIND - INFO - 2011-11-15 is finished\n",
"2018-02-25 14:48:23,481 - ALPHA_MIND - INFO - 2011-11-29 partial re-balance: 798\n",
"2018-02-25 14:48:23,952 - ALPHA_MIND - INFO - 2011-11-29 is finished\n",
"2018-02-25 14:48:23,968 - ALPHA_MIND - INFO - 2011-12-13 partial re-balance: 798\n",
"2018-02-25 14:48:24,331 - ALPHA_MIND - INFO - 2011-12-13 is finished\n",
"2018-02-25 14:48:24,353 - ALPHA_MIND - INFO - 2011-12-27 partial re-balance: 798\n",
"2018-02-25 14:48:24,770 - ALPHA_MIND - INFO - 2011-12-27 is finished\n",
"2018-02-25 14:48:24,801 - ALPHA_MIND - INFO - 2012-01-12 partial re-balance: 798\n",
"2018-02-25 14:48:25,180 - ALPHA_MIND - INFO - 2012-01-12 is finished\n",
"2018-02-25 14:48:25,201 - ALPHA_MIND - INFO - 2012-02-02 partial re-balance: 798\n",
"2018-02-25 14:48:25,631 - ALPHA_MIND - INFO - 2012-02-02 is finished\n",
"2018-02-25 14:48:25,654 - ALPHA_MIND - INFO - 2012-02-16 partial re-balance: 798\n",
"2018-02-25 14:48:26,026 - ALPHA_MIND - INFO - 2012-02-16 is finished\n",
"2018-02-25 14:48:26,050 - ALPHA_MIND - INFO - 2012-03-01 partial re-balance: 797\n",
"2018-02-25 14:48:26,403 - ALPHA_MIND - INFO - 2012-03-01 is finished\n",
"2018-02-25 14:48:26,417 - ALPHA_MIND - INFO - 2012-03-15 partial re-balance: 797\n",
"2018-02-25 14:48:26,857 - ALPHA_MIND - INFO - 2012-03-15 is finished\n",
"2018-02-25 14:48:26,872 - ALPHA_MIND - INFO - 2012-03-29 partial re-balance: 796\n",
"2018-02-25 14:48:27,320 - ALPHA_MIND - INFO - 2012-03-29 is finished\n",
"2018-02-25 14:48:27,336 - ALPHA_MIND - INFO - 2012-04-17 partial re-balance: 798\n",
"2018-02-25 14:48:27,706 - ALPHA_MIND - INFO - 2012-04-17 is finished\n",
"2018-02-25 14:48:27,721 - ALPHA_MIND - INFO - 2012-05-03 partial re-balance: 798\n",
"2018-02-25 14:48:28,096 - ALPHA_MIND - INFO - 2012-05-03 is finished\n",
"2018-02-25 14:48:28,115 - ALPHA_MIND - INFO - 2012-05-17 partial re-balance: 798\n",
"2018-02-25 14:48:28,535 - ALPHA_MIND - INFO - 2012-05-17 is finished\n",
"2018-02-25 14:48:28,555 - ALPHA_MIND - INFO - 2012-05-31 partial re-balance: 798\n",
"2018-02-25 14:48:28,937 - ALPHA_MIND - INFO - 2012-05-31 is finished\n",
"2018-02-25 14:48:28,957 - ALPHA_MIND - INFO - 2012-06-14 partial re-balance: 798\n",
"2018-02-25 14:48:29,367 - ALPHA_MIND - INFO - 2012-06-14 is finished\n",
"2018-02-25 14:48:29,406 - ALPHA_MIND - INFO - 2012-06-29 partial re-balance: 798\n",
"2018-02-25 14:48:29,846 - ALPHA_MIND - INFO - 2012-06-29 is finished\n",
"2018-02-25 14:48:29,865 - ALPHA_MIND - INFO - 2012-07-13 partial re-balance: 798\n",
"2018-02-25 14:48:30,231 - ALPHA_MIND - INFO - 2012-07-13 is finished\n",
"2018-02-25 14:48:30,252 - ALPHA_MIND - INFO - 2012-07-27 partial re-balance: 798\n",
"2018-02-25 14:48:30,627 - ALPHA_MIND - INFO - 2012-07-27 is finished\n",
"2018-02-25 14:48:30,649 - ALPHA_MIND - INFO - 2012-08-10 partial re-balance: 799\n",
"2018-02-25 14:48:31,109 - ALPHA_MIND - INFO - 2012-08-10 is finished\n",
"2018-02-25 14:48:31,131 - ALPHA_MIND - INFO - 2012-08-24 partial re-balance: 799\n",
"2018-02-25 14:48:31,496 - ALPHA_MIND - INFO - 2012-08-24 is finished\n",
"2018-02-25 14:48:31,516 - ALPHA_MIND - INFO - 2012-09-07 partial re-balance: 799\n",
"2018-02-25 14:48:31,914 - ALPHA_MIND - INFO - 2012-09-07 is finished\n",
"2018-02-25 14:48:31,933 - ALPHA_MIND - INFO - 2012-09-21 partial re-balance: 799\n",
"2018-02-25 14:48:32,295 - ALPHA_MIND - INFO - 2012-09-21 is finished\n",
"2018-02-25 14:48:32,315 - ALPHA_MIND - INFO - 2012-10-12 partial re-balance: 799\n",
"2018-02-25 14:48:32,668 - ALPHA_MIND - INFO - 2012-10-12 is finished\n",
"2018-02-25 14:48:32,689 - ALPHA_MIND - INFO - 2012-10-26 partial re-balance: 799\n",
"2018-02-25 14:48:33,047 - ALPHA_MIND - INFO - 2012-10-26 is finished\n",
"2018-02-25 14:48:33,066 - ALPHA_MIND - INFO - 2012-11-09 partial re-balance: 799\n",
"2018-02-25 14:48:33,426 - ALPHA_MIND - INFO - 2012-11-09 is finished\n",
"2018-02-25 14:48:33,447 - ALPHA_MIND - INFO - 2012-11-23 partial re-balance: 799\n",
"2018-02-25 14:48:33,801 - ALPHA_MIND - INFO - 2012-11-23 is finished\n",
"2018-02-25 14:48:33,823 - ALPHA_MIND - INFO - 2012-12-07 partial re-balance: 799\n",
"2018-02-25 14:48:34,229 - ALPHA_MIND - INFO - 2012-12-07 is finished\n",
"2018-02-25 14:48:34,251 - ALPHA_MIND - INFO - 2012-12-21 partial re-balance: 799\n",
"2018-02-25 14:48:34,615 - ALPHA_MIND - INFO - 2012-12-21 is finished\n",
"2018-02-25 14:48:34,635 - ALPHA_MIND - INFO - 2013-01-09 partial re-balance: 799\n",
"2018-02-25 14:48:35,133 - ALPHA_MIND - INFO - 2013-01-09 is finished\n",
"2018-02-25 14:48:35,155 - ALPHA_MIND - INFO - 2013-01-23 partial re-balance: 799\n",
"2018-02-25 14:48:35,516 - ALPHA_MIND - INFO - 2013-01-23 is finished\n",
"2018-02-25 14:48:35,535 - ALPHA_MIND - INFO - 2013-02-06 partial re-balance: 800\n",
"2018-02-25 14:48:35,891 - ALPHA_MIND - INFO - 2013-02-06 is finished\n",
"2018-02-25 14:48:35,910 - ALPHA_MIND - INFO - 2013-02-27 partial re-balance: 800\n",
"2018-02-25 14:48:36,277 - ALPHA_MIND - INFO - 2013-02-27 is finished\n",
"2018-02-25 14:48:36,297 - ALPHA_MIND - INFO - 2013-03-13 partial re-balance: 800\n",
"2018-02-25 14:48:36,735 - ALPHA_MIND - INFO - 2013-03-13 is finished\n",
"2018-02-25 14:48:36,755 - ALPHA_MIND - INFO - 2013-03-27 partial re-balance: 800\n",
"2018-02-25 14:48:37,130 - ALPHA_MIND - INFO - 2013-03-27 is finished\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2018-02-25 14:48:37,149 - ALPHA_MIND - INFO - 2013-04-12 partial re-balance: 800\n",
"2018-02-25 14:48:37,516 - ALPHA_MIND - INFO - 2013-04-12 is finished\n",
"2018-02-25 14:48:37,535 - ALPHA_MIND - INFO - 2013-04-26 partial re-balance: 800\n",
"2018-02-25 14:48:37,960 - ALPHA_MIND - INFO - 2013-04-26 is finished\n",
"2018-02-25 14:48:37,981 - ALPHA_MIND - INFO - 2013-05-15 partial re-balance: 800\n",
"2018-02-25 14:48:38,379 - ALPHA_MIND - INFO - 2013-05-15 is finished\n",
"2018-02-25 14:48:38,406 - ALPHA_MIND - INFO - 2013-05-29 partial re-balance: 800\n",
"2018-02-25 14:48:38,778 - ALPHA_MIND - INFO - 2013-05-29 is finished\n",
"2018-02-25 14:48:38,799 - ALPHA_MIND - INFO - 2013-06-17 partial re-balance: 800\n",
"2018-02-25 14:48:39,181 - ALPHA_MIND - INFO - 2013-06-17 is finished\n",
"2018-02-25 14:48:39,200 - ALPHA_MIND - INFO - 2013-07-01 partial re-balance: 800\n",
"2018-02-25 14:48:39,568 - ALPHA_MIND - INFO - 2013-07-01 is finished\n",
"2018-02-25 14:48:39,591 - ALPHA_MIND - INFO - 2013-07-15 partial re-balance: 800\n",
"2018-02-25 14:48:40,021 - ALPHA_MIND - INFO - 2013-07-15 is finished\n",
"2018-02-25 14:48:40,040 - ALPHA_MIND - INFO - 2013-07-29 partial re-balance: 800\n",
"2018-02-25 14:48:40,394 - ALPHA_MIND - INFO - 2013-07-29 is finished\n",
"2018-02-25 14:48:40,415 - ALPHA_MIND - INFO - 2013-08-12 partial re-balance: 800\n",
"2018-02-25 14:48:40,914 - ALPHA_MIND - INFO - 2013-08-12 is finished\n",
"2018-02-25 14:48:40,934 - ALPHA_MIND - INFO - 2013-08-26 partial re-balance: 800\n",
"2018-02-25 14:48:41,307 - ALPHA_MIND - INFO - 2013-08-26 is finished\n",
"2018-02-25 14:48:41,326 - ALPHA_MIND - INFO - 2013-09-09 partial re-balance: 800\n",
"2018-02-25 14:48:41,689 - ALPHA_MIND - INFO - 2013-09-09 is finished\n",
"2018-02-25 14:48:41,708 - ALPHA_MIND - INFO - 2013-09-25 partial re-balance: 799\n",
"2018-02-25 14:48:42,077 - ALPHA_MIND - INFO - 2013-09-25 is finished\n",
"2018-02-25 14:48:42,101 - ALPHA_MIND - INFO - 2013-10-16 partial re-balance: 800\n",
"2018-02-25 14:48:42,516 - ALPHA_MIND - INFO - 2013-10-16 is finished\n",
"2018-02-25 14:48:42,535 - ALPHA_MIND - INFO - 2013-10-30 partial re-balance: 800\n",
"2018-02-25 14:48:42,894 - ALPHA_MIND - INFO - 2013-10-30 is finished\n",
"2018-02-25 14:48:42,913 - ALPHA_MIND - INFO - 2013-11-13 partial re-balance: 800\n",
"2018-02-25 14:48:43,279 - ALPHA_MIND - INFO - 2013-11-13 is finished\n",
"2018-02-25 14:48:43,298 - ALPHA_MIND - INFO - 2013-11-27 partial re-balance: 800\n",
"2018-02-25 14:48:43,719 - ALPHA_MIND - INFO - 2013-11-27 is finished\n",
"2018-02-25 14:48:43,740 - ALPHA_MIND - INFO - 2013-12-11 partial re-balance: 800\n",
"2018-02-25 14:48:44,110 - ALPHA_MIND - INFO - 2013-12-11 is finished\n",
"2018-02-25 14:48:44,132 - ALPHA_MIND - INFO - 2013-12-25 partial re-balance: 800\n",
"2018-02-25 14:48:44,515 - ALPHA_MIND - INFO - 2013-12-25 is finished\n",
"2018-02-25 14:48:44,535 - ALPHA_MIND - INFO - 2014-01-09 partial re-balance: 800\n",
"2018-02-25 14:48:44,920 - ALPHA_MIND - INFO - 2014-01-09 is finished\n",
"2018-02-25 14:48:44,939 - ALPHA_MIND - INFO - 2014-01-23 partial re-balance: 800\n",
"2018-02-25 14:48:45,291 - ALPHA_MIND - INFO - 2014-01-23 is finished\n",
"2018-02-25 14:48:45,311 - ALPHA_MIND - INFO - 2014-02-13 partial re-balance: 800\n",
"2018-02-25 14:48:45,699 - ALPHA_MIND - INFO - 2014-02-13 is finished\n",
"2018-02-25 14:48:45,718 - ALPHA_MIND - INFO - 2014-02-27 partial re-balance: 800\n",
"2018-02-25 14:48:46,179 - ALPHA_MIND - INFO - 2014-02-27 is finished\n",
"2018-02-25 14:48:46,201 - ALPHA_MIND - INFO - 2014-03-13 partial re-balance: 800\n",
"2018-02-25 14:48:46,588 - ALPHA_MIND - INFO - 2014-03-13 is finished\n",
"2018-02-25 14:48:46,608 - ALPHA_MIND - INFO - 2014-03-27 partial re-balance: 800\n",
"2018-02-25 14:48:46,977 - ALPHA_MIND - INFO - 2014-03-27 is finished\n",
"2018-02-25 14:48:46,997 - ALPHA_MIND - INFO - 2014-04-11 partial re-balance: 800\n",
"2018-02-25 14:48:47,378 - ALPHA_MIND - INFO - 2014-04-11 is finished\n",
"2018-02-25 14:48:47,398 - ALPHA_MIND - INFO - 2014-04-25 partial re-balance: 800\n",
"2018-02-25 14:48:47,767 - ALPHA_MIND - INFO - 2014-04-25 is finished\n",
"2018-02-25 14:48:47,786 - ALPHA_MIND - INFO - 2014-05-13 partial re-balance: 800\n",
"2018-02-25 14:48:48,165 - ALPHA_MIND - INFO - 2014-05-13 is finished\n",
"2018-02-25 14:48:48,185 - ALPHA_MIND - INFO - 2014-05-27 partial re-balance: 800\n",
"2018-02-25 14:48:48,544 - ALPHA_MIND - INFO - 2014-05-27 is finished\n",
"2018-02-25 14:48:48,563 - ALPHA_MIND - INFO - 2014-06-11 partial re-balance: 800\n",
"2018-02-25 14:48:48,929 - ALPHA_MIND - INFO - 2014-06-11 is finished\n",
"2018-02-25 14:48:48,948 - ALPHA_MIND - INFO - 2014-06-25 partial re-balance: 800\n",
"2018-02-25 14:48:49,327 - ALPHA_MIND - INFO - 2014-06-25 is finished\n",
"2018-02-25 14:48:49,347 - ALPHA_MIND - INFO - 2014-07-09 partial re-balance: 800\n",
"2018-02-25 14:48:49,768 - ALPHA_MIND - INFO - 2014-07-09 is finished\n",
"2018-02-25 14:48:49,788 - ALPHA_MIND - INFO - 2014-07-23 partial re-balance: 800\n",
"2018-02-25 14:48:50,134 - ALPHA_MIND - INFO - 2014-07-23 is finished\n",
"2018-02-25 14:48:50,153 - ALPHA_MIND - INFO - 2014-08-06 partial re-balance: 800\n",
"2018-02-25 14:48:50,558 - ALPHA_MIND - INFO - 2014-08-06 is finished\n",
"2018-02-25 14:48:50,577 - ALPHA_MIND - INFO - 2014-08-20 partial re-balance: 800\n",
"2018-02-25 14:48:51,003 - ALPHA_MIND - INFO - 2014-08-20 is finished\n",
"2018-02-25 14:48:51,023 - ALPHA_MIND - INFO - 2014-09-03 partial re-balance: 800\n",
"2018-02-25 14:48:51,373 - ALPHA_MIND - INFO - 2014-09-03 is finished\n",
"2018-02-25 14:48:51,396 - ALPHA_MIND - INFO - 2014-09-18 partial re-balance: 800\n",
"2018-02-25 14:48:51,845 - ALPHA_MIND - INFO - 2014-09-18 is finished\n",
"2018-02-25 14:48:51,865 - ALPHA_MIND - INFO - 2014-10-09 partial re-balance: 800\n",
"2018-02-25 14:48:52,231 - ALPHA_MIND - INFO - 2014-10-09 is finished\n",
"2018-02-25 14:48:52,250 - ALPHA_MIND - INFO - 2014-10-23 partial re-balance: 800\n",
"2018-02-25 14:48:52,629 - ALPHA_MIND - INFO - 2014-10-23 is finished\n",
"2018-02-25 14:48:52,649 - ALPHA_MIND - INFO - 2014-11-06 partial re-balance: 800\n",
"2018-02-25 14:48:53,026 - ALPHA_MIND - INFO - 2014-11-06 is finished\n",
"2018-02-25 14:48:53,045 - ALPHA_MIND - INFO - 2014-11-20 partial re-balance: 800\n",
"2018-02-25 14:48:53,397 - ALPHA_MIND - INFO - 2014-11-20 is finished\n",
"2018-02-25 14:48:53,416 - ALPHA_MIND - INFO - 2014-12-04 partial re-balance: 800\n",
"2018-02-25 14:48:53,776 - ALPHA_MIND - INFO - 2014-12-04 is finished\n",
"2018-02-25 14:48:53,797 - ALPHA_MIND - INFO - 2014-12-18 partial re-balance: 800\n",
"2018-02-25 14:48:54,190 - ALPHA_MIND - INFO - 2014-12-18 is finished\n",
"2018-02-25 14:48:54,210 - ALPHA_MIND - INFO - 2015-01-05 partial re-balance: 800\n",
"2018-02-25 14:48:54,580 - ALPHA_MIND - INFO - 2015-01-05 is finished\n",
"2018-02-25 14:48:54,599 - ALPHA_MIND - INFO - 2015-01-19 partial re-balance: 800\n",
"2018-02-25 14:48:55,003 - ALPHA_MIND - INFO - 2015-01-19 is finished\n",
"2018-02-25 14:48:55,023 - ALPHA_MIND - INFO - 2015-02-02 partial re-balance: 800\n",
"2018-02-25 14:48:55,398 - ALPHA_MIND - INFO - 2015-02-02 is finished\n",
"2018-02-25 14:48:55,420 - ALPHA_MIND - INFO - 2015-02-16 partial re-balance: 800\n",
"2018-02-25 14:48:55,784 - ALPHA_MIND - INFO - 2015-02-16 is finished\n",
"2018-02-25 14:48:55,804 - ALPHA_MIND - INFO - 2015-03-09 partial re-balance: 800\n",
"2018-02-25 14:48:56,163 - ALPHA_MIND - INFO - 2015-03-09 is finished\n",
"2018-02-25 14:48:56,183 - ALPHA_MIND - INFO - 2015-03-23 partial re-balance: 800\n",
"2018-02-25 14:48:56,556 - ALPHA_MIND - INFO - 2015-03-23 is finished\n",
"2018-02-25 14:48:56,575 - ALPHA_MIND - INFO - 2015-04-07 partial re-balance: 800\n",
"2018-02-25 14:48:57,087 - ALPHA_MIND - INFO - 2015-04-07 is finished\n",
"2018-02-25 14:48:57,126 - ALPHA_MIND - INFO - 2015-04-21 partial re-balance: 800\n",
"2018-02-25 14:48:57,545 - ALPHA_MIND - INFO - 2015-04-21 is finished\n",
"2018-02-25 14:48:57,564 - ALPHA_MIND - INFO - 2015-05-06 partial re-balance: 800\n",
"2018-02-25 14:48:57,935 - ALPHA_MIND - INFO - 2015-05-06 is finished\n",
"2018-02-25 14:48:57,955 - ALPHA_MIND - INFO - 2015-05-20 partial re-balance: 798\n",
"2018-02-25 14:48:58,319 - ALPHA_MIND - INFO - 2015-05-20 is finished\n",
"2018-02-25 14:48:58,338 - ALPHA_MIND - INFO - 2015-06-03 partial re-balance: 800\n",
"2018-02-25 14:48:58,737 - ALPHA_MIND - INFO - 2015-06-03 is finished\n",
"2018-02-25 14:48:58,740 - ALPHA_MIND - INFO - 2015-06-17 partial re-balance: 800\n",
"2018-02-25 14:48:59,145 - ALPHA_MIND - INFO - 2015-06-17 is finished\n",
"2018-02-25 14:48:59,164 - ALPHA_MIND - INFO - 2015-07-02 partial re-balance: 800\n",
"2018-02-25 14:48:59,552 - ALPHA_MIND - INFO - 2015-07-02 is finished\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2018-02-25 14:48:59,572 - ALPHA_MIND - INFO - 2015-07-16 partial re-balance: 800\n",
"2018-02-25 14:48:59,943 - ALPHA_MIND - INFO - 2015-07-16 is finished\n",
"2018-02-25 14:48:59,962 - ALPHA_MIND - INFO - 2015-07-30 partial re-balance: 800\n",
"2018-02-25 14:49:00,355 - ALPHA_MIND - INFO - 2015-07-30 is finished\n",
"2018-02-25 14:49:00,374 - ALPHA_MIND - INFO - 2015-08-13 partial re-balance: 800\n",
"2018-02-25 14:49:00,759 - ALPHA_MIND - INFO - 2015-08-13 is finished\n",
"2018-02-25 14:49:00,779 - ALPHA_MIND - INFO - 2015-08-27 partial re-balance: 800\n",
"2018-02-25 14:49:01,163 - ALPHA_MIND - INFO - 2015-08-27 is finished\n",
"2018-02-25 14:49:01,182 - ALPHA_MIND - INFO - 2015-09-14 partial re-balance: 800\n",
"2018-02-25 14:49:01,585 - ALPHA_MIND - INFO - 2015-09-14 is finished\n",
"2018-02-25 14:49:01,605 - ALPHA_MIND - INFO - 2015-09-28 partial re-balance: 800\n",
"2018-02-25 14:49:01,981 - ALPHA_MIND - INFO - 2015-09-28 is finished\n",
"2018-02-25 14:49:02,000 - ALPHA_MIND - INFO - 2015-10-19 partial re-balance: 800\n",
"2018-02-25 14:49:02,374 - ALPHA_MIND - INFO - 2015-10-19 is finished\n",
"2018-02-25 14:49:02,396 - ALPHA_MIND - INFO - 2015-11-02 partial re-balance: 800\n",
"2018-02-25 14:49:02,846 - ALPHA_MIND - INFO - 2015-11-02 is finished\n",
"2018-02-25 14:49:02,865 - ALPHA_MIND - INFO - 2015-11-16 partial re-balance: 800\n",
"2018-02-25 14:49:03,274 - ALPHA_MIND - INFO - 2015-11-16 is finished\n",
"2018-02-25 14:49:03,294 - ALPHA_MIND - INFO - 2015-11-30 partial re-balance: 800\n",
"2018-02-25 14:49:03,677 - ALPHA_MIND - INFO - 2015-11-30 is finished\n",
"2018-02-25 14:49:03,696 - ALPHA_MIND - INFO - 2015-12-14 partial re-balance: 800\n",
"2018-02-25 14:49:04,054 - ALPHA_MIND - INFO - 2015-12-14 is finished\n",
"2018-02-25 14:49:04,073 - ALPHA_MIND - INFO - 2015-12-28 partial re-balance: 800\n",
"2018-02-25 14:49:04,441 - ALPHA_MIND - INFO - 2015-12-28 is finished\n",
"2018-02-25 14:49:04,461 - ALPHA_MIND - INFO - 2016-01-12 partial re-balance: 800\n",
"2018-02-25 14:49:04,837 - ALPHA_MIND - INFO - 2016-01-12 is finished\n",
"2018-02-25 14:49:04,855 - ALPHA_MIND - INFO - 2016-01-26 partial re-balance: 800\n",
"2018-02-25 14:49:05,287 - ALPHA_MIND - INFO - 2016-01-26 is finished\n",
"2018-02-25 14:49:05,308 - ALPHA_MIND - INFO - 2016-02-16 partial re-balance: 800\n",
"2018-02-25 14:49:05,712 - ALPHA_MIND - INFO - 2016-02-16 is finished\n",
"2018-02-25 14:49:05,731 - ALPHA_MIND - INFO - 2016-03-01 partial re-balance: 800\n",
"2018-02-25 14:49:06,110 - ALPHA_MIND - INFO - 2016-03-01 is finished\n",
"2018-02-25 14:49:06,131 - ALPHA_MIND - INFO - 2016-03-15 partial re-balance: 800\n",
"2018-02-25 14:49:06,505 - ALPHA_MIND - INFO - 2016-03-15 is finished\n",
"2018-02-25 14:49:06,526 - ALPHA_MIND - INFO - 2016-03-29 partial re-balance: 800\n",
"2018-02-25 14:49:06,889 - ALPHA_MIND - INFO - 2016-03-29 is finished\n",
"2018-02-25 14:49:06,909 - ALPHA_MIND - INFO - 2016-04-13 partial re-balance: 800\n",
"2018-02-25 14:49:07,285 - ALPHA_MIND - INFO - 2016-04-13 is finished\n",
"2018-02-25 14:49:07,304 - ALPHA_MIND - INFO - 2016-04-27 partial re-balance: 800\n",
"2018-02-25 14:49:07,687 - ALPHA_MIND - INFO - 2016-04-27 is finished\n",
"2018-02-25 14:49:07,707 - ALPHA_MIND - INFO - 2016-05-12 partial re-balance: 800\n",
"2018-02-25 14:49:08,228 - ALPHA_MIND - INFO - 2016-05-12 is finished\n",
"2018-02-25 14:49:08,249 - ALPHA_MIND - INFO - 2016-05-26 partial re-balance: 800\n",
"2018-02-25 14:49:08,628 - ALPHA_MIND - INFO - 2016-05-26 is finished\n",
"2018-02-25 14:49:08,647 - ALPHA_MIND - INFO - 2016-06-13 partial re-balance: 800\n",
"2018-02-25 14:49:09,019 - ALPHA_MIND - INFO - 2016-06-13 is finished\n",
"2018-02-25 14:49:09,038 - ALPHA_MIND - INFO - 2016-06-27 partial re-balance: 800\n",
"2018-02-25 14:49:09,409 - ALPHA_MIND - INFO - 2016-06-27 is finished\n",
"2018-02-25 14:49:09,428 - ALPHA_MIND - INFO - 2016-07-11 partial re-balance: 800\n",
"2018-02-25 14:49:09,791 - ALPHA_MIND - INFO - 2016-07-11 is finished\n",
"2018-02-25 14:49:09,811 - ALPHA_MIND - INFO - 2016-07-25 partial re-balance: 800\n",
"2018-02-25 14:49:10,184 - ALPHA_MIND - INFO - 2016-07-25 is finished\n",
"2018-02-25 14:49:10,204 - ALPHA_MIND - INFO - 2016-08-08 partial re-balance: 800\n",
"2018-02-25 14:49:10,574 - ALPHA_MIND - INFO - 2016-08-08 is finished\n",
"2018-02-25 14:49:10,594 - ALPHA_MIND - INFO - 2016-08-22 partial re-balance: 800\n",
"2018-02-25 14:49:10,960 - ALPHA_MIND - INFO - 2016-08-22 is finished\n",
"2018-02-25 14:49:10,980 - ALPHA_MIND - INFO - 2016-09-05 partial re-balance: 800\n",
"2018-02-25 14:49:11,359 - ALPHA_MIND - INFO - 2016-09-05 is finished\n",
"2018-02-25 14:49:11,379 - ALPHA_MIND - INFO - 2016-09-21 partial re-balance: 800\n",
"2018-02-25 14:49:11,774 - ALPHA_MIND - INFO - 2016-09-21 is finished\n",
"2018-02-25 14:49:11,795 - ALPHA_MIND - INFO - 2016-10-12 partial re-balance: 800\n",
"2018-02-25 14:49:12,159 - ALPHA_MIND - INFO - 2016-10-12 is finished\n",
"2018-02-25 14:49:12,179 - ALPHA_MIND - INFO - 2016-10-26 partial re-balance: 800\n",
"2018-02-25 14:49:12,554 - ALPHA_MIND - INFO - 2016-10-26 is finished\n",
"2018-02-25 14:49:12,574 - ALPHA_MIND - INFO - 2016-11-09 partial re-balance: 800\n",
"2018-02-25 14:49:12,951 - ALPHA_MIND - INFO - 2016-11-09 is finished\n",
"2018-02-25 14:49:12,971 - ALPHA_MIND - INFO - 2016-11-23 partial re-balance: 800\n",
"2018-02-25 14:49:13,356 - ALPHA_MIND - INFO - 2016-11-23 is finished\n",
"2018-02-25 14:49:13,375 - ALPHA_MIND - INFO - 2016-12-07 partial re-balance: 800\n",
"2018-02-25 14:49:13,823 - ALPHA_MIND - INFO - 2016-12-07 is finished\n",
"2018-02-25 14:49:13,846 - ALPHA_MIND - INFO - 2016-12-21 partial re-balance: 800\n",
"2018-02-25 14:49:14,223 - ALPHA_MIND - INFO - 2016-12-21 is finished\n",
"2018-02-25 14:49:14,243 - ALPHA_MIND - INFO - 2017-01-05 partial re-balance: 800\n",
"2018-02-25 14:49:14,623 - ALPHA_MIND - INFO - 2017-01-05 is finished\n",
"2018-02-25 14:49:14,642 - ALPHA_MIND - INFO - 2017-01-19 partial re-balance: 799\n",
"2018-02-25 14:49:15,028 - ALPHA_MIND - INFO - 2017-01-19 is finished\n",
"2018-02-25 14:49:15,049 - ALPHA_MIND - INFO - 2017-02-09 partial re-balance: 800\n",
"2018-02-25 14:49:15,434 - ALPHA_MIND - INFO - 2017-02-09 is finished\n",
"2018-02-25 14:49:15,456 - ALPHA_MIND - INFO - 2017-02-23 partial re-balance: 799\n",
"2018-02-25 14:49:15,836 - ALPHA_MIND - INFO - 2017-02-23 is finished\n",
"2018-02-25 14:49:15,856 - ALPHA_MIND - INFO - 2017-03-09 partial re-balance: 800\n",
"2018-02-25 14:49:16,248 - ALPHA_MIND - INFO - 2017-03-09 is finished\n",
"2018-02-25 14:49:16,268 - ALPHA_MIND - INFO - 2017-03-23 partial re-balance: 800\n",
"2018-02-25 14:49:16,680 - ALPHA_MIND - INFO - 2017-03-23 is finished\n",
"2018-02-25 14:49:16,686 - ALPHA_MIND - INFO - 2017-04-10 partial re-balance: 800\n",
"2018-02-25 14:49:17,085 - ALPHA_MIND - INFO - 2017-04-10 is finished\n",
"2018-02-25 14:49:17,104 - ALPHA_MIND - INFO - 2017-04-24 partial re-balance: 800\n",
"2018-02-25 14:49:17,488 - ALPHA_MIND - INFO - 2017-04-24 is finished\n",
"2018-02-25 14:49:17,507 - ALPHA_MIND - INFO - 2017-05-09 partial re-balance: 800\n",
"2018-02-25 14:49:17,901 - ALPHA_MIND - INFO - 2017-05-09 is finished\n",
"2018-02-25 14:49:17,922 - ALPHA_MIND - INFO - 2017-05-23 partial re-balance: 800\n",
"2018-02-25 14:49:18,312 - ALPHA_MIND - INFO - 2017-05-23 is finished\n",
"2018-02-25 14:49:18,331 - ALPHA_MIND - INFO - 2017-06-08 partial re-balance: 800\n",
"2018-02-25 14:49:18,752 - ALPHA_MIND - INFO - 2017-06-08 is finished\n",
"2018-02-25 14:49:18,775 - ALPHA_MIND - INFO - 2017-06-22 partial re-balance: 800\n",
"2018-02-25 14:49:19,277 - ALPHA_MIND - INFO - 2017-06-22 is finished\n",
"2018-02-25 14:49:19,299 - ALPHA_MIND - INFO - 2017-07-06 partial re-balance: 800\n",
"2018-02-25 14:49:19,688 - ALPHA_MIND - INFO - 2017-07-06 is finished\n",
"2018-02-25 14:49:19,706 - ALPHA_MIND - INFO - 2017-07-20 partial re-balance: 800\n",
"2018-02-25 14:49:20,103 - ALPHA_MIND - INFO - 2017-07-20 is finished\n",
"2018-02-25 14:49:20,125 - ALPHA_MIND - INFO - 2017-08-03 partial re-balance: 800\n",
"2018-02-25 14:49:20,520 - ALPHA_MIND - INFO - 2017-08-03 is finished\n",
"2018-02-25 14:49:20,543 - ALPHA_MIND - INFO - 2017-08-17 partial re-balance: 800\n",
"2018-02-25 14:49:20,927 - ALPHA_MIND - INFO - 2017-08-17 is finished\n",
"2018-02-25 14:49:20,942 - ALPHA_MIND - INFO - 2017-08-31 partial re-balance: 800\n",
"2018-02-25 14:49:21,358 - ALPHA_MIND - INFO - 2017-08-31 is finished\n",
"2018-02-25 14:49:21,367 - ALPHA_MIND - INFO - 2017-09-14 partial re-balance: 800\n",
"2018-02-25 14:49:21,775 - ALPHA_MIND - INFO - 2017-09-14 is finished\n",
"2018-02-25 14:49:21,806 - ALPHA_MIND - INFO - 2017-09-28 partial re-balance: 800\n",
"2018-02-25 14:49:22,193 - ALPHA_MIND - INFO - 2017-09-28 is finished\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2018-02-25 14:49:22,212 - ALPHA_MIND - INFO - 2017-10-19 partial re-balance: 800\n",
"2018-02-25 14:49:22,594 - ALPHA_MIND - INFO - 2017-10-19 is finished\n",
"2018-02-25 14:49:22,614 - ALPHA_MIND - INFO - 2017-11-02 partial re-balance: 800\n",
"2018-02-25 14:49:23,003 - ALPHA_MIND - INFO - 2017-11-02 is finished\n",
"2018-02-25 14:49:23,023 - ALPHA_MIND - INFO - 2017-11-16 partial re-balance: 800\n",
"2018-02-25 14:49:23,442 - ALPHA_MIND - INFO - 2017-11-16 is finished\n",
"2018-02-25 14:49:23,462 - ALPHA_MIND - INFO - 2017-11-30 partial re-balance: 800\n",
"2018-02-25 14:49:23,854 - ALPHA_MIND - INFO - 2017-11-30 is finished\n",
"2018-02-25 14:49:23,875 - ALPHA_MIND - INFO - 2017-12-14 partial re-balance: 800\n",
"2018-02-25 14:49:24,276 - ALPHA_MIND - INFO - 2017-12-14 is finished\n",
"2018-02-25 14:49:24,281 - ALPHA_MIND - INFO - 2017-12-28 partial re-balance: 800\n",
"2018-02-25 14:49:24,679 - ALPHA_MIND - INFO - 2017-12-28 is finished\n",
"2018-02-25 14:49:24,711 - ALPHA_MIND - INFO - 2018-01-12 partial re-balance: 800\n",
"2018-02-25 14:49:25,189 - ALPHA_MIND - INFO - 2018-01-12 is finished\n",
"2018-02-25 14:49:25,212 - ALPHA_MIND - INFO - 2018-01-26 partial re-balance: 800\n",
"2018-02-25 14:49:25,607 - ALPHA_MIND - INFO - 2018-01-26 is finished\n",
"2018-02-25 14:49:25,665 - ALPHA_MIND - INFO - 2018-02-09 partial re-balance: 0\n"
]
},
{
"ename": "IndexError",
"evalue": "Out of bounds on buffer access (axis 0)",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mIndexError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-5-47dc0fb89c16>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m 79\u001b[0m \u001b[0mcurrent_position\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcurrent_position\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 80\u001b[0m \u001b[0mlbound\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mlbound\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 81\u001b[1;33m ubound=ubound)\n\u001b[0m\u001b[0;32m 82\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 83\u001b[0m \u001b[0malpha_logger\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0minfo\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'{0} full re-balance: {1}'\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mref_date\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mer\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32md:\\ProgramData\\IntelPython3_2018\\lib\\site-packages\\alpha_mind-0.1.1-py3.6-win-amd64.egg\\alphamind\\analysis\\factoranalysis.py\u001b[0m in \u001b[0;36mer_portfolio_analysis\u001b[1;34m(er, industry, dx_return, constraints, detail_analysis, benchmark, is_tradable, method, **kwargs)\u001b[0m\n\u001b[0;32m 103\u001b[0m \u001b[0mrisk_target\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mrisk_lbound\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrisk_ubound\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 104\u001b[0m \u001b[0mturn_over_target\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mturn_over_target\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 105\u001b[1;33m current_position=current_position)\n\u001b[0m\u001b[0;32m 106\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mstatus\u001b[0m \u001b[1;33m!=\u001b[0m \u001b[1;34m'optimal'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 107\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'linear programming optimizer in status: {0}'\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mstatus\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32md:\\ProgramData\\IntelPython3_2018\\lib\\site-packages\\alpha_mind-0.1.1-py3.6-win-amd64.egg\\alphamind\\portfolio\\linearbuilder.py\u001b[0m in \u001b[0;36mlinear_build\u001b[1;34m(er, lbound, ubound, risk_constraints, risk_target, turn_over_target, current_position)\u001b[0m\n\u001b[0;32m 78\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 79\u001b[0m \u001b[0mcons_matrix\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mconcatenate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mrisk_constraints\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrisk_lbound\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrisk_ubound\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 80\u001b[1;33m \u001b[0mopt\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mLPOptimizer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcons_matrix\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlbound\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mubound\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m-\u001b[0m\u001b[0mer\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 81\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 82\u001b[0m \u001b[0mstatus\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mopt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstatus\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32malphamind\\cython\\optimizers.pyx\u001b[0m in \u001b[0;36malphamind.cython.optimizers.LPOptimizer.__cinit__\u001b[1;34m()\u001b[0m\n",
"\u001b[1;31mIndexError\u001b[0m: Out of bounds on buffer access (axis 0)"
]
}
],
"source": [
"# rebalance\n",
"\n",
"industry_names = industry_list(industry_name, industry_level)\n",
"constraint_risk = ['SIZE', 'SIZENL', 'BETA'] + industry_names\n",
"total_risk_names = constraint_risk + ['benchmark', 'total']\n",
"\n",
"b_type = []\n",
"l_val = []\n",
"u_val = []\n",
"\n",
"previous_pos = pd.DataFrame()\n",
"rets = []\n",
"turn_overs = []\n",
"leverags = []\n",
"\n",
"for name in total_risk_names:\n",
" if name == 'benchmark':\n",
" b_type.append(BoundaryType.RELATIVE)\n",
" l_val.append(benchmark_total_lower)\n",
" u_val.append(benchmark_total_upper)\n",
" else:\n",
" b_type.append(BoundaryType.ABSOLUTE)\n",
" l_val.append(0.0)\n",
" u_val.append(0.0)\n",
"\n",
"bounds = create_box_bounds(total_risk_names, b_type, l_val, u_val)\n",
"\n",
"industry_total = engine.fetch_industry_matrix_range(universe, dates=ref_dates, category=industry_name, level=industry_level)\n",
"benchmark_total = engine.fetch_benchmark_range(dates=ref_dates, benchmark=benchmark_code)\n",
"risk_total = engine.fetch_risk_model_range(universe, dates=ref_dates)[1]\n",
"\n",
"for i, ref_date in enumerate(ref_dates):\n",
" ref_date = ref_date.strftime('%Y-%m-%d')\n",
" industry_matrix = industry_total[industry_total.trade_date == ref_date]\n",
" benchmark_w = benchmark_total[benchmark_total.trade_date == ref_date]\n",
" risk_matrix = risk_total[risk_total.trade_date == ref_date]\n",
" \n",
" res = pd.merge(industry_matrix, benchmark_w, on=['code'], how='left').fillna(0.)\n",
" res = pd.merge(res, risk_matrix, on=['code'])\n",
" res = res.dropna()\n",
" codes = res.code.values.tolist()\n",
" \n",
" benchmark_w = res.weight.values\n",
" is_in_benchmark = (benchmark_w > 0.).astype(float).reshape((-1, 1))\n",
" \n",
" total_risk_exp = np.concatenate([res[constraint_risk].values.astype(float),\n",
" is_in_benchmark,\n",
" np.ones_like(is_in_benchmark)],\n",
" axis=1)\n",
" total_risk_exp = pd.DataFrame(total_risk_exp, columns=total_risk_names)\n",
" constraints = LinearConstraints(bounds, total_risk_exp, benchmark_w)\n",
" \n",
" lbound = np.maximum(0., benchmark_w - weight_gap) # np.zeros(len(total_data))\n",
" ubound = weight_gap + benchmark_w\n",
" \n",
" if previous_pos.empty:\n",
" current_position = None\n",
" turn_over_target = None\n",
" else:\n",
" previous_pos.set_index('code', inplace=True)\n",
" remained_pos = previous_pos.loc[codes]\n",
"\n",
" remained_pos.fillna(0., inplace=True)\n",
" turn_over_target = turn_over_target_base\n",
" current_position = remained_pos.weight.values\n",
" \n",
" er = predicts[i].loc[codes].values\n",
" \n",
" try:\n",
" alpha_logger.info('{0} partial re-balance: {1}'.format(ref_date, len(er)))\n",
" target_pos, _ = er_portfolio_analysis(er,\n",
" industry_matrix.industry_name.values,\n",
" None,\n",
" constraints,\n",
" False,\n",
" benchmark_w,\n",
" method='risk_neutral',\n",
" turn_over_target=turn_over_target,\n",
" current_position=current_position,\n",
" lbound=lbound,\n",
" ubound=ubound)\n",
" except ValueError:\n",
" alpha_logger.info('{0} full re-balance: {1}'.format(ref_date, len(er)))\n",
" target_pos, _ = er_portfolio_analysis(er,\n",
" industry_matrix.industry_name.values,\n",
" None,\n",
" constraints,\n",
" False,\n",
" benchmark_w,\n",
" method='risk_neutral',\n",
" lbound=lbound,\n",
" ubound=ubound)\n",
" \n",
" target_pos['code'] = codes\n",
" turn_over, executed_pos = executor.execute(target_pos=target_pos)\n",
"\n",
" executed_codes = executed_pos.code.tolist()\n",
" dx_returns = engine.fetch_dx_return(ref_date, executed_codes, horizon=horizon, offset=1)\n",
" result = pd.merge(executed_pos, dx_returns, on=['code'])\n",
"\n",
" leverage = result.weight.abs().sum()\n",
"\n",
" ret = result.weight.values @ (np.exp(result.dx.values) - 1.)\n",
" rets.append(np.log(1. + ret))\n",
" executor.set_current(executed_pos)\n",
" turn_overs.append(turn_over)\n",
" leverags.append(leverage)\n",
"\n",
" previous_pos = executed_pos\n",
" alpha_logger.info('{0} is finished'.format(ref_date))"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"ename": "ValueError",
"evalue": "Shape of passed values is (3, 173), indices imply (3, 174)",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32md:\\ProgramData\\IntelPython3_2018\\lib\\site-packages\\pandas\\core\\internals.py\u001b[0m in \u001b[0;36mcreate_block_manager_from_arrays\u001b[1;34m(arrays, names, axes)\u001b[0m\n\u001b[0;32m 4309\u001b[0m \u001b[0mblocks\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mform_blocks\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marrays\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnames\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0maxes\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 4310\u001b[1;33m \u001b[0mmgr\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mBlockManager\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mblocks\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0maxes\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 4311\u001b[0m \u001b[0mmgr\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_consolidate_inplace\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32md:\\ProgramData\\IntelPython3_2018\\lib\\site-packages\\pandas\\core\\internals.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, blocks, axes, do_integrity_check, fastpath)\u001b[0m\n\u001b[0;32m 2794\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mdo_integrity_check\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2795\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_verify_integrity\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2796\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32md:\\ProgramData\\IntelPython3_2018\\lib\\site-packages\\pandas\\core\\internals.py\u001b[0m in \u001b[0;36m_verify_integrity\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 3005\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mblock\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_verify_integrity\u001b[0m \u001b[1;32mand\u001b[0m \u001b[0mblock\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m!=\u001b[0m \u001b[0mmgr_shape\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 3006\u001b[1;33m \u001b[0mconstruction_error\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtot_items\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mblock\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0maxes\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3007\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m!=\u001b[0m \u001b[0mtot_items\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32md:\\ProgramData\\IntelPython3_2018\\lib\\site-packages\\pandas\\core\\internals.py\u001b[0m in \u001b[0;36mconstruction_error\u001b[1;34m(tot_items, block_shape, axes, e)\u001b[0m\n\u001b[0;32m 4279\u001b[0m raise ValueError(\"Shape of passed values is {0}, indices imply {1}\".format(\n\u001b[1;32m-> 4280\u001b[1;33m passed, implied))\n\u001b[0m\u001b[0;32m 4281\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;31mValueError\u001b[0m: Shape of passed values is (3, 173), indices imply (3, 174)",
"\nDuring handling of the above exception, another exception occurred:\n",
"\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-6-b675e9b0fc67>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mret_df\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mDataFrame\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m{\u001b[0m\u001b[1;34m'returns'\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mrets\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'turn_over'\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mturn_overs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'leverage'\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mleverags\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mindex\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mref_dates\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;31m# index return\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m index_return = engine.fetch_dx_return_index_range(benchmark_code, start_date, end_date, horizon=horizon,\n\u001b[0;32m 5\u001b[0m offset=1).set_index('trade_date')\n",
"\u001b[1;32md:\\ProgramData\\IntelPython3_2018\\lib\\site-packages\\pandas\\core\\frame.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, data, index, columns, dtype, copy)\u001b[0m\n\u001b[0;32m 273\u001b[0m dtype=dtype, copy=copy)\n\u001b[0;32m 274\u001b[0m \u001b[1;32melif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdict\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 275\u001b[1;33m \u001b[0mmgr\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_init_dict\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mindex\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcolumns\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mdtype\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 276\u001b[0m \u001b[1;32melif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mma\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mMaskedArray\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 277\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mnumpy\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mma\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmrecords\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0mmrecords\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32md:\\ProgramData\\IntelPython3_2018\\lib\\site-packages\\pandas\\core\\frame.py\u001b[0m in \u001b[0;36m_init_dict\u001b[1;34m(self, data, index, columns, dtype)\u001b[0m\n\u001b[0;32m 409\u001b[0m \u001b[0marrays\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mk\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mkeys\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 410\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 411\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0m_arrays_to_mgr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marrays\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdata_names\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mindex\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcolumns\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mdtype\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 412\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 413\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m_init_ndarray\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvalues\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mindex\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcolumns\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcopy\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mFalse\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32md:\\ProgramData\\IntelPython3_2018\\lib\\site-packages\\pandas\\core\\frame.py\u001b[0m in \u001b[0;36m_arrays_to_mgr\u001b[1;34m(arrays, arr_names, index, columns, dtype)\u001b[0m\n\u001b[0;32m 5504\u001b[0m \u001b[0maxes\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0m_ensure_index\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0m_ensure_index\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mindex\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5505\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 5506\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mcreate_block_manager_from_arrays\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marrays\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0marr_names\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0maxes\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 5507\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5508\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32md:\\ProgramData\\IntelPython3_2018\\lib\\site-packages\\pandas\\core\\internals.py\u001b[0m in \u001b[0;36mcreate_block_manager_from_arrays\u001b[1;34m(arrays, names, axes)\u001b[0m\n\u001b[0;32m 4312\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mmgr\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4313\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mValueError\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 4314\u001b[1;33m \u001b[0mconstruction_error\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marrays\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0marrays\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0maxes\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 4315\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4316\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32md:\\ProgramData\\IntelPython3_2018\\lib\\site-packages\\pandas\\core\\internals.py\u001b[0m in \u001b[0;36mconstruction_error\u001b[1;34m(tot_items, block_shape, axes, e)\u001b[0m\n\u001b[0;32m 4278\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Empty data passed with indices specified.\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4279\u001b[0m raise ValueError(\"Shape of passed values is {0}, indices imply {1}\".format(\n\u001b[1;32m-> 4280\u001b[1;33m passed, implied))\n\u001b[0m\u001b[0;32m 4281\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4282\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;31mValueError\u001b[0m: Shape of passed values is (3, 173), indices imply (3, 174)"
]
}
],
"source": [
"ret_df = pd.DataFrame({'returns': rets, 'turn_over': turn_overs, 'leverage': leverags}, index=ref_dates)\n",
"\n",
"# index return\n",
"index_return = engine.fetch_dx_return_index_range(benchmark_code, start_date, end_date, horizon=horizon,\n",
" offset=1).set_index('trade_date')\n",
"ret_df['index'] = index_return['dx']\n",
"\n",
"ret_df.loc[advanceDateByCalendar('china.sse', ref_dates[-1], freq)] = 0.\n",
"ret_df = ret_df.shift(1)\n",
"ret_df.iloc[0] = 0.\n",
"ret_df['tc_cost'] = ret_df.turn_over * 0.002\n",
"ret_df['returns'] = ret_df['returns'] - ret_df['index'] * ret_df['leverage']\n",
"\n",
"ret_df[['returns', 'tc_cost']].cumsum().plot(figsize=(12, 6),\n",
" title='Fixed freq rebalanced: {0} with benchmark {1}'.format(freq, 905),\n",
" secondary_y='tc_cost')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
}
},
"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