Commit 574f2fd4 authored by Dr.李's avatar Dr.李

update examples

parent 2578387a
......@@ -3,9 +3,7 @@
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
......@@ -21,10 +19,8 @@
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"\"\"\"\n",
......@@ -35,6 +31,8 @@
"end_date = '2018-02-14'\n",
"\n",
"frequency = '10b'\n",
"industry_lower = 1.0\n",
"industry_upper = 1.0\n",
"method = 'risk_neutral'\n",
"neutralize_risk = industry_styles\n",
"industry_name = 'sw_adj'\n",
......@@ -43,22 +41,20 @@
"benchmark_total_upper = 1.0\n",
"horizon = map_freq(frequency)\n",
"weight_gap = 0.01\n",
"benchmark_code = 905\n",
"benchmark_code = 300\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",
"data_source = 'postgres+psycopg2://postgres:we083826@192.168.0.102/alpha'\n",
"data_source = 'postgres+psycopg2://postgres:A12345678!@10.63.6.220/alpha'\n",
"engine = SqlEngine(data_source)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"\"\"\"\n",
......@@ -78,20 +74,22 @@
" b_type.append(BoundaryType.RELATIVE)\n",
" l_val.append(benchmark_total_lower)\n",
" u_val.append(benchmark_total_upper)\n",
" else:\n",
" elif name in {'SIZE', 'SIZENL', 'BETA'}:\n",
" b_type.append(BoundaryType.ABSOLUTE)\n",
" l_val.append(0.0)\n",
" u_val.append(0.0)\n",
" else:\n",
" b_type.append(BoundaryType.RELATIVE)\n",
" l_val.append(industry_lower)\n",
" u_val.append(industry_upper)\n",
"\n",
"bounds = create_box_bounds(total_risk_names, b_type, l_val, u_val)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"\"\"\"\n",
......@@ -106,17 +104,13 @@
" horizon=horizon,\n",
" offset=1)\n",
"\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')"
"return_groups = codes_return.groupby('trade_date')"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": true
},
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"def factor_analysis(engine, factor_name, universe, benchmark_code, positive):\n",
......@@ -124,6 +118,9 @@
" \"\"\"\n",
" Model phase: we need 1 constant linear model and one linear regression model\n",
" \"\"\"\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')\n",
" \n",
" alpha_name = [str(factor_name) + '_' + ('pos' if positive else 'neg')]\n",
" simple_expression = LAST(factor_name) if positive else -LAST(factor_name)\n",
"\n",
......@@ -233,10 +230,8 @@
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"df = engine.fetch_factor_coverage(start_date='2011-01-01',\n",
......@@ -244,22 +239,28 @@
" universe=universe_name[0])\n",
"df = df[df.source != 'risk_exposure']\n",
"df = df.groupby('factor').mean()\n",
"df = df[df.coverage >= 0.98]"
"df = df[df.coverage >= 0.95]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time: 39min 15s\n"
]
}
],
"source": [
"%%time\n",
"\n",
"from dask.distributed import Client\n",
"\n",
"client = Client('192.168.0.102:8786')\n",
"client = Client('10.63.6.13:8786')\n",
"\n",
"tasks = client.map(worker_func_positive, df.index.tolist(), pure=False)\n",
"res1 = client.gather(tasks)\n",
......@@ -281,13 +282,11 @@
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"writer = pd.ExcelWriter(f'{universe_name[0]}.xlsx', engine='xlsxwriter')\n",
"writer = pd.ExcelWriter(f'{universe_name[0]}_{benchmark_code}.xlsx', engine='xlsxwriter')\n",
"factor_df.to_excel(writer, sheet_name='returns')\n",
"ic_df.to_excel(writer, sheet_name='ics')\n",
"writer.close()"
......@@ -296,18 +295,7 @@
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"metadata": {},
"outputs": [],
"source": []
}
......@@ -328,7 +316,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.3"
"version": "3.6.4"
}
},
"nbformat": 4,
......
......@@ -2,10 +2,8 @@
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
......@@ -20,17 +18,17 @@
},
{
"cell_type": "code",
"execution_count": 2,
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Back test parameter settings\n",
"start_date = '2011-01-01'\n",
"start_date = '2010-01-01'\n",
"end_date = '2018-02-14'\n",
"\n",
"freq = '10b'\n",
"industry_lower = 1.\n",
"industry_upper = 1.\n",
"industry_lower = 1.0\n",
"industry_upper = 1.0\n",
"neutralized_risk = industry_styles\n",
"industry_name = 'sw_adj'\n",
"industry_level = 1\n",
......@@ -39,10 +37,10 @@
"benchmark_total_upper = 1.0\n",
"batch = 0\n",
"horizon = map_freq(freq)\n",
"weight_gap = 0.01\n",
"weight_gap = 0.02\n",
"universe = Universe(\"custom\", ['zz800'])\n",
"data_source = 'postgres+psycopg2://postgres:we083826@192.168.0.102/alpha'\n",
"benchmark_code = 905\n",
"data_source = 'postgres+psycopg2://postgres:A12345678!@10.63.6.220/alpha'\n",
"benchmark_code = 300\n",
"\n",
"executor = NaiveExecutor()\n",
"ref_dates = makeSchedule(start_date, end_date, freq, 'china.sse')\n",
......@@ -51,24 +49,19 @@
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"execution_count": null,
"metadata": {},
"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",
" 'f01': LAST('ep_q'),\n",
" 'f02': LAST('val_q'),\n",
" 'f03': LAST('eps_q'),\n",
" 'f04': LAST('cfinc1_q'),\n",
" 'f05': LAST('CHV'),\n",
" 'f06': LAST('CFToAsset'),\n",
" 'f05': LAST('DivP'),\n",
" 'f06': LAST('OperateNetIncome'),\n",
" 'f07': LAST('market_confidence_75d'),\n",
" 'f08': LAST('PB'),\n",
" 'f08': LAST('PBIndu'),\n",
" 'f09': LAST('con_pe_rolling_order'),\n",
" 'f10': LAST('con_pb_rolling_order'),\n",
"}\n",
......@@ -83,6 +76,7 @@
" f08=-0.25,\n",
" f09=-0.25,\n",
" f10=-0.25)\n",
"\n",
"alpha_model = ConstLinearModel(features=alpha_factors, weights=weights)\n",
"\n",
"def train_worker(ref_date):\n",
......@@ -116,24 +110,16 @@
},
{
"cell_type": "code",
"execution_count": 4,
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time: 6min 49s\n"
]
}
],
"outputs": [],
"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",
"client = Client('10.63.6.13: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)"
......@@ -141,395 +127,9 @@
},
{
"cell_type": "code",
"execution_count": 5,
"execution_count": null,
"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)"
]
}
],
"outputs": [],
"source": [
"# rebalance\n",
"\n",
......@@ -551,10 +151,14 @@
" b_type.append(BoundaryType.RELATIVE)\n",
" l_val.append(benchmark_total_lower)\n",
" u_val.append(benchmark_total_upper)\n",
" else:\n",
" elif name in {'SIZE', 'SIZENL', 'BETA'}:\n",
" b_type.append(BoundaryType.ABSOLUTE)\n",
" l_val.append(0.0)\n",
" u_val.append(0.0)\n",
" else:\n",
" b_type.append(BoundaryType.RELATIVE)\n",
" l_val.append(industry_lower)\n",
" u_val.append(industry_upper)\n",
"\n",
"bounds = create_box_bounds(total_risk_names, b_type, l_val, u_val)\n",
"\n",
......@@ -645,33 +249,9 @@
},
{
"cell_type": "code",
"execution_count": 6,
"execution_count": null,
"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)"
]
}
],
"outputs": [],
"source": [
"ret_df = pd.DataFrame({'returns': rets, 'turn_over': turn_overs, 'leverage': leverags}, index=ref_dates)\n",
"\n",
......@@ -694,9 +274,7 @@
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"metadata": {},
"outputs": [],
"source": []
}
......@@ -706,6 +284,18 @@
"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.4"
}
},
"nbformat": 4,
......
{
"cells": [
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import numpy as np\n",
"import pandas as pd\n",
"from matplotlib import pyplot as plt\n",
"from alphamind.api import *\n",
"from PyFin.api import *\n",
"from PyFin.Math.Accumulators.StatefulAccumulators import MovingAverage\n",
"from PyFin.Math.Accumulators.StatefulAccumulators import MovingSharp\n",
"from PyFin.Math.Accumulators.StatefulAccumulators import MovingMaxDrawdown\n",
"\n",
"plt.style.use('ggplot')"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"\"\"\"\n",
"Back test parameter settings\n",
"\"\"\"\n",
"\n",
"start_date = '2010-01-01'\n",
"end_date = '2018-02-14'\n",
"\n",
"freq = '10b'\n",
"industry_lower = 1.0\n",
"industry_upper = 1.0\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",
"universe = Universe(\"custom\", ['zz800'])\n",
"data_source = 'postgres+psycopg2://postgres:A12345678!@10.63.6.220/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": 16,
"metadata": {},
"outputs": [],
"source": [
"\"\"\"\n",
"Factor Model\n",
"\"\"\"\n",
"\n",
"alpha_factors = {\n",
" 'f01': LAST('ep_q'),\n",
" 'f02': LAST('val_q'),\n",
" 'f03': LAST('eps_q'),\n",
" 'f04': LAST('cfinc1_q'),\n",
" 'f05': LAST('DivP'),\n",
" 'f06': LAST('OperateNetIncome'),\n",
" 'f07': LAST('market_confidence_75d'),\n",
" 'f08': LAST('PBIndu'),\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",
"\n",
"alpha_model = ConstLinearModel(features=alpha_factors, weights=weights)\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": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time: 0 ns\n"
]
}
],
"source": [
"%%time\n",
"\n",
"\"\"\"\n",
"Training Phase\n",
"\"\"\"\n",
"\n",
"pass"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time: 1.64 s\n"
]
}
],
"source": [
"%%time\n",
"\n",
"\"\"\"\n",
"Predicting Phase\n",
"\"\"\"\n",
"\n",
"from dask.distributed import Client\n",
"client = Client('10.63.6.13: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": 24,
"metadata": {},
"outputs": [],
"source": [
"\"\"\"\n",
"Shared Data\n",
"\"\"\"\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",
"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",
" elif name in {'SIZE', 'SIZENL', 'BETA'}:\n",
" b_type.append(BoundaryType.ABSOLUTE)\n",
" l_val.append(0.0)\n",
" u_val.append(0.0)\n",
" else:\n",
" b_type.append(BoundaryType.RELATIVE)\n",
" l_val.append(industry_lower)\n",
" u_val.append(industry_upper)\n",
" \n",
"bounds = create_box_bounds(total_risk_names, b_type, l_val, u_val)\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",
"index_return = engine.fetch_dx_return_index_range(benchmark_code, start_date, end_date, horizon=horizon, offset=1).set_index('trade_date')"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [],
"source": [
"# rebalance\n",
"\n",
"def create_scenario(weight_gap):\n",
"\n",
" previous_pos = pd.DataFrame()\n",
" rets = []\n",
" turn_overs = []\n",
" leverags = []\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",
" 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",
" 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",
" \n",
" ret_df = pd.DataFrame({'returns': rets, 'turn_over': turn_overs, 'leverage': leverags}, index=ref_dates)\n",
"\n",
" # index return\n",
" \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['ret_after_tc'] = ret_df['returns'] - ret_df['index'] * ret_df['leverage']\n",
" return ret_df"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [],
"source": [
"def create_report(ret_df, windows):\n",
" sharp_calc = MovingSharp(windows)\n",
" drawdown_calc = MovingMaxDrawdown(windows)\n",
" max_drawdown_calc = MovingMaxDrawdown(len(ret_df))\n",
"\n",
" res_df = pd.DataFrame(columns=['daily_return', 'cum_ret', 'sharp', 'drawdown', 'max_drawn', 'leverage'])\n",
" total_returns = 0.\n",
"\n",
" for i, ret in enumerate(ret_df['ret_after_tc']):\n",
" date = ret_df.index[i]\n",
" total_returns += ret\n",
" sharp_calc.push({'ret': ret, 'riskFree': 0.})\n",
" drawdown_calc.push({'ret': ret})\n",
" max_drawdown_calc.push({'ret': ret})\n",
"\n",
" res_df.loc[date, 'daily_return'] = ret\n",
" res_df.loc[date, 'cum_ret'] = total_returns\n",
" res_df.loc[date, 'drawdown'] = drawdown_calc.result()[0]\n",
" res_df.loc[date, 'max_drawn'] = max_drawdown_calc.result()[0]\n",
" res_df.loc[date, 'leverage'] = ret_df.loc[date, 'leverage']\n",
"\n",
" if i < 5:\n",
" res_df.loc[date, 'sharp'] = 0.\n",
" else:\n",
" res_df.loc[date, 'sharp'] = sharp_calc.result() * np.sqrt(windows)\n",
" return res_df"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:39: FutureWarning: \n",
"Passing list-likes to .loc or [] with any missing label will raise\n",
"KeyError in the future, you can use .reindex() as an alternative.\n",
"\n",
"See the documentation here:\n",
"http://pandas.pydata.org/pandas-docs/stable/indexing.html#deprecate-loc-reindex-listlike\n",
"distributed.comm.tcp - WARNING - Closing dangling stream in <TCP local=tcp://10.63.6.149:51939 remote=tcp://10.63.6.13:8786>\n",
"tornado.application - ERROR - Exception in callback None\n",
"Traceback (most recent call last):\n",
" File \"d:\\ProgramData\\Anaconda3\\lib\\site-packages\\tornado\\ioloop.py\", line 887, in start\n",
" fd_obj, handler_func = self._handlers[fd]\n",
"KeyError: 2760\n",
"distributed.comm.tcp - WARNING - Closing dangling stream in <TCP local=tcp://10.63.6.149:51942 remote=tcp://10.63.6.13:8786>\n",
"tornado.application - ERROR - Exception in callback None\n",
"Traceback (most recent call last):\n",
" File \"d:\\ProgramData\\Anaconda3\\lib\\site-packages\\tornado\\ioloop.py\", line 887, in start\n",
" fd_obj, handler_func = self._handlers[fd]\n",
"KeyError: 2976\n",
"2018-02-26 14:55:37,889 - ALPHA_MIND - INFO - 0.005 finished\n",
"2018-02-26 14:55:46,453 - ALPHA_MIND - INFO - 0.01 finished\n",
"2018-02-26 14:55:54,926 - ALPHA_MIND - INFO - 0.015 finished\n",
"2018-02-26 14:56:03,360 - ALPHA_MIND - INFO - 0.02 finished\n"
]
}
],
"source": [
"weight_gaps = [0.005, 0.010, 0.015, 0.020]\n",
"\n",
"with pd.ExcelWriter(f'{universe.base_universe[0]}_{benchmark_code}_perf.xlsx', engine='xlsxwriter') as writer:\n",
" for i, weight_gap in enumerate(weight_gaps):\n",
" ret_df = create_scenario(weight_gap)\n",
" res_df = create_report(ret_df, 25)\n",
" res_df.to_excel(writer, sheet_name=f'{i}')\n",
" alpha_logger.info(f\"{weight_gap} finished\")"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>daily_return</th>\n",
" <th>cum_ret</th>\n",
" <th>sharp</th>\n",
" <th>drawdown</th>\n",
" <th>max_drawn</th>\n",
" <th>leverage</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2017-01-03</th>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.00000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-01-17</th>\n",
" <td>0.009570</td>\n",
" <td>0.009570</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>1.00003</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-02-07</th>\n",
" <td>0.006618</td>\n",
" <td>0.016188</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>1.00003</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-02-21</th>\n",
" <td>0.006476</td>\n",
" <td>0.022664</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.99996</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-03-07</th>\n",
" <td>-0.003501</td>\n",
" <td>0.019164</td>\n",
" <td>0.000000</td>\n",
" <td>-0.003501</td>\n",
" <td>-0.003501</td>\n",
" <td>0.99798</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-03-21</th>\n",
" <td>0.010948</td>\n",
" <td>0.030112</td>\n",
" <td>4.459355</td>\n",
" <td>-0.003501</td>\n",
" <td>-0.003501</td>\n",
" <td>1.00003</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-04-06</th>\n",
" <td>0.000069</td>\n",
" <td>0.030180</td>\n",
" <td>3.943255</td>\n",
" <td>-0.003501</td>\n",
" <td>-0.003501</td>\n",
" <td>1.00003</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-04-20</th>\n",
" <td>0.006004</td>\n",
" <td>0.036185</td>\n",
" <td>4.437318</td>\n",
" <td>-0.003501</td>\n",
" <td>-0.003501</td>\n",
" <td>1.00004</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-05-05</th>\n",
" <td>0.003156</td>\n",
" <td>0.039341</td>\n",
" <td>4.563640</td>\n",
" <td>-0.003501</td>\n",
" <td>-0.003501</td>\n",
" <td>1.00004</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-05-19</th>\n",
" <td>0.004445</td>\n",
" <td>0.043786</td>\n",
" <td>4.848561</td>\n",
" <td>-0.003501</td>\n",
" <td>-0.003501</td>\n",
" <td>0.99990</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-06-06</th>\n",
" <td>0.002903</td>\n",
" <td>0.046689</td>\n",
" <td>4.927716</td>\n",
" <td>-0.003501</td>\n",
" <td>-0.003501</td>\n",
" <td>0.99990</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-06-20</th>\n",
" <td>0.012076</td>\n",
" <td>0.058764</td>\n",
" <td>5.223568</td>\n",
" <td>-0.003501</td>\n",
" <td>-0.003501</td>\n",
" <td>1.00004</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-07-04</th>\n",
" <td>0.012828</td>\n",
" <td>0.071592</td>\n",
" <td>5.509360</td>\n",
" <td>-0.003501</td>\n",
" <td>-0.003501</td>\n",
" <td>1.00004</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-07-18</th>\n",
" <td>0.017488</td>\n",
" <td>0.089081</td>\n",
" <td>5.512227</td>\n",
" <td>-0.003501</td>\n",
" <td>-0.003501</td>\n",
" <td>0.99999</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-08-01</th>\n",
" <td>0.006254</td>\n",
" <td>0.095335</td>\n",
" <td>5.713735</td>\n",
" <td>-0.003501</td>\n",
" <td>-0.003501</td>\n",
" <td>0.99999</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-08-15</th>\n",
" <td>-0.008883</td>\n",
" <td>0.086452</td>\n",
" <td>4.101602</td>\n",
" <td>-0.008883</td>\n",
" <td>-0.008883</td>\n",
" <td>1.00004</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-08-29</th>\n",
" <td>0.002268</td>\n",
" <td>0.088719</td>\n",
" <td>4.062719</td>\n",
" <td>-0.008883</td>\n",
" <td>-0.008883</td>\n",
" <td>1.00004</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-09-12</th>\n",
" <td>-0.001570</td>\n",
" <td>0.087149</td>\n",
" <td>3.763031</td>\n",
" <td>-0.008883</td>\n",
" <td>-0.008883</td>\n",
" <td>1.00004</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-09-26</th>\n",
" <td>0.001759</td>\n",
" <td>0.088909</td>\n",
" <td>3.718679</td>\n",
" <td>-0.008883</td>\n",
" <td>-0.008883</td>\n",
" <td>0.99997</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-10-17</th>\n",
" <td>-0.008565</td>\n",
" <td>0.080344</td>\n",
" <td>2.952727</td>\n",
" <td>-0.014991</td>\n",
" <td>-0.014991</td>\n",
" <td>0.99997</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-10-31</th>\n",
" <td>-0.001020</td>\n",
" <td>0.079323</td>\n",
" <td>2.810181</td>\n",
" <td>-0.016012</td>\n",
" <td>-0.016012</td>\n",
" <td>1.00002</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-11-14</th>\n",
" <td>0.005116</td>\n",
" <td>0.084439</td>\n",
" <td>2.923189</td>\n",
" <td>-0.016012</td>\n",
" <td>-0.016012</td>\n",
" <td>1.00011</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-11-28</th>\n",
" <td>0.010812</td>\n",
" <td>0.095251</td>\n",
" <td>3.148449</td>\n",
" <td>-0.016012</td>\n",
" <td>-0.016012</td>\n",
" <td>1.00011</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-12-12</th>\n",
" <td>-0.000005</td>\n",
" <td>0.095247</td>\n",
" <td>3.058568</td>\n",
" <td>-0.016012</td>\n",
" <td>-0.016012</td>\n",
" <td>0.99994</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-12-26</th>\n",
" <td>0.006025</td>\n",
" <td>0.101272</td>\n",
" <td>3.182442</td>\n",
" <td>-0.016012</td>\n",
" <td>-0.016012</td>\n",
" <td>0.99996</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-01-10</th>\n",
" <td>0.015487</td>\n",
" <td>0.116759</td>\n",
" <td>3.486052</td>\n",
" <td>-0.016012</td>\n",
" <td>-0.016012</td>\n",
" <td>1.00008</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-01-24</th>\n",
" <td>0.003381</td>\n",
" <td>0.120140</td>\n",
" <td>3.338480</td>\n",
" <td>-0.016012</td>\n",
" <td>-0.016012</td>\n",
" <td>0.99998</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-02-07</th>\n",
" <td>0.005000</td>\n",
" <td>0.125140</td>\n",
" <td>3.296835</td>\n",
" <td>-0.016012</td>\n",
" <td>-0.016012</td>\n",
" <td>0.99993</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-02-28</th>\n",
" <td>-0.006262</td>\n",
" <td>0.118878</td>\n",
" <td>2.779539</td>\n",
" <td>-0.016012</td>\n",
" <td>-0.016012</td>\n",
" <td>0.99994</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" daily_return cum_ret sharp drawdown max_drawn leverage\n",
"2017-01-03 0.000000 0.000000 0.000000 0.000000 0.000000 0.00000\n",
"2017-01-17 0.009570 0.009570 0.000000 0.000000 0.000000 1.00003\n",
"2017-02-07 0.006618 0.016188 0.000000 0.000000 0.000000 1.00003\n",
"2017-02-21 0.006476 0.022664 0.000000 0.000000 0.000000 0.99996\n",
"2017-03-07 -0.003501 0.019164 0.000000 -0.003501 -0.003501 0.99798\n",
"2017-03-21 0.010948 0.030112 4.459355 -0.003501 -0.003501 1.00003\n",
"2017-04-06 0.000069 0.030180 3.943255 -0.003501 -0.003501 1.00003\n",
"2017-04-20 0.006004 0.036185 4.437318 -0.003501 -0.003501 1.00004\n",
"2017-05-05 0.003156 0.039341 4.563640 -0.003501 -0.003501 1.00004\n",
"2017-05-19 0.004445 0.043786 4.848561 -0.003501 -0.003501 0.99990\n",
"2017-06-06 0.002903 0.046689 4.927716 -0.003501 -0.003501 0.99990\n",
"2017-06-20 0.012076 0.058764 5.223568 -0.003501 -0.003501 1.00004\n",
"2017-07-04 0.012828 0.071592 5.509360 -0.003501 -0.003501 1.00004\n",
"2017-07-18 0.017488 0.089081 5.512227 -0.003501 -0.003501 0.99999\n",
"2017-08-01 0.006254 0.095335 5.713735 -0.003501 -0.003501 0.99999\n",
"2017-08-15 -0.008883 0.086452 4.101602 -0.008883 -0.008883 1.00004\n",
"2017-08-29 0.002268 0.088719 4.062719 -0.008883 -0.008883 1.00004\n",
"2017-09-12 -0.001570 0.087149 3.763031 -0.008883 -0.008883 1.00004\n",
"2017-09-26 0.001759 0.088909 3.718679 -0.008883 -0.008883 0.99997\n",
"2017-10-17 -0.008565 0.080344 2.952727 -0.014991 -0.014991 0.99997\n",
"2017-10-31 -0.001020 0.079323 2.810181 -0.016012 -0.016012 1.00002\n",
"2017-11-14 0.005116 0.084439 2.923189 -0.016012 -0.016012 1.00011\n",
"2017-11-28 0.010812 0.095251 3.148449 -0.016012 -0.016012 1.00011\n",
"2017-12-12 -0.000005 0.095247 3.058568 -0.016012 -0.016012 0.99994\n",
"2017-12-26 0.006025 0.101272 3.182442 -0.016012 -0.016012 0.99996\n",
"2018-01-10 0.015487 0.116759 3.486052 -0.016012 -0.016012 1.00008\n",
"2018-01-24 0.003381 0.120140 3.338480 -0.016012 -0.016012 0.99998\n",
"2018-02-07 0.005000 0.125140 3.296835 -0.016012 -0.016012 0.99993\n",
"2018-02-28 -0.006262 0.118878 2.779539 -0.016012 -0.016012 0.99994"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"res_df"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>leverage</th>\n",
" <th>returns</th>\n",
" <th>turn_over</th>\n",
" <th>index</th>\n",
" <th>tc_cost</th>\n",
" <th>ret_after_tc</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2017-01-03</th>\n",
" <td>0.00000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-01-17</th>\n",
" <td>1.00003</td>\n",
" <td>0.000941</td>\n",
" <td>1.096011</td>\n",
" <td>-0.008629</td>\n",
" <td>0.002192</td>\n",
" <td>0.009570</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-02-07</th>\n",
" <td>1.00003</td>\n",
" <td>0.019675</td>\n",
" <td>0.115240</td>\n",
" <td>0.013057</td>\n",
" <td>0.000230</td>\n",
" <td>0.006618</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-02-21</th>\n",
" <td>0.99996</td>\n",
" <td>0.037460</td>\n",
" <td>0.241176</td>\n",
" <td>0.030984</td>\n",
" <td>0.000482</td>\n",
" <td>0.006476</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-03-07</th>\n",
" <td>0.99798</td>\n",
" <td>-0.015306</td>\n",
" <td>0.270496</td>\n",
" <td>-0.011829</td>\n",
" <td>0.000541</td>\n",
" <td>-0.003501</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-03-21</th>\n",
" <td>1.00003</td>\n",
" <td>0.011338</td>\n",
" <td>0.147566</td>\n",
" <td>0.000390</td>\n",
" <td>0.000295</td>\n",
" <td>0.010948</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-04-06</th>\n",
" <td>1.00003</td>\n",
" <td>0.019413</td>\n",
" <td>0.208452</td>\n",
" <td>0.019344</td>\n",
" <td>0.000417</td>\n",
" <td>0.000069</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-04-20</th>\n",
" <td>1.00004</td>\n",
" <td>-0.008491</td>\n",
" <td>0.300000</td>\n",
" <td>-0.014495</td>\n",
" <td>0.000600</td>\n",
" <td>0.006004</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-05-05</th>\n",
" <td>1.00004</td>\n",
" <td>-0.028478</td>\n",
" <td>0.300000</td>\n",
" <td>-0.031634</td>\n",
" <td>0.000600</td>\n",
" <td>0.003156</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-05-19</th>\n",
" <td>0.99990</td>\n",
" <td>0.019939</td>\n",
" <td>0.300000</td>\n",
" <td>0.015496</td>\n",
" <td>0.000600</td>\n",
" <td>0.004445</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-06-06</th>\n",
" <td>0.99990</td>\n",
" <td>0.038234</td>\n",
" <td>0.300000</td>\n",
" <td>0.035334</td>\n",
" <td>0.000600</td>\n",
" <td>0.002903</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-06-20</th>\n",
" <td>1.00004</td>\n",
" <td>0.027264</td>\n",
" <td>0.300000</td>\n",
" <td>0.015188</td>\n",
" <td>0.000600</td>\n",
" <td>0.012076</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-07-04</th>\n",
" <td>1.00004</td>\n",
" <td>0.032644</td>\n",
" <td>0.272883</td>\n",
" <td>0.019815</td>\n",
" <td>0.000546</td>\n",
" <td>0.012828</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-07-18</th>\n",
" <td>0.99999</td>\n",
" <td>0.036460</td>\n",
" <td>0.320000</td>\n",
" <td>0.018972</td>\n",
" <td>0.000640</td>\n",
" <td>0.017488</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-08-01</th>\n",
" <td>0.99999</td>\n",
" <td>0.014548</td>\n",
" <td>0.300000</td>\n",
" <td>0.008294</td>\n",
" <td>0.000600</td>\n",
" <td>0.006254</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-08-15</th>\n",
" <td>1.00004</td>\n",
" <td>-0.024802</td>\n",
" <td>0.300000</td>\n",
" <td>-0.015918</td>\n",
" <td>0.000600</td>\n",
" <td>-0.008883</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-08-29</th>\n",
" <td>1.00004</td>\n",
" <td>0.037523</td>\n",
" <td>0.300000</td>\n",
" <td>0.035254</td>\n",
" <td>0.000600</td>\n",
" <td>0.002268</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-09-12</th>\n",
" <td>1.00004</td>\n",
" <td>0.000599</td>\n",
" <td>0.300000</td>\n",
" <td>0.002169</td>\n",
" <td>0.000600</td>\n",
" <td>-0.001570</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-09-26</th>\n",
" <td>0.99997</td>\n",
" <td>-0.003833</td>\n",
" <td>0.300000</td>\n",
" <td>-0.005593</td>\n",
" <td>0.000600</td>\n",
" <td>0.001759</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-10-17</th>\n",
" <td>0.99997</td>\n",
" <td>0.023100</td>\n",
" <td>0.186095</td>\n",
" <td>0.031667</td>\n",
" <td>0.000372</td>\n",
" <td>-0.008565</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-10-31</th>\n",
" <td>1.00002</td>\n",
" <td>0.012195</td>\n",
" <td>0.161896</td>\n",
" <td>0.013215</td>\n",
" <td>0.000324</td>\n",
" <td>-0.001020</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-11-14</th>\n",
" <td>1.00011</td>\n",
" <td>0.024223</td>\n",
" <td>0.300000</td>\n",
" <td>0.019105</td>\n",
" <td>0.000600</td>\n",
" <td>0.005116</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-11-28</th>\n",
" <td>1.00011</td>\n",
" <td>0.005913</td>\n",
" <td>0.300000</td>\n",
" <td>-0.004899</td>\n",
" <td>0.000600</td>\n",
" <td>0.010812</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-12-12</th>\n",
" <td>0.99994</td>\n",
" <td>-0.000915</td>\n",
" <td>0.280579</td>\n",
" <td>-0.000911</td>\n",
" <td>0.000561</td>\n",
" <td>-0.000005</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2017-12-26</th>\n",
" <td>0.99996</td>\n",
" <td>-0.008618</td>\n",
" <td>0.320000</td>\n",
" <td>-0.014643</td>\n",
" <td>0.000640</td>\n",
" <td>0.006025</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-01-10</th>\n",
" <td>1.00008</td>\n",
" <td>0.067812</td>\n",
" <td>0.300000</td>\n",
" <td>0.052321</td>\n",
" <td>0.000600</td>\n",
" <td>0.015487</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-01-24</th>\n",
" <td>0.99998</td>\n",
" <td>0.040601</td>\n",
" <td>0.300000</td>\n",
" <td>0.037221</td>\n",
" <td>0.000600</td>\n",
" <td>0.003381</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-02-07</th>\n",
" <td>0.99993</td>\n",
" <td>-0.079328</td>\n",
" <td>0.300000</td>\n",
" <td>-0.084335</td>\n",
" <td>0.000600</td>\n",
" <td>0.005000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-02-28</th>\n",
" <td>0.99994</td>\n",
" <td>0.008345</td>\n",
" <td>0.300000</td>\n",
" <td>0.014608</td>\n",
" <td>0.000600</td>\n",
" <td>-0.006262</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" leverage returns turn_over index tc_cost ret_after_tc\n",
"2017-01-03 0.00000 0.000000 0.000000 0.000000 0.000000 0.000000\n",
"2017-01-17 1.00003 0.000941 1.096011 -0.008629 0.002192 0.009570\n",
"2017-02-07 1.00003 0.019675 0.115240 0.013057 0.000230 0.006618\n",
"2017-02-21 0.99996 0.037460 0.241176 0.030984 0.000482 0.006476\n",
"2017-03-07 0.99798 -0.015306 0.270496 -0.011829 0.000541 -0.003501\n",
"2017-03-21 1.00003 0.011338 0.147566 0.000390 0.000295 0.010948\n",
"2017-04-06 1.00003 0.019413 0.208452 0.019344 0.000417 0.000069\n",
"2017-04-20 1.00004 -0.008491 0.300000 -0.014495 0.000600 0.006004\n",
"2017-05-05 1.00004 -0.028478 0.300000 -0.031634 0.000600 0.003156\n",
"2017-05-19 0.99990 0.019939 0.300000 0.015496 0.000600 0.004445\n",
"2017-06-06 0.99990 0.038234 0.300000 0.035334 0.000600 0.002903\n",
"2017-06-20 1.00004 0.027264 0.300000 0.015188 0.000600 0.012076\n",
"2017-07-04 1.00004 0.032644 0.272883 0.019815 0.000546 0.012828\n",
"2017-07-18 0.99999 0.036460 0.320000 0.018972 0.000640 0.017488\n",
"2017-08-01 0.99999 0.014548 0.300000 0.008294 0.000600 0.006254\n",
"2017-08-15 1.00004 -0.024802 0.300000 -0.015918 0.000600 -0.008883\n",
"2017-08-29 1.00004 0.037523 0.300000 0.035254 0.000600 0.002268\n",
"2017-09-12 1.00004 0.000599 0.300000 0.002169 0.000600 -0.001570\n",
"2017-09-26 0.99997 -0.003833 0.300000 -0.005593 0.000600 0.001759\n",
"2017-10-17 0.99997 0.023100 0.186095 0.031667 0.000372 -0.008565\n",
"2017-10-31 1.00002 0.012195 0.161896 0.013215 0.000324 -0.001020\n",
"2017-11-14 1.00011 0.024223 0.300000 0.019105 0.000600 0.005116\n",
"2017-11-28 1.00011 0.005913 0.300000 -0.004899 0.000600 0.010812\n",
"2017-12-12 0.99994 -0.000915 0.280579 -0.000911 0.000561 -0.000005\n",
"2017-12-26 0.99996 -0.008618 0.320000 -0.014643 0.000640 0.006025\n",
"2018-01-10 1.00008 0.067812 0.300000 0.052321 0.000600 0.015487\n",
"2018-01-24 0.99998 0.040601 0.300000 0.037221 0.000600 0.003381\n",
"2018-02-07 0.99993 -0.079328 0.300000 -0.084335 0.000600 0.005000\n",
"2018-02-28 0.99994 0.008345 0.300000 0.014608 0.000600 -0.006262"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ret_df"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'zz800'"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"universe.base_universe[0]"
]
},
{
"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.4"
}
},
"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