Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
A
alpha-mind
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Dr.李
alpha-mind
Commits
390152e0
Commit
390152e0
authored
Mar 29, 2018
by
Dr.李
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update optimizer
parent
e0bfc963
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
222 additions
and
246 deletions
+222
-246
optimizers.pyx
alphamind/cython/optimizers.pyx
+59
-21
pfopt
alphamind/pfopt
+1
-1
linearbuilder.py
alphamind/portfolio/linearbuilder.py
+4
-3
Example 7 - Portfolio Optimizer Performance.ipynb
notebooks/Example 7 - Portfolio Optimizer Performance.ipynb
+157
-220
xgboost
xgboost
+1
-1
No files found.
alphamind/cython/optimizers.pyx
View file @
390152e0
...
...
@@ -7,13 +7,14 @@ Created on 2017-7-20
"""
cimport numpy as cnp
from libcpp.string cimport string
from libcpp.vector cimport vector
import numpy as np
cdef extern from "lpoptimizer.hpp" namespace "pfopt":
cdef cppclass LpOptimizer:
LpOptimizer(int, int, double*, double*, double*, double*) except +
LpOptimizer(int, int, double*, double*, double*, double*
, string
) except +
vector[double] xValue()
double feval()
int status()
...
...
@@ -29,9 +30,12 @@ cdef class LPOptimizer:
cnp.ndarray[double, ndim=2] cons_matrix,
double[:] lbound,
double[:] ubound,
double[:] objective):
double[:] objective,
str method='simplex'):
self.n = lbound.shape[0]
self.m = cons_matrix.shape[0]
py_bytes = method.encode('ascii')
cdef char* c_str = py_bytes
cdef double[:] cons = cons_matrix.flatten(order='C');
self.cobj = new LpOptimizer(self.n,
...
...
@@ -39,7 +43,8 @@ cdef class LPOptimizer:
&cons[0],
&lbound[0],
&ubound[0],
&objective[0])
&objective[0],
c_str)
def __dealloc__(self):
del self.cobj
...
...
@@ -151,9 +156,25 @@ cdef extern from "mvoptimizer.hpp" namespace "pfopt":
int status()
cdef extern from "qpalglib.hpp" namespace "pfopt":
cdef cppclass QPAlglib:
QPAlglib(int,
double*,
double*,
double*,
double*,
double) except +
vector[double] xValue()
int status()
cdef class QPOptimizer:
cdef MVOptimizer* cobj
cdef QPAlglib* cobj2
cdef cnp.ndarray er
cdef cnp.ndarray cov
cdef double risk_aversion
cdef int n
cdef int m
...
...
@@ -169,12 +190,15 @@ cdef class QPOptimizer:
self.n = lbound.shape[0]
self.m = 0
self.er = np.array(expected_return)
self.cov = np.array(cov_matrix)
self.risk_aversion = risk_aversion
cdef double[:] cov = cov_matrix.flatten(order='C')
cdef double[:] cons
if cons_matrix is not None:
self.m = cons_matrix.shape[0]
cons = cons_matrix.flatten(order='C')
;
cons = cons_matrix.flatten(order='C')
self.cobj = new MVOptimizer(self.n,
&expected_return[0],
...
...
@@ -187,25 +211,39 @@ cdef class QPOptimizer:
&cubound[0],
risk_aversion)
else:
self.cobj
= new MVOptimizer
(self.n,
self.cobj
2 = new QPAlglib
(self.n,
&expected_return[0],
&cov[0],
&lbound[0],
&ubound[0],
0,
NULL,
NULL,
NULL,
risk_aversion)
def __dealloc__(self):
if self.cobj:
del self.cobj
else:
del self.cobj2
def feval(self):
if self.cobj:
return self.cobj.feval()
else:
x = np.array(self.cobj2.xValue())
return 0.5 * self.risk_aversion * x @ self.cov @ x - self.er @ x
def x_value(self):
if self.cobj:
return np.array(self.cobj.xValue())
else:
return np.array(self.cobj2.xValue())
def status(self):
if self.cobj:
return self.cobj.status()
else:
status = self.cobj2.status()
if 1 <= status <= 4:
return 0
else:
return status
pfopt
@
1ed77b10
Subproject commit
7e81e8ec55c9f43bb6256eeb78d744f4670dae1d
Subproject commit
1ed77b10dab76d88b09a057670a3c01276bc82d0
alphamind/portfolio/linearbuilder.py
View file @
390152e0
...
...
@@ -17,7 +17,8 @@ def linear_builder(er: np.ndarray,
risk_constraints
:
np
.
ndarray
,
risk_target
:
Tuple
[
np
.
ndarray
,
np
.
ndarray
],
turn_over_target
:
float
=
None
,
current_position
:
np
.
ndarray
=
None
)
->
Tuple
[
str
,
np
.
ndarray
,
np
.
ndarray
]:
current_position
:
np
.
ndarray
=
None
,
method
:
str
=
'simplex'
)
->
Tuple
[
str
,
np
.
ndarray
,
np
.
ndarray
]:
er
=
er
.
flatten
()
n
,
m
=
risk_constraints
.
shape
...
...
@@ -36,7 +37,7 @@ def linear_builder(er: np.ndarray,
if
not
turn_over_target
:
cons_matrix
=
np
.
concatenate
((
risk_constraints
.
T
,
risk_lbound
,
risk_ubound
),
axis
=
1
)
opt
=
LPOptimizer
(
cons_matrix
,
lbound
,
ubound
,
-
er
)
opt
=
LPOptimizer
(
cons_matrix
,
lbound
,
ubound
,
-
er
,
method
)
status
=
opt
.
status
()
...
...
@@ -77,7 +78,7 @@ def linear_builder(er: np.ndarray,
risk_ubound
=
np
.
concatenate
((
risk_ubound
,
np
.
inf
*
np
.
ones
((
n
,
1
))),
axis
=
0
)
cons_matrix
=
np
.
concatenate
((
risk_constraints
,
risk_lbound
,
risk_ubound
),
axis
=
1
)
opt
=
LPOptimizer
(
cons_matrix
,
lbound
,
ubound
,
-
er
)
opt
=
LPOptimizer
(
cons_matrix
,
lbound
,
ubound
,
-
er
,
method
)
status
=
opt
.
status
()
...
...
notebooks/Example 7 - Portfolio Optimizer Performance.ipynb
View file @
390152e0
...
...
@@ -57,7 +57,7 @@
"factor = 'EPS'\n",
"lb = 0.0\n",
"ub = 0.1\n",
"data_source = 'postgres+psycopg2://postgres:
A12345678!@10.63.6.220
/alpha'\n",
"data_source = 'postgres+psycopg2://postgres:
we083826@localhost
/alpha'\n",
"engine = SqlEngine(data_source)\n",
"\n",
"universes = [Universe('custom', [u_name]) for u_name in u_names]\n",
...
...
@@ -82,12 +82,12 @@
"name": "stderr",
"output_type": "stream",
"text": [
"2018-03-2
8 12:46:50,110
- ALPHA_MIND - INFO - sh50 is finished\n",
"2018-03-2
8 12:46:50,131
- ALPHA_MIND - INFO - hs300 is finished\n",
"2018-03-2
8 12:46:50,156
- ALPHA_MIND - INFO - zz500 is finished\n",
"2018-03-2
8 12:46:50,193
- ALPHA_MIND - INFO - zz800 is finished\n",
"2018-03-2
8 12:46:50,244
- ALPHA_MIND - INFO - zz1000 is finished\n",
"2018-03-2
8 12:46:50,830
- ALPHA_MIND - INFO - ashare_ex is finished\n"
"2018-03-2
9 23:27:41,866
- ALPHA_MIND - INFO - sh50 is finished\n",
"2018-03-2
9 23:27:41,879
- ALPHA_MIND - INFO - hs300 is finished\n",
"2018-03-2
9 23:27:41,897
- ALPHA_MIND - INFO - zz500 is finished\n",
"2018-03-2
9 23:27:41,925
- ALPHA_MIND - INFO - zz800 is finished\n",
"2018-03-2
9 23:27:41,966
- ALPHA_MIND - INFO - zz1000 is finished\n",
"2018-03-2
9 23:27:42,244
- ALPHA_MIND - INFO - ashare_ex is finished\n"
]
}
],
...
...
@@ -171,21 +171,21 @@
" <tbody>\n",
" <tr>\n",
" <th>cvxpy</th>\n",
" <td>
2.69
</td>\n",
" <td>
6.37
</td>\n",
" <td>
7.28
</td>\n",
" <td>1
2.55
</td>\n",
" <td>
20.09
</td>\n",
" <td>
325.8
8</td>\n",
" <td>
1.63
</td>\n",
" <td>
3.53
</td>\n",
" <td>
5.47
</td>\n",
" <td>1
0.00
</td>\n",
" <td>
16.80
</td>\n",
" <td>
128.5
8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>alphamind</th>\n",
" <td>0.
34
</td>\n",
" <td>0.
58
</td>\n",
" <td>0.
70
</td>\n",
" <td>0.
92
</td>\n",
" <td>
1.08
</td>\n",
" <td>
3.08
</td>\n",
" <td>0.
21
</td>\n",
" <td>0.
37
</td>\n",
" <td>0.
45
</td>\n",
" <td>0.
65
</td>\n",
" <td>
0.80
</td>\n",
" <td>
2.43
</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
...
...
@@ -193,8 +193,8 @@
],
"text/plain": [
" sh50 hs300 zz500 zz800 zz1000 ashare_ex\n",
"cvxpy
2.69 6.37 7.28 12.55 20.09 325.8
8\n",
"alphamind 0.
34 0.58 0.70 0.92 1.08 3.08
"
"cvxpy
1.63 3.53 5.47 10.00 16.80 128.5
8\n",
"alphamind 0.
21 0.37 0.45 0.65 0.80 2.43
"
]
},
"execution_count": 4,
...
...
@@ -223,23 +223,20 @@
"name": "stderr",
"output_type": "stream",
"text": [
"2018-03-28 12:46:51,048 - ALPHA_MIND - INFO - sh50 is finished\n",
"2018-03-28 12:46:51,157 - ALPHA_MIND - INFO - hs300 is finished\n",
"2018-03-28 12:46:51,442 - ALPHA_MIND - INFO - zz500 is finished\n",
"2018-03-28 12:46:52,102 - ALPHA_MIND - INFO - zz800 is finished\n",
"2018-03-28 12:46:53,172 - ALPHA_MIND - INFO - zz1000 is finished\n",
"2018-03-28 12:47:04,916 - ALPHA_MIND - INFO - ashare_ex is finished\n"
"2018-03-29 23:28:14,838 - ALPHA_MIND - INFO - sh50 is finished\n",
"2018-03-29 23:28:15,575 - ALPHA_MIND - INFO - hs300 is finished\n",
"2018-03-29 23:28:18,310 - ALPHA_MIND - INFO - zz500 is finished\n"
]
}
],
"source": [
"from cvxpy import pnorm\n",
"\n",
"df = pd.DataFrame(columns=u_names, index=['cvxpy', 'alphamind'])\n",
"df = pd.DataFrame(columns=u_names
[:3]
, index=['cvxpy', 'alphamind'])\n",
"turn_over_target = 0.5\n",
"number = 1\n",
"\n",
"for u_name, sample_data in zip(u_names, data_set):\n",
"for u_name, sample_data in zip(u_names
[:3]
, data_set):\n",
" factor_data = sample_data['factor']\n",
" er = factor_data[factor].values\n",
" n = len(er)\n",
...
...
@@ -254,8 +251,22 @@
" risk_constraints = np.ones((len(er), 1))\n",
" risk_target = (np.array([1.]), np.array([1.]))\n",
"\n",
" status, y, x1 = linear_builder(er, lbound, ubound, risk_constraints, risk_target, turn_over_target=turn_over_target, current_position=current_position)\n",
" elasped_time1 = timeit.timeit(\"linear_builder(er, lbound, ubound, risk_constraints, risk_target, turn_over_target=turn_over_target, current_position=current_position)\", number=number, globals=globals()) / number * 1000\n",
" status, y, x1 = linear_builder(er,\n",
" lbound,\n",
" ubound,\n",
" risk_constraints,\n",
" risk_target,\n",
" turn_over_target=turn_over_target,\n",
" current_position=current_position,\n",
" method='simplex')\n",
" elasped_time1 = timeit.timeit(\"\"\"linear_builder(er,\n",
" lbound,\n",
" ubound,\n",
" risk_constraints,\n",
" risk_target,\n",
" turn_over_target=turn_over_target,\n",
" current_position=current_position,\n",
" method='simplex')\"\"\", number=number, globals=globals()) / number * 1000\n",
" \n",
" w = cvxpy.Variable(n)\n",
" curr_risk_exposure = risk_constraints.T @ w\n",
...
...
@@ -315,21 +326,21 @@
" <tbody>\n",
" <tr>\n",
" <th>cvxpy</th>\n",
" <td>
4.26
</td>\n",
" <td>2
8.31
</td>\n",
" <td>
67.48
</td>\n",
" <td>1
64.81
</td>\n",
" <td>2
56.14
</td>\n",
" <td>
2,561.1
7</td>\n",
" <td>
2.50
</td>\n",
" <td>2
0.24
</td>\n",
" <td>
52.74
</td>\n",
" <td>1
25.65
</td>\n",
" <td>2
04.18
</td>\n",
" <td>
1,789.0
7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>alphamind</th>\n",
" <td>1.
22
</td>\n",
" <td>
20.28
</td>\n",
" <td>
67.1
0</td>\n",
" <td>
154.95
</td>\n",
" <td>
267.17
</td>\n",
" <td>
3,314.10
</td>\n",
" <td>1.
34
</td>\n",
" <td>
9.60
</td>\n",
" <td>
28.2
0</td>\n",
" <td>
81.53
</td>\n",
" <td>
106.00
</td>\n",
" <td>
1,213.77
</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
...
...
@@ -337,8 +348,8 @@
],
"text/plain": [
" sh50 hs300 zz500 zz800 zz1000 ashare_ex\n",
"cvxpy
4.26 28.31 67.48 164.81 256.14 2,561.1
7\n",
"alphamind 1.
22 20.28 67.10 154.95 267.17 3,314.10
"
"cvxpy
2.50 20.24 52.74 125.65 204.18 1,789.0
7\n",
"alphamind 1.
34 9.60 28.20 81.53 106.00 1,213.77
"
]
},
"execution_count": 6,
...
...
@@ -369,12 +380,12 @@
"name": "stderr",
"output_type": "stream",
"text": [
"2018-03-2
8 12:47:05,225
- ALPHA_MIND - INFO - sh50 is finished\n",
"2018-03-2
8 12:47:06,047
- ALPHA_MIND - INFO - hs300 is finished\n",
"2018-03-2
8 12:47:07,931
- ALPHA_MIND - INFO - zz500 is finished\n",
"2018-03-2
8 12:47:13,124
- ALPHA_MIND - INFO - zz800 is finished\n",
"2018-03-2
8 12:47:20,586
- ALPHA_MIND - INFO - zz1000 is finished\n",
"2018-03-2
8 12:50:28,528
- ALPHA_MIND - INFO - ashare_ex is finished\n"
"2018-03-2
9 23:20:00,988
- ALPHA_MIND - INFO - sh50 is finished\n",
"2018-03-2
9 23:20:01,378
- ALPHA_MIND - INFO - hs300 is finished\n",
"2018-03-2
9 23:20:02,793
- ALPHA_MIND - INFO - zz500 is finished\n",
"2018-03-2
9 23:20:07,901
- ALPHA_MIND - INFO - zz800 is finished\n",
"2018-03-2
9 23:20:15,170
- ALPHA_MIND - INFO - zz1000 is finished\n",
"2018-03-2
9 23:23:37,330
- ALPHA_MIND - INFO - ashare_ex is finished\n"
]
}
],
...
...
@@ -458,21 +469,21 @@
" <tbody>\n",
" <tr>\n",
" <th>cvxpy</th>\n",
" <td>
13.26
</td>\n",
" <td>16
6.37
</td>\n",
" <td>
493.95
</td>\n",
" <td>
1,635.71
</td>\n",
" <td>
2,359.22
</td>\n",
" <td>
51,708.15
</td>\n",
" <td>
8.30
</td>\n",
" <td>16
4.79
</td>\n",
" <td>
620.38
</td>\n",
" <td>
2,280.32
</td>\n",
" <td>
3,124.51
</td>\n",
" <td>
87,652.78
</td>\n",
" </tr>\n",
" <tr>\n",
" <th>alphamind</th>\n",
" <td>
68.57
</td>\n",
" <td>
205.78
</td>\n",
" <td>
317.68
</td>\n",
" <td>
670.81
</td>\n",
" <td>
915.77
</td>\n",
" <td>
32,733.73
</td>\n",
" <td>
0.38
</td>\n",
" <td>
4.29
</td>\n",
" <td>
16.04
</td>\n",
" <td>
49.93
</td>\n",
" <td>
71.42
</td>\n",
" <td>
2,238.11
</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
...
...
@@ -480,8 +491,8 @@
],
"text/plain": [
" sh50 hs300 zz500 zz800 zz1000 ashare_ex\n",
"cvxpy
13.26 166.37 493.95 1,635.71 2,359.22 51,708.15
\n",
"alphamind
68.57 205.78 317.68 670.81 915.77 32,733.73
"
"cvxpy
8.30 164.79 620.38 2,280.32 3,124.51 87,652.78
\n",
"alphamind
0.38 4.29 16.04 49.93 71.42 2,238.11
"
]
},
"execution_count": 8,
...
...
@@ -497,27 +508,92 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"## 4. Mean - Variance 优化 (Box约束以及线性约束)"
"## 4. Mean - Variance 优化 (Box约束)\n",
"---------------"
]
},
{
"cell_type": "code",
"execution_count":
9
,
"execution_count":
null
,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"2018-03-28 12:50:29,489 - ALPHA_MIND - INFO - sh50 is finished\n",
"2018-03-28 12:50:30,295 - ALPHA_MIND - INFO - hs300 is finished\n",
"2018-03-28 12:50:33,286 - ALPHA_MIND - INFO - zz500 is finished\n",
"2018-03-28 12:50:39,842 - ALPHA_MIND - INFO - zz800 is finished\n",
"2018-03-28 12:50:55,691 - ALPHA_MIND - INFO - zz1000 is finished\n",
"2018-03-28 12:57:46,604 - ALPHA_MIND - INFO - ashare_ex is finished\n"
"2018-03-29 23:23:37,938 - ALPHA_MIND - INFO - sh50 is finished\n",
"2018-03-29 23:23:38,599 - ALPHA_MIND - INFO - hs300 is finished\n",
"2018-03-29 23:23:41,505 - ALPHA_MIND - INFO - zz500 is finished\n",
"2018-03-29 23:23:51,712 - ALPHA_MIND - INFO - zz800 is finished\n",
"2018-03-29 23:24:05,999 - ALPHA_MIND - INFO - zz1000 is finished\n"
]
}
],
"source": [
"df = pd.DataFrame(columns=u_names, index=['cvxpy', 'alphamind'])\n",
"number = 1\n",
"\n",
"for u_name, sample_data in zip(u_names, data_set):\n",
" all_styles = risk_styles + industry_styles + ['COUNTRY']\n",
" factor_data = sample_data['factor']\n",
" risk_cov = sample_data['risk_cov'][all_styles].values\n",
" risk_exposure = factor_data[all_styles].values\n",
" special_risk = factor_data.srisk.values\n",
" sec_cov = risk_exposure @ risk_cov @ risk_exposure.T / 10000 + np.diag(special_risk ** 2) / 10000\n",
" er = factor_data[factor].values\n",
" n = len(er)\n",
"\n",
" bm = np.zeros(n)\n",
" lbound = np.zeros(n)\n",
" ubound = np.ones(n) * 0.1\n",
"\n",
" status, y, x1 = mean_variance_builder(er, sec_cov, bm, lbound, ubound, None, None, lam=1)\n",
" elasped_time1 = timeit.timeit(\"mean_variance_builder(er, sec_cov, bm, lbound, ubound, None, None, lam=1)\",\n",
" number=number, globals=globals()) / number * 1000\n",
" \n",
" w = cvxpy.Variable(n)\n",
" risk = quad_form(w, sec_cov)\n",
" objective = cvxpy.Minimize(-w.T * er + 0.5 * risk)\n",
" constraints = [w >= lbound,\n",
" w <= ubound]\n",
" prob = cvxpy.Problem(objective, constraints)\n",
" prob.solve(solver='CVXOPT')\n",
" elasped_time2 = timeit.timeit(\"prob.solve(solver='CVXOPT')\",\n",
" number=number, globals=globals()) / number * 1000\n",
" \n",
" u1 = -x1 @ er + 0.5 * x1 @ sec_cov @ x1\n",
" x2 = np.array(w.value).flatten()\n",
" u2 = -x2 @ er + 0.5 * x2 @ sec_cov @ x2\n",
" \n",
" np.testing.assert_array_almost_equal(u1, u2, 4)\n",
"\n",
" df.loc['alphamind', u_name] = elasped_time1\n",
" df.loc['cvxpy', u_name] = elasped_time2\n",
" alpha_logger.info(f\"{u_name} is finished\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 5. Mean - Variance 优化 (Box约束以及线性约束)\n",
"----------------"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"df = pd.DataFrame(columns=u_names, index=['cvxpy', 'alphamind'])\n",
"number = 1\n",
...
...
@@ -568,72 +644,9 @@
},
{
"cell_type": "code",
"execution_count": 10,
"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>sh50</th>\n",
" <th>hs300</th>\n",
" <th>zz500</th>\n",
" <th>zz800</th>\n",
" <th>zz1000</th>\n",
" <th>ashare_ex</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>cvxpy</th>\n",
" <td>20.25</td>\n",
" <td>314.35</td>\n",
" <td>1,306.26</td>\n",
" <td>2,795.40</td>\n",
" <td>7,386.27</td>\n",
" <td>195,024.34</td>\n",
" </tr>\n",
" <tr>\n",
" <th>alphamind</th>\n",
" <td>21.20</td>\n",
" <td>41.34</td>\n",
" <td>60.28</td>\n",
" <td>91.30</td>\n",
" <td>77.67</td>\n",
" <td>868.86</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" sh50 hs300 zz500 zz800 zz1000 ashare_ex\n",
"cvxpy 20.25 314.35 1,306.26 2,795.40 7,386.27 195,024.34\n",
"alphamind 21.20 41.34 60.28 91.30 77.67 868.86"
]
},
"execution_count": 10,
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"outputs": [],
"source": [
"df"
]
...
...
@@ -642,28 +655,15 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"##
5
. 线性优化(带二次限制条件)\n",
"##
6
. 线性优化(带二次限制条件)\n",
"-------------------------"
]
},
{
"cell_type": "code",
"execution_count":
11
,
"execution_count":
null
,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"2018-03-28 12:57:47,308 - ALPHA_MIND - INFO - sh50 is finished\n",
"2018-03-28 12:57:48,181 - ALPHA_MIND - INFO - hs300 is finished\n",
"2018-03-28 12:57:51,075 - ALPHA_MIND - INFO - zz500 is finished\n",
"2018-03-28 12:58:05,881 - ALPHA_MIND - INFO - zz800 is finished\n",
"2018-03-28 12:58:19,775 - ALPHA_MIND - INFO - zz1000 is finished\n",
"2018-03-28 13:05:47,684 - ALPHA_MIND - INFO - ashare_ex is finished\n"
]
}
],
"outputs": [],
"source": [
"df = pd.DataFrame(columns=u_names, index=['cvxpy', 'alphamind'])\n",
"number = 1\n",
...
...
@@ -720,72 +720,9 @@
},
{
"cell_type": "code",
"execution_count": 12,
"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>sh50</th>\n",
" <th>hs300</th>\n",
" <th>zz500</th>\n",
" <th>zz800</th>\n",
" <th>zz1000</th>\n",
" <th>ashare_ex</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>cvxpy</th>\n",
" <td>23.83</td>\n",
" <td>360.10</td>\n",
" <td>1,261.50</td>\n",
" <td>9,555.63</td>\n",
" <td>6,260.97</td>\n",
" <td>212,776.88</td>\n",
" </tr>\n",
" <tr>\n",
" <th>alphamind</th>\n",
" <td>22.55</td>\n",
" <td>32.70</td>\n",
" <td>60.94</td>\n",
" <td>59.65</td>\n",
" <td>116.27</td>\n",
" <td>824.79</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" sh50 hs300 zz500 zz800 zz1000 ashare_ex\n",
"cvxpy 23.83 360.10 1,261.50 9,555.63 6,260.97 212,776.88\n",
"alphamind 22.55 32.70 60.94 59.65 116.27 824.79"
]
},
"execution_count": 12,
"execution_count": null,
"metadata": {},
"output_type": "execute_result"
}
],
"outputs": [],
"source": [
"df"
]
...
...
xgboost
@
a187ed6c
Subproject commit
bf4367184164e593cd2856ef38f8dd4f8cc76999
Subproject commit
a187ed6c8f3aa40b47d5be80667cbbe6a6fd563d
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment