Commit 46815cf9 authored by Dr.李's avatar Dr.李

cont. remove files

parent 4c0d86b0
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import datetime as dt\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",
"import xgboost as xgb\n",
"from xgboost.sklearn import XGBRegressor\n",
"from sklearn.model_selection import GridSearchCV\n",
"\n",
"plt.style.use('fivethirtyeight')\n",
"engine = SqlEngine('postgres+psycopg2://postgres:A12345678!@10.63.6.220/alpha')"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"u_name = 'zz500'\n",
"benchmark = 905\n",
"universe = Universe(u_name, [u_name])\n",
"factor_coverage = engine.fetch_factor_coverage()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"flitered_coverage = factor_coverage[((factor_coverage.source == 'uqer'))\n",
" & (factor_coverage.universe == u_name) \n",
" & (factor_coverage.trade_date >= '2012-01-01')]\n",
"coverage_report = flitered_coverage.groupby(['factor'])['coverage'].mean()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"risk_factors = engine.fetch_risk_meta()\n",
"risk_factors = risk_factors[risk_factors.type == 'style'].factor.tolist()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"alpha_factors = coverage_report[coverage_report >= 0.99].index.tolist()\n",
"\n",
"alpha_factors = {\n",
" f: DIFF(f) / (ABS(f) + 1e-4) / (DIFF('closePrice') / (LAST('closePrice') + 1e-4))\n",
" for f in alpha_factors if f != 'SIZE'\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"202"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"alpha_factors.__len__()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"frequency = '2w'\n",
"batch = 8\n",
"start_date = '2012-01-01'\n",
"end_date = '2017-10-25'\n",
"method = 'risk_neutral'\n",
"portfolio_risk_neutralize = ['SIZE']\n",
"neutralize_risk = industry_styles + portfolio_risk_neutralize\n",
"industry_lower = 1.\n",
"industry_upper = 1."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"2017-10-30 15:59:06,085 - ALPHA_MIND - INFO - Starting data package fetching ...\n",
"D:\\ProgramData\\IntelPython3_2018\\lib\\site-packages\\alpha_mind-0.1.0-py3.6-win-amd64.egg\\alphamind\\data\\transformer.py:78: RuntimeWarning: invalid value encountered in true_divide\n",
" dropna=False)\n",
"D:\\ProgramData\\IntelPython3_2018\\lib\\site-packages\\alpha_mind-0.1.0-py3.6-win-amd64.egg\\alphamind\\data\\transformer.py:78: RuntimeWarning: divide by zero encountered in true_divide\n",
" dropna=False)\n",
"2017-10-30 16:00:44,156 - ALPHA_MIND - INFO - Loading data is finished\n",
"2017-10-30 16:01:02,368 - ALPHA_MIND - INFO - Data processing is finished\n"
]
}
],
"source": [
"data_package = fetch_data_package(engine,\n",
" alpha_factors=alpha_factors,\n",
" start_date=start_date,\n",
" end_date=end_date,\n",
" frequency=frequency,\n",
" universe=universe,\n",
" benchmark=benchmark,\n",
" batch=batch,\n",
" neutralized_risk=neutralize_risk,\n",
" pre_process=[winsorize_normal],\n",
" post_process=[winsorize_normal],\n",
" warm_start=batch)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"train_x = data_package['train']['x']\n",
"train_y = data_package['train']['y']\n",
"\n",
"predict_x = data_package['predict']['x']\n",
"predict_y = data_package['predict']['y']\n",
"\n",
"features = data_package['x_names']"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def plot_model_importance(model, features):\n",
" features = np.array(features)\n",
" n_features = len(features)\n",
" features_importance = model.feature_importances_\n",
" order = features_importance.argsort().argsort()\n",
" features = features[order >= n_features - 10]\n",
" features_importance = features_importance[order >= n_features - 10]\n",
" n_features = len(features)\n",
" plt.figure(figsize=(12, 6))\n",
" plt.barh(range(n_features), features_importance, align='center')\n",
" plt.yticks(np.arange(n_features), features)\n",
" plt.xlabel('Feature importance')\n",
" plt.ylabel('Feature')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 0. Train Score on a specific date\n",
"------------------------------------"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"ref_date = list(train_x.keys())[-1]\n",
"sample_train_x = train_x[ref_date]\n",
"sample_train_y = train_y[ref_date].flatten()\n",
"\n",
"sample_test_x = predict_x[ref_date]\n",
"sample_test_y = predict_y[ref_date].flatten()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time: 1min 22s\n"
]
}
],
"source": [
"%%time\n",
"\n",
"param_grid = {\n",
" 'max_depth': [3, 5, 10],\n",
" 'min_child_weight': [1, 5, 10]\n",
"}\n",
"\n",
"\n",
"\n",
"inner_model = XGBRegressor(max_depth=5,\n",
" min_child_weight=20,\n",
" n_estimators=1000,\n",
" subsample=0.5,\n",
" colsample_bytree=0.05,\n",
" reg_alpha=1.,\n",
" reg_lambda=1.)\n",
"\n",
"model = GridSearchCV(estimator = inner_model,\n",
" param_grid=param_grid,\n",
" cv=5,\n",
" n_jobs=-1)\n",
"\n",
"model.fit(sample_train_x, sample_train_y)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.55783631412419776"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.score(sample_train_x, sample_train_y)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-0.44341398453487768"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.score(sample_test_x, sample_test_y)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0.0043753 , 0.00372711, 0.0043753 , 0.00453735, 0.00340301,\n",
" 0.00405121, 0.00599579, 0.00275482, 0.0046994 , 0.00550964,\n",
" 0.00648193, 0.00518555, 0.0046994 , 0.00615784, 0.00696808,\n",
" 0.00550964, 0.00988495, 0.00567169, 0.00307892, 0.0043753 ,\n",
" 0.00534759, 0.00356506, 0.00534759, 0.00518555, 0.0050235 ,\n",
" 0.00388916, 0.00486145, 0.00324097, 0.00307892, 0.00405121,\n",
" 0.00421326, 0.00794037, 0.00761627, 0.00324097, 0.00615784,\n",
" 0.00518555, 0.00405121, 0.00388916, 0.00291687, 0.00388916,\n",
" 0.00307892, 0.00631988, 0.00388916, 0.0050235 , 0.00453735,\n",
" 0.00275482, 0.00518555, 0.00226868, 0.00340301, 0.00421326,\n",
" 0.00324097, 0.00388916, 0.00453735, 0.00696808, 0.0046994 ,\n",
" 0.00372711, 0.00421326, 0.00761627, 0.0050235 , 0.00453735,\n",
" 0.00777832, 0.00599579, 0.00550964, 0.00372711, 0.00664398,\n",
" 0.00421326, 0.00534759, 0.00534759, 0.00567169, 0.0046994 ,\n",
" 0.00486145, 0.00826446, 0.0050235 , 0.00729217, 0.00810241,\n",
" 0.00275482, 0.00372711, 0.00356506, 0.0050235 , 0.00421326,\n",
" 0.0043753 , 0.00372711, 0.00583374, 0.00550964, 0.00583374,\n",
" 0.0050235 , 0.01069519, 0.00453735, 0.00388916, 0.00356506,\n",
" 0.00534759, 0.00696808, 0.00631988, 0.00534759, 0.00583374,\n",
" 0.00615784, 0.00599579, 0.01085724, 0.00615784, 0.00534759,\n",
" 0.00534759, 0.00388916, 0.0050235 , 0.00372711, 0.00534759,\n",
" 0.00486145, 0.00388916, 0.00486145, 0.00486145, 0.00518555,\n",
" 0.00324097, 0.00259277, 0.00356506, 0.00583374, 0.00324097,\n",
" 0.00340301, 0.00291687, 0.00405121, 0.00599579, 0.0046994 ,\n",
" 0.00486145, 0.00356506, 0.00421326, 0.00259277, 0.00518555,\n",
" 0.00307892, 0.00567169, 0.00388916, 0.0043753 , 0.00534759,\n",
" 0.00340301, 0.00599579, 0.00372711, 0.00324097, 0.00453735,\n",
" 0.00275482, 0.00567169, 0.00518555, 0.0050235 , 0.00340301,\n",
" 0.00405121, 0.0050235 , 0.00842651, 0.00421326, 0.00615784,\n",
" 0.0046994 , 0.00615784, 0.0046994 , 0.0050235 , 0.00664398,\n",
" 0.00243072, 0.00486145, 0.00453735, 0.0050235 , 0.00713012,\n",
" 0.00615784, 0.00486145, 0.00275482, 0.00615784, 0.00388916,\n",
" 0.00534759, 0.00713012, 0.00567169, 0.00340301, 0.00631988,\n",
" 0.00486145, 0.0046994 , 0.00421326, 0.0050235 , 0.00324097,\n",
" 0.00405121, 0.00615784, 0.00599579, 0.00761627, 0.00226868,\n",
" 0.00340301, 0.00324097, 0.00259277, 0.00486145, 0.00405121,\n",
" 0.00372711, 0.0043753 , 0.00307892, 0.00388916, 0.00307892,\n",
" 0.00340301, 0.00664398, 0.00453735, 0.00550964, 0.00745422,\n",
" 0.0043753 , 0.00615784, 0.00729217, 0.00842651, 0.0043753 ,\n",
" 0.00648193, 0.00453735, 0.00631988, 0.0090747 , 0.00826446,\n",
" 0.00631988, 0.0050235 ], dtype=float32)"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.best_estimator_.feature_importances_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1. Train and test accuracy trend (XGBRegressor)\n",
"----------"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"dates = sorted(train_x.keys())\n",
"accuray_table = pd.DataFrame(columns=['train', 'test'])\n",
"\n",
"portfolio_industry_neutralize = True\n",
"\n",
"settlement = data_package['settlement']\n",
"industry_dummies = pd.get_dummies(settlement['industry'].values)\n",
"risk_styles = settlement[portfolio_risk_neutralize].values\n",
"total_risks = settlement[neutralize_risk].values\n",
"final_res = np.zeros(len(dates))\n",
"method = 'risk_neutral'"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"2017-10-30 16:03:43,756 - ALPHA_MIND - INFO - trade_date: 2012-01-30 00:00:00 training finished\n",
"2017-10-30 16:03:44,031 - ALPHA_MIND - INFO - trade_date: 2012-01-30 00:00:00 predicting finished\n",
"2017-10-30 16:05:05,734 - ALPHA_MIND - INFO - trade_date: 2012-02-08 00:00:00 training finished\n",
"2017-10-30 16:05:05,990 - ALPHA_MIND - INFO - trade_date: 2012-02-08 00:00:00 predicting finished\n",
"2017-10-30 16:06:15,716 - ALPHA_MIND - INFO - trade_date: 2012-02-22 00:00:00 training finished\n",
"2017-10-30 16:06:16,232 - ALPHA_MIND - INFO - trade_date: 2012-02-22 00:00:00 predicting finished\n",
"2017-10-30 16:07:26,617 - ALPHA_MIND - INFO - trade_date: 2012-03-07 00:00:00 training finished\n",
"2017-10-30 16:07:26,842 - ALPHA_MIND - INFO - trade_date: 2012-03-07 00:00:00 predicting finished\n",
"2017-10-30 16:08:34,769 - ALPHA_MIND - INFO - trade_date: 2012-03-21 00:00:00 training finished\n",
"2017-10-30 16:08:35,300 - ALPHA_MIND - INFO - trade_date: 2012-03-21 00:00:00 predicting finished\n",
"2017-10-30 16:09:42,546 - ALPHA_MIND - INFO - trade_date: 2012-04-05 00:00:00 training finished\n",
"2017-10-30 16:09:42,781 - ALPHA_MIND - INFO - trade_date: 2012-04-05 00:00:00 predicting finished\n",
"2017-10-30 16:10:45,327 - ALPHA_MIND - INFO - trade_date: 2012-04-18 00:00:00 training finished\n",
"2017-10-30 16:10:45,629 - ALPHA_MIND - INFO - trade_date: 2012-04-18 00:00:00 predicting finished\n",
"2017-10-30 16:11:55,708 - ALPHA_MIND - INFO - trade_date: 2012-05-02 00:00:00 training finished\n",
"2017-10-30 16:11:55,960 - ALPHA_MIND - INFO - trade_date: 2012-05-02 00:00:00 predicting finished\n",
"2017-10-30 16:13:14,065 - ALPHA_MIND - INFO - trade_date: 2012-05-16 00:00:00 training finished\n",
"2017-10-30 16:13:14,296 - ALPHA_MIND - INFO - trade_date: 2012-05-16 00:00:00 predicting finished\n",
"2017-10-30 16:14:36,442 - ALPHA_MIND - INFO - trade_date: 2012-05-30 00:00:00 training finished\n",
"2017-10-30 16:14:36,700 - ALPHA_MIND - INFO - trade_date: 2012-05-30 00:00:00 predicting finished\n",
"2017-10-30 16:15:50,418 - ALPHA_MIND - INFO - trade_date: 2012-06-13 00:00:00 training finished\n",
"2017-10-30 16:15:50,716 - ALPHA_MIND - INFO - trade_date: 2012-06-13 00:00:00 predicting finished\n",
"2017-10-30 16:16:59,918 - ALPHA_MIND - INFO - trade_date: 2012-06-27 00:00:00 training finished\n",
"2017-10-30 16:17:00,176 - ALPHA_MIND - INFO - trade_date: 2012-06-27 00:00:00 predicting finished\n",
"2017-10-30 16:18:12,672 - ALPHA_MIND - INFO - trade_date: 2012-07-11 00:00:00 training finished\n",
"2017-10-30 16:18:13,074 - ALPHA_MIND - INFO - trade_date: 2012-07-11 00:00:00 predicting finished\n",
"2017-10-30 16:19:18,565 - ALPHA_MIND - INFO - trade_date: 2012-07-25 00:00:00 training finished\n",
"2017-10-30 16:19:18,766 - ALPHA_MIND - INFO - trade_date: 2012-07-25 00:00:00 predicting finished\n",
"2017-10-30 16:20:24,549 - ALPHA_MIND - INFO - trade_date: 2012-08-08 00:00:00 training finished\n",
"2017-10-30 16:20:24,772 - ALPHA_MIND - INFO - trade_date: 2012-08-08 00:00:00 predicting finished\n",
"2017-10-30 16:21:29,819 - ALPHA_MIND - INFO - trade_date: 2012-08-22 00:00:00 training finished\n",
"2017-10-30 16:21:30,196 - ALPHA_MIND - INFO - trade_date: 2012-08-22 00:00:00 predicting finished\n",
"2017-10-30 16:22:39,143 - ALPHA_MIND - INFO - trade_date: 2012-09-05 00:00:00 training finished\n",
"2017-10-30 16:22:39,350 - ALPHA_MIND - INFO - trade_date: 2012-09-05 00:00:00 predicting finished\n",
"2017-10-30 16:23:48,277 - ALPHA_MIND - INFO - trade_date: 2012-09-19 00:00:00 training finished\n",
"2017-10-30 16:23:48,588 - ALPHA_MIND - INFO - trade_date: 2012-09-19 00:00:00 predicting finished\n",
"2017-10-30 16:24:55,873 - ALPHA_MIND - INFO - trade_date: 2012-10-08 00:00:00 training finished\n",
"2017-10-30 16:24:56,064 - ALPHA_MIND - INFO - trade_date: 2012-10-08 00:00:00 predicting finished\n",
"2017-10-30 16:25:58,817 - ALPHA_MIND - INFO - trade_date: 2012-10-17 00:00:00 training finished\n",
"2017-10-30 16:25:59,026 - ALPHA_MIND - INFO - trade_date: 2012-10-17 00:00:00 predicting finished\n",
"2017-10-30 16:27:00,816 - ALPHA_MIND - INFO - trade_date: 2012-10-31 00:00:00 training finished\n",
"2017-10-30 16:27:01,066 - ALPHA_MIND - INFO - trade_date: 2012-10-31 00:00:00 predicting finished\n",
"2017-10-30 16:28:07,181 - ALPHA_MIND - INFO - trade_date: 2012-11-14 00:00:00 training finished\n",
"2017-10-30 16:28:07,420 - ALPHA_MIND - INFO - trade_date: 2012-11-14 00:00:00 predicting finished\n",
"2017-10-30 16:29:16,637 - ALPHA_MIND - INFO - trade_date: 2012-11-28 00:00:00 training finished\n",
"2017-10-30 16:29:16,999 - ALPHA_MIND - INFO - trade_date: 2012-11-28 00:00:00 predicting finished\n",
"2017-10-30 16:30:21,593 - ALPHA_MIND - INFO - trade_date: 2012-12-12 00:00:00 training finished\n",
"2017-10-30 16:30:21,836 - ALPHA_MIND - INFO - trade_date: 2012-12-12 00:00:00 predicting finished\n",
"2017-10-30 16:31:30,018 - ALPHA_MIND - INFO - trade_date: 2012-12-26 00:00:00 training finished\n",
"2017-10-30 16:31:30,316 - ALPHA_MIND - INFO - trade_date: 2012-12-26 00:00:00 predicting finished\n",
"2017-10-30 16:32:35,963 - ALPHA_MIND - INFO - trade_date: 2013-01-09 00:00:00 training finished\n",
"2017-10-30 16:32:36,269 - ALPHA_MIND - INFO - trade_date: 2013-01-09 00:00:00 predicting finished\n",
"2017-10-30 16:33:44,180 - ALPHA_MIND - INFO - trade_date: 2013-01-23 00:00:00 training finished\n",
"2017-10-30 16:33:44,432 - ALPHA_MIND - INFO - trade_date: 2013-01-23 00:00:00 predicting finished\n",
"2017-10-30 16:34:52,341 - ALPHA_MIND - INFO - trade_date: 2013-02-06 00:00:00 training finished\n",
"2017-10-30 16:34:52,576 - ALPHA_MIND - INFO - trade_date: 2013-02-06 00:00:00 predicting finished\n",
"2017-10-30 16:36:01,845 - ALPHA_MIND - INFO - trade_date: 2013-02-20 00:00:00 training finished\n",
"2017-10-30 16:36:02,118 - ALPHA_MIND - INFO - trade_date: 2013-02-20 00:00:00 predicting finished\n",
"2017-10-30 16:37:10,073 - ALPHA_MIND - INFO - trade_date: 2013-03-06 00:00:00 training finished\n",
"2017-10-30 16:37:10,317 - ALPHA_MIND - INFO - trade_date: 2013-03-06 00:00:00 predicting finished\n",
"2017-10-30 16:38:23,873 - ALPHA_MIND - INFO - trade_date: 2013-03-20 00:00:00 training finished\n",
"2017-10-30 16:38:24,202 - ALPHA_MIND - INFO - trade_date: 2013-03-20 00:00:00 predicting finished\n",
"2017-10-30 16:39:30,761 - ALPHA_MIND - INFO - trade_date: 2013-04-03 00:00:00 training finished\n",
"2017-10-30 16:39:31,047 - ALPHA_MIND - INFO - trade_date: 2013-04-03 00:00:00 predicting finished\n",
"2017-10-30 16:40:34,583 - ALPHA_MIND - INFO - trade_date: 2013-04-17 00:00:00 training finished\n",
"2017-10-30 16:40:34,800 - ALPHA_MIND - INFO - trade_date: 2013-04-17 00:00:00 predicting finished\n",
"2017-10-30 16:41:36,855 - ALPHA_MIND - INFO - trade_date: 2013-05-02 00:00:00 training finished\n",
"2017-10-30 16:41:37,055 - ALPHA_MIND - INFO - trade_date: 2013-05-02 00:00:00 predicting finished\n",
"2017-10-30 16:42:42,062 - ALPHA_MIND - INFO - trade_date: 2013-05-15 00:00:00 training finished\n",
"2017-10-30 16:42:42,286 - ALPHA_MIND - INFO - trade_date: 2013-05-15 00:00:00 predicting finished\n",
"2017-10-30 16:43:48,501 - ALPHA_MIND - INFO - trade_date: 2013-05-29 00:00:00 training finished\n",
"2017-10-30 16:43:48,719 - ALPHA_MIND - INFO - trade_date: 2013-05-29 00:00:00 predicting finished\n",
"2017-10-30 16:44:56,528 - ALPHA_MIND - INFO - trade_date: 2013-06-13 00:00:00 training finished\n",
"2017-10-30 16:44:56,828 - ALPHA_MIND - INFO - trade_date: 2013-06-13 00:00:00 predicting finished\n",
"2017-10-30 16:46:08,251 - ALPHA_MIND - INFO - trade_date: 2013-06-26 00:00:00 training finished\n",
"2017-10-30 16:46:08,570 - ALPHA_MIND - INFO - trade_date: 2013-06-26 00:00:00 predicting finished\n",
"2017-10-30 16:47:17,948 - ALPHA_MIND - INFO - trade_date: 2013-07-10 00:00:00 training finished\n",
"2017-10-30 16:47:18,179 - ALPHA_MIND - INFO - trade_date: 2013-07-10 00:00:00 predicting finished\n",
"2017-10-30 16:48:28,189 - ALPHA_MIND - INFO - trade_date: 2013-07-24 00:00:00 training finished\n",
"2017-10-30 16:48:28,513 - ALPHA_MIND - INFO - trade_date: 2013-07-24 00:00:00 predicting finished\n",
"2017-10-30 16:49:37,966 - ALPHA_MIND - INFO - trade_date: 2013-08-07 00:00:00 training finished\n",
"2017-10-30 16:49:38,199 - ALPHA_MIND - INFO - trade_date: 2013-08-07 00:00:00 predicting finished\n",
"2017-10-30 16:50:47,164 - ALPHA_MIND - INFO - trade_date: 2013-08-21 00:00:00 training finished\n",
"2017-10-30 16:50:47,405 - ALPHA_MIND - INFO - trade_date: 2013-08-21 00:00:00 predicting finished\n",
"2017-10-30 16:51:59,466 - ALPHA_MIND - INFO - trade_date: 2013-09-04 00:00:00 training finished\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2017-10-30 16:51:59,771 - ALPHA_MIND - INFO - trade_date: 2013-09-04 00:00:00 predicting finished\n",
"2017-10-30 16:53:06,232 - ALPHA_MIND - INFO - trade_date: 2013-09-18 00:00:00 training finished\n",
"2017-10-30 16:53:06,504 - ALPHA_MIND - INFO - trade_date: 2013-09-18 00:00:00 predicting finished\n",
"2017-10-30 16:54:17,100 - ALPHA_MIND - INFO - trade_date: 2013-10-08 00:00:00 training finished\n",
"2017-10-30 16:54:17,349 - ALPHA_MIND - INFO - trade_date: 2013-10-08 00:00:00 predicting finished\n",
"2017-10-30 16:55:22,653 - ALPHA_MIND - INFO - trade_date: 2013-10-16 00:00:00 training finished\n",
"2017-10-30 16:55:22,904 - ALPHA_MIND - INFO - trade_date: 2013-10-16 00:00:00 predicting finished\n",
"2017-10-30 16:56:31,367 - ALPHA_MIND - INFO - trade_date: 2013-10-30 00:00:00 training finished\n",
"2017-10-30 16:56:31,650 - ALPHA_MIND - INFO - trade_date: 2013-10-30 00:00:00 predicting finished\n",
"2017-10-30 16:57:39,492 - ALPHA_MIND - INFO - trade_date: 2013-11-13 00:00:00 training finished\n",
"2017-10-30 16:57:39,751 - ALPHA_MIND - INFO - trade_date: 2013-11-13 00:00:00 predicting finished\n",
"2017-10-30 16:58:50,453 - ALPHA_MIND - INFO - trade_date: 2013-11-27 00:00:00 training finished\n",
"2017-10-30 16:58:50,712 - ALPHA_MIND - INFO - trade_date: 2013-11-27 00:00:00 predicting finished\n",
"2017-10-30 16:59:57,582 - ALPHA_MIND - INFO - trade_date: 2013-12-11 00:00:00 training finished\n",
"2017-10-30 16:59:57,957 - ALPHA_MIND - INFO - trade_date: 2013-12-11 00:00:00 predicting finished\n",
"2017-10-30 17:01:08,574 - ALPHA_MIND - INFO - trade_date: 2013-12-25 00:00:00 training finished\n",
"2017-10-30 17:01:08,786 - ALPHA_MIND - INFO - trade_date: 2013-12-25 00:00:00 predicting finished\n",
"2017-10-30 17:02:19,504 - ALPHA_MIND - INFO - trade_date: 2014-01-08 00:00:00 training finished\n",
"2017-10-30 17:02:19,757 - ALPHA_MIND - INFO - trade_date: 2014-01-08 00:00:00 predicting finished\n",
"2017-10-30 17:03:28,487 - ALPHA_MIND - INFO - trade_date: 2014-01-22 00:00:00 training finished\n",
"2017-10-30 17:03:28,702 - ALPHA_MIND - INFO - trade_date: 2014-01-22 00:00:00 predicting finished\n",
"2017-10-30 17:04:37,728 - ALPHA_MIND - INFO - trade_date: 2014-02-07 00:00:00 training finished\n",
"2017-10-30 17:04:37,962 - ALPHA_MIND - INFO - trade_date: 2014-02-07 00:00:00 predicting finished\n",
"2017-10-30 17:05:51,014 - ALPHA_MIND - INFO - trade_date: 2014-02-19 00:00:00 training finished\n",
"2017-10-30 17:05:51,237 - ALPHA_MIND - INFO - trade_date: 2014-02-19 00:00:00 predicting finished\n",
"2017-10-30 17:07:01,341 - ALPHA_MIND - INFO - trade_date: 2014-03-05 00:00:00 training finished\n",
"2017-10-30 17:07:01,560 - ALPHA_MIND - INFO - trade_date: 2014-03-05 00:00:00 predicting finished\n",
"2017-10-30 17:08:06,919 - ALPHA_MIND - INFO - trade_date: 2014-03-19 00:00:00 training finished\n",
"2017-10-30 17:08:07,263 - ALPHA_MIND - INFO - trade_date: 2014-03-19 00:00:00 predicting finished\n",
"2017-10-30 17:09:14,810 - ALPHA_MIND - INFO - trade_date: 2014-04-02 00:00:00 training finished\n",
"2017-10-30 17:09:15,045 - ALPHA_MIND - INFO - trade_date: 2014-04-02 00:00:00 predicting finished\n",
"2017-10-30 17:10:21,859 - ALPHA_MIND - INFO - trade_date: 2014-04-16 00:00:00 training finished\n",
"2017-10-30 17:10:22,073 - ALPHA_MIND - INFO - trade_date: 2014-04-16 00:00:00 predicting finished\n",
"2017-10-30 17:11:33,988 - ALPHA_MIND - INFO - trade_date: 2014-04-30 00:00:00 training finished\n",
"2017-10-30 17:11:34,238 - ALPHA_MIND - INFO - trade_date: 2014-04-30 00:00:00 predicting finished\n",
"2017-10-30 17:12:45,852 - ALPHA_MIND - INFO - trade_date: 2014-05-14 00:00:00 training finished\n",
"2017-10-30 17:12:46,122 - ALPHA_MIND - INFO - trade_date: 2014-05-14 00:00:00 predicting finished\n",
"2017-10-30 17:13:51,988 - ALPHA_MIND - INFO - trade_date: 2014-05-28 00:00:00 training finished\n",
"2017-10-30 17:13:52,200 - ALPHA_MIND - INFO - trade_date: 2014-05-28 00:00:00 predicting finished\n",
"2017-10-30 17:15:03,655 - ALPHA_MIND - INFO - trade_date: 2014-06-11 00:00:00 training finished\n",
"2017-10-30 17:15:04,208 - ALPHA_MIND - INFO - trade_date: 2014-06-11 00:00:00 predicting finished\n",
"2017-10-30 17:16:09,693 - ALPHA_MIND - INFO - trade_date: 2014-06-25 00:00:00 training finished\n",
"2017-10-30 17:16:10,029 - ALPHA_MIND - INFO - trade_date: 2014-06-25 00:00:00 predicting finished\n",
"2017-10-30 17:17:14,025 - ALPHA_MIND - INFO - trade_date: 2014-07-09 00:00:00 training finished\n",
"2017-10-30 17:17:14,280 - ALPHA_MIND - INFO - trade_date: 2014-07-09 00:00:00 predicting finished\n",
"2017-10-30 17:18:22,782 - ALPHA_MIND - INFO - trade_date: 2014-07-23 00:00:00 training finished\n",
"2017-10-30 17:18:23,174 - ALPHA_MIND - INFO - trade_date: 2014-07-23 00:00:00 predicting finished\n",
"2017-10-30 17:19:28,460 - ALPHA_MIND - INFO - trade_date: 2014-08-06 00:00:00 training finished\n",
"2017-10-30 17:19:28,675 - ALPHA_MIND - INFO - trade_date: 2014-08-06 00:00:00 predicting finished\n",
"2017-10-30 17:20:32,846 - ALPHA_MIND - INFO - trade_date: 2014-08-20 00:00:00 training finished\n",
"2017-10-30 17:20:33,059 - ALPHA_MIND - INFO - trade_date: 2014-08-20 00:00:00 predicting finished\n",
"2017-10-30 17:21:37,307 - ALPHA_MIND - INFO - trade_date: 2014-09-03 00:00:00 training finished\n",
"2017-10-30 17:21:37,585 - ALPHA_MIND - INFO - trade_date: 2014-09-03 00:00:00 predicting finished\n",
"2017-10-30 17:22:43,700 - ALPHA_MIND - INFO - trade_date: 2014-09-17 00:00:00 training finished\n",
"2017-10-30 17:22:43,922 - ALPHA_MIND - INFO - trade_date: 2014-09-17 00:00:00 predicting finished\n",
"2017-10-30 17:23:46,909 - ALPHA_MIND - INFO - trade_date: 2014-10-08 00:00:00 training finished\n",
"2017-10-30 17:23:47,124 - ALPHA_MIND - INFO - trade_date: 2014-10-08 00:00:00 predicting finished\n",
"2017-10-30 17:24:51,940 - ALPHA_MIND - INFO - trade_date: 2014-10-15 00:00:00 training finished\n",
"2017-10-30 17:24:52,162 - ALPHA_MIND - INFO - trade_date: 2014-10-15 00:00:00 predicting finished\n",
"2017-10-30 17:25:54,912 - ALPHA_MIND - INFO - trade_date: 2014-10-29 00:00:00 training finished\n",
"2017-10-30 17:25:55,272 - ALPHA_MIND - INFO - trade_date: 2014-10-29 00:00:00 predicting finished\n",
"2017-10-30 17:27:00,250 - ALPHA_MIND - INFO - trade_date: 2014-11-12 00:00:00 training finished\n",
"2017-10-30 17:27:00,462 - ALPHA_MIND - INFO - trade_date: 2014-11-12 00:00:00 predicting finished\n",
"2017-10-30 17:28:15,955 - ALPHA_MIND - INFO - trade_date: 2014-11-26 00:00:00 training finished\n",
"2017-10-30 17:28:16,477 - ALPHA_MIND - INFO - trade_date: 2014-11-26 00:00:00 predicting finished\n",
"2017-10-30 17:29:31,183 - ALPHA_MIND - INFO - trade_date: 2014-12-10 00:00:00 training finished\n",
"2017-10-30 17:29:31,748 - ALPHA_MIND - INFO - trade_date: 2014-12-10 00:00:00 predicting finished\n",
"2017-10-30 17:30:45,763 - ALPHA_MIND - INFO - trade_date: 2014-12-24 00:00:00 training finished\n",
"2017-10-30 17:30:46,076 - ALPHA_MIND - INFO - trade_date: 2014-12-24 00:00:00 predicting finished\n",
"2017-10-30 17:31:56,277 - ALPHA_MIND - INFO - trade_date: 2015-01-07 00:00:00 training finished\n",
"2017-10-30 17:31:56,520 - ALPHA_MIND - INFO - trade_date: 2015-01-07 00:00:00 predicting finished\n",
"2017-10-30 17:33:09,420 - ALPHA_MIND - INFO - trade_date: 2015-01-21 00:00:00 training finished\n",
"2017-10-30 17:33:09,700 - ALPHA_MIND - INFO - trade_date: 2015-01-21 00:00:00 predicting finished\n",
"2017-10-30 17:34:16,953 - ALPHA_MIND - INFO - trade_date: 2015-02-04 00:00:00 training finished\n",
"2017-10-30 17:34:17,174 - ALPHA_MIND - INFO - trade_date: 2015-02-04 00:00:00 predicting finished\n",
"2017-10-30 17:35:24,013 - ALPHA_MIND - INFO - trade_date: 2015-02-25 00:00:00 training finished\n",
"2017-10-30 17:35:24,358 - ALPHA_MIND - INFO - trade_date: 2015-02-25 00:00:00 predicting finished\n",
"2017-10-30 17:36:31,136 - ALPHA_MIND - INFO - trade_date: 2015-03-04 00:00:00 training finished\n",
"2017-10-30 17:36:31,414 - ALPHA_MIND - INFO - trade_date: 2015-03-04 00:00:00 predicting finished\n",
"2017-10-30 17:37:38,233 - ALPHA_MIND - INFO - trade_date: 2015-03-18 00:00:00 training finished\n",
"2017-10-30 17:37:38,467 - ALPHA_MIND - INFO - trade_date: 2015-03-18 00:00:00 predicting finished\n",
"2017-10-30 17:38:50,540 - ALPHA_MIND - INFO - trade_date: 2015-04-01 00:00:00 training finished\n",
"2017-10-30 17:38:50,981 - ALPHA_MIND - INFO - trade_date: 2015-04-01 00:00:00 predicting finished\n",
"2017-10-30 17:39:57,286 - ALPHA_MIND - INFO - trade_date: 2015-04-15 00:00:00 training finished\n",
"2017-10-30 17:39:57,495 - ALPHA_MIND - INFO - trade_date: 2015-04-15 00:00:00 predicting finished\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2017-10-30 17:41:02,621 - ALPHA_MIND - INFO - trade_date: 2015-04-29 00:00:00 training finished\n",
"2017-10-30 17:41:02,945 - ALPHA_MIND - INFO - trade_date: 2015-04-29 00:00:00 predicting finished\n",
"2017-10-30 17:42:10,267 - ALPHA_MIND - INFO - trade_date: 2015-05-13 00:00:00 training finished\n",
"2017-10-30 17:42:10,804 - ALPHA_MIND - INFO - trade_date: 2015-05-13 00:00:00 predicting finished\n",
"2017-10-30 17:43:20,729 - ALPHA_MIND - INFO - trade_date: 2015-05-27 00:00:00 training finished\n",
"2017-10-30 17:43:20,960 - ALPHA_MIND - INFO - trade_date: 2015-05-27 00:00:00 predicting finished\n",
"2017-10-30 17:44:32,601 - ALPHA_MIND - INFO - trade_date: 2015-06-10 00:00:00 training finished\n",
"2017-10-30 17:44:32,920 - ALPHA_MIND - INFO - trade_date: 2015-06-10 00:00:00 predicting finished\n",
"2017-10-30 17:45:42,142 - ALPHA_MIND - INFO - trade_date: 2015-06-24 00:00:00 training finished\n",
"2017-10-30 17:45:42,498 - ALPHA_MIND - INFO - trade_date: 2015-06-24 00:00:00 predicting finished\n",
"2017-10-30 17:46:51,160 - ALPHA_MIND - INFO - trade_date: 2015-07-08 00:00:00 training finished\n",
"2017-10-30 17:46:51,376 - ALPHA_MIND - INFO - trade_date: 2015-07-08 00:00:00 predicting finished\n",
"2017-10-30 17:48:04,098 - ALPHA_MIND - INFO - trade_date: 2015-07-22 00:00:00 training finished\n",
"2017-10-30 17:48:04,346 - ALPHA_MIND - INFO - trade_date: 2015-07-22 00:00:00 predicting finished\n",
"2017-10-30 17:49:12,908 - ALPHA_MIND - INFO - trade_date: 2015-08-05 00:00:00 training finished\n",
"2017-10-30 17:49:13,140 - ALPHA_MIND - INFO - trade_date: 2015-08-05 00:00:00 predicting finished\n",
"2017-10-30 17:50:26,135 - ALPHA_MIND - INFO - trade_date: 2015-08-19 00:00:00 training finished\n",
"2017-10-30 17:50:26,531 - ALPHA_MIND - INFO - trade_date: 2015-08-19 00:00:00 predicting finished\n",
"2017-10-30 17:51:34,916 - ALPHA_MIND - INFO - trade_date: 2015-09-02 00:00:00 training finished\n",
"2017-10-30 17:51:35,307 - ALPHA_MIND - INFO - trade_date: 2015-09-02 00:00:00 predicting finished\n",
"2017-10-30 17:52:44,581 - ALPHA_MIND - INFO - trade_date: 2015-09-16 00:00:00 training finished\n",
"2017-10-30 17:52:45,010 - ALPHA_MIND - INFO - trade_date: 2015-09-16 00:00:00 predicting finished\n",
"2017-10-30 17:53:58,147 - ALPHA_MIND - INFO - trade_date: 2015-09-30 00:00:00 training finished\n",
"2017-10-30 17:53:58,469 - ALPHA_MIND - INFO - trade_date: 2015-09-30 00:00:00 predicting finished\n",
"2017-10-30 17:55:13,364 - ALPHA_MIND - INFO - trade_date: 2015-10-14 00:00:00 training finished\n",
"2017-10-30 17:55:13,702 - ALPHA_MIND - INFO - trade_date: 2015-10-14 00:00:00 predicting finished\n",
"2017-10-30 17:56:21,040 - ALPHA_MIND - INFO - trade_date: 2015-10-28 00:00:00 training finished\n",
"2017-10-30 17:56:21,260 - ALPHA_MIND - INFO - trade_date: 2015-10-28 00:00:00 predicting finished\n",
"2017-10-30 17:57:32,846 - ALPHA_MIND - INFO - trade_date: 2015-11-11 00:00:00 training finished\n",
"2017-10-30 17:57:33,144 - ALPHA_MIND - INFO - trade_date: 2015-11-11 00:00:00 predicting finished\n",
"2017-10-30 17:58:46,159 - ALPHA_MIND - INFO - trade_date: 2015-11-25 00:00:00 training finished\n",
"2017-10-30 17:58:46,498 - ALPHA_MIND - INFO - trade_date: 2015-11-25 00:00:00 predicting finished\n",
"2017-10-30 17:59:52,634 - ALPHA_MIND - INFO - trade_date: 2015-12-09 00:00:00 training finished\n",
"2017-10-30 17:59:52,932 - ALPHA_MIND - INFO - trade_date: 2015-12-09 00:00:00 predicting finished\n",
"2017-10-30 18:01:01,254 - ALPHA_MIND - INFO - trade_date: 2015-12-23 00:00:00 training finished\n",
"2017-10-30 18:01:01,704 - ALPHA_MIND - INFO - trade_date: 2015-12-23 00:00:00 predicting finished\n",
"2017-10-30 18:02:14,769 - ALPHA_MIND - INFO - trade_date: 2016-01-06 00:00:00 training finished\n",
"2017-10-30 18:02:15,036 - ALPHA_MIND - INFO - trade_date: 2016-01-06 00:00:00 predicting finished\n",
"2017-10-30 18:03:20,459 - ALPHA_MIND - INFO - trade_date: 2016-01-20 00:00:00 training finished\n",
"2017-10-30 18:03:20,741 - ALPHA_MIND - INFO - trade_date: 2016-01-20 00:00:00 predicting finished\n",
"2017-10-30 18:04:16,460 - ALPHA_MIND - INFO - trade_date: 2016-02-03 00:00:00 training finished\n",
"2017-10-30 18:04:16,657 - ALPHA_MIND - INFO - trade_date: 2016-02-03 00:00:00 predicting finished\n",
"2017-10-30 18:05:15,056 - ALPHA_MIND - INFO - trade_date: 2016-02-17 00:00:00 training finished\n",
"2017-10-30 18:05:15,314 - ALPHA_MIND - INFO - trade_date: 2016-02-17 00:00:00 predicting finished\n"
]
}
],
"source": [
"for i, ref_date in enumerate(dates):\n",
" sample_train_x = train_x[ref_date]\n",
" sample_train_y = train_y[ref_date].flatten()\n",
"\n",
" model.fit(sample_train_x, sample_train_y)\n",
" accuray_table.loc[ref_date, 'train'] = model.score(sample_train_x, sample_train_y)\n",
" alpha_logger.info('trade_date: {0} training finished'.format(ref_date))\n",
" \n",
" ##---------------------------------##\n",
" \n",
" sample_test_x = predict_x[ref_date]\n",
" sample_test_y = predict_y[ref_date].flatten()\n",
" \n",
" cons = Constraints()\n",
" index = settlement.trade_date == ref_date\n",
" benchmark_w = settlement[index]['weight'].values\n",
" realized_r = settlement[index]['dx'].values\n",
" industry_names = settlement[index]['industry'].values\n",
" is_tradable = settlement[index]['isOpen'].values\n",
"\n",
" cons.add_exposure(['total'], np.ones((len(is_tradable), 1)))\n",
" cons.set_constraints('total', benchmark_w.sum(), benchmark_w.sum())\n",
"\n",
" if portfolio_industry_neutralize:\n",
" ind_exp = industry_dummies[index]\n",
"\n",
" risk_tags = ind_exp.columns\n",
" cons.add_exposure(risk_tags, ind_exp.values)\n",
" benchmark_exp = benchmark_w @ ind_exp.values\n",
"\n",
" for k, name in enumerate(risk_tags):\n",
" cons.set_constraints(name, benchmark_exp[k]*industry_lower, benchmark_exp[k]*industry_upper)\n",
"\n",
" if portfolio_risk_neutralize:\n",
" risk_exp = risk_styles[index]\n",
"\n",
" risk_tags = np.array(portfolio_risk_neutralize)\n",
" cons.add_exposure(risk_tags, risk_exp)\n",
"\n",
" benchmark_exp = benchmark_w @ risk_exp\n",
" for k, name in enumerate(risk_tags):\n",
" cons.set_constraints(name, benchmark_exp[k], benchmark_exp[k])\n",
"\n",
" risk_table = total_risks[index]\n",
" \n",
" y = model.predict(sample_test_x)\n",
" accuray_table.loc[ref_date, 'test'] = model.score(sample_test_x, sample_test_y)\n",
"\n",
" is_tradable[:] = True\n",
" weights, analysis = er_portfolio_analysis(y.astype(float),\n",
" industry_names,\n",
" realized_r,\n",
" constraints=cons,\n",
" detail_analysis=True,\n",
" benchmark=benchmark_w,\n",
" is_tradable=is_tradable,\n",
" method=method)\n",
" \n",
" final_res[i] = analysis['er']['total'] / benchmark_w.sum()\n",
" alpha_logger.info('trade_date: {0} predicting finished'.format(ref_date))\n",
" "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"last_date = advanceDateByCalendar('china.sse', dates[-1], frequency)\n",
"\n",
"df = pd.Series(final_res, index=dates[1:] + [last_date])\n",
"df.sort_index(inplace=True)\n",
"df['2012-01-01':].cumsum().plot(figsize=(12, 6))\n",
"plt.title('Prod factors model {1} ({0})'.format(method, model.__class__.__name__))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"accuray_table.aggregate([np.mean, np.median, np.std])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
This source diff could not be displayed because it is too large. You can view the blob instead.
# -*- coding: utf-8 -*-
"""
Created on 2018-3-5
@author: cheng.li
"""
import numpy as np
import pandas as pd
import statsmodels.api as sm
from alphamind.api import (
SqlEngine, LinearConstraints, er_portfolio_analysis, alpha_logger
)
def cross_section_analysis(ref_date,
factor_name,
universe,
horizon,
constraint_risk,
linear_bounds,
lbound,
ubound,
engine):
codes = engine.fetch_codes(ref_date, universe)
risk_exposure = engine.fetch_risk_model(ref_date, codes)[1][['code'] + constraint_risk]
factor_data = engine.fetch_factor(ref_date, factor_name, codes)
industry_matrix = engine.fetch_industry_matrix(ref_date, codes, 'sw_adj', 1)
total_data = pd.merge(factor_data, risk_exposure, on='code')
total_data = pd.merge(total_data, industry_matrix, on='code').dropna()
total_risk_exp = total_data[constraint_risk]
constraints = LinearConstraints(linear_bounds, total_risk_exp)
er = total_data[factor_name].values
industry = total_data.industry_name.values
target_pos, _ = er_portfolio_analysis(er,
industry,
None,
constraints,
False,
None,
method='risk_neutral',
lbound=lbound*np.ones(len(er)),
ubound=ubound*np.ones(len(er)))
codes = total_data.code.tolist()
target_pos['code'] = codes
dx_returns = engine.fetch_dx_return(ref_date, codes, horizon=horizon, offset=1)
target_pos = pd.merge(target_pos, dx_returns, on=['code'])
activate_weight = target_pos.weight.values
excess_return = np.exp(target_pos.dx.values) - 1.
port_ret = np.log(activate_weight @ excess_return + 1.)
ic = np.corrcoef(excess_return, activate_weight)[0, 1]
x = sm.add_constant(activate_weight)
results = sm.OLS(excess_return, x).fit()
t_stats = results.tvalues[1]
alpha_logger.info(f"{ref_date} is finished with {len(target_pos)} stocks for {factor_name}")
return port_ret, ic, t_stats
if __name__ == '__main__':
from alphamind.api import (
Universe, map_freq, risk_styles, industry_styles, macro_styles, BoundaryType, create_box_bounds
)
"""
Back test parameter settings
"""
start_date = '2010-01-01'
end_date = '2018-02-28'
category = 'sw_adj'
level = 1
freq = '20b'
universe = Universe('custom', ['zz800'])
data_source = 'postgres+psycopg2://postgres:A12345678!@10.63.6.220/alpha'
engine = SqlEngine(data_source)
horizon = map_freq(freq)
"""
Factor Model
"""
factor_name = 'SIZE'
"""
Constraints
"""
risk_names = list(set(risk_styles).difference({factor_name}))
industry_names = list(set(industry_styles).difference({factor_name}))
constraint_risk = risk_names + industry_names + macro_styles
b_type = []
l_val = []
u_val = []
for name in constraint_risk:
if name in set(risk_styles):
b_type.append(BoundaryType.ABSOLUTE)
l_val.append(0.0)
u_val.append(0.0)
else:
b_type.append(BoundaryType.RELATIVE)
l_val.append(1.0)
u_val.append(1.0)
linear_bounds = create_box_bounds(constraint_risk, b_type, l_val, u_val)
ref_date = '2018-02-08'
df = pd.DataFrame(columns=['ret', 'ic', 't.'])
print(cross_section_analysis(ref_date,
factor_name,
universe,
horizon,
constraint_risk,
linear_bounds,
lbound=-0.01,
ubound=0.01,
engine=engine))
\ No newline at end of file
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