Skip to content

Commit a3a1f02

Browse files
authored
加速了qlib158的计算
现在大约需要160s
1 parent 1d959d4 commit a3a1f02

File tree

1 file changed

+13
-26
lines changed

1 file changed

+13
-26
lines changed

scutquant/alpha.py

Lines changed: 13 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1180,6 +1180,17 @@ def qlib158(data: pd.DataFrame, normalize: bool = False, fill: bool = False, win
11801180
parallel_result = Parallel(n_jobs=n_jobs)(delayed(func)(*args) for func, args in tasks)
11811181
parallel_df = pd.concat(parallel_result, axis=1)
11821182

1183+
task2 = [(MA(c_group, windows).get_factor_value, (normalize, fill)),
1184+
(STD(c_group, windows).get_factor_value, (normalize, fill)),
1185+
(MAX(c_group, windows).get_factor_value, (normalize, fill)),
1186+
(MIN(c_group, windows).get_factor_value, (normalize, fill)),
1187+
(QTLU(c_group, windows).get_factor_value, (normalize, fill)),
1188+
(QTLD(c_group, windows).get_factor_value, (normalize, fill))]
1189+
parallel_result2 = Parallel(n_jobs=n_jobs)(delayed(func)(*args) for func, args in task2)
1190+
parallel_df2 = pd.concat(parallel_result2, axis=1)
1191+
for c in parallel_df2.columns:
1192+
parallel_df2[c] /= price
1193+
11831194
OPEN = DELAY(o_group, periods=[1, 2, 3, 4, 5]).get_factor_value(normalize=normalize, handle_nan=fill)
11841195
OPEN.columns = ["open" + str(w) for w in range(1, 6)]
11851196
for c in OPEN.columns:
@@ -1215,14 +1226,6 @@ def qlib158(data: pd.DataFrame, normalize: bool = False, fill: bool = False, win
12151226
for c in delta.columns:
12161227
delta[c] /= price
12171228

1218-
ma = MA(c_group, periods=windows).get_factor_value(normalize=normalize, handle_nan=fill)
1219-
for c in ma.columns:
1220-
ma[c] /= price
1221-
1222-
std = STD(c_group, periods=windows).get_factor_value(normalize=normalize, handle_nan=fill)
1223-
for c in std.columns:
1224-
std[c] /= price
1225-
12261229
r2 = REGRESSION(data, "open", "close", windows, rettype=4).get_factor_value(normalize=normalize, handle_nan=fill)
12271230
r2.columns = ["rsqr" + str(w) for w in windows]
12281231

@@ -1231,22 +1234,6 @@ def qlib158(data: pd.DataFrame, normalize: bool = False, fill: bool = False, win
12311234
for c in resi.columns:
12321235
resi[c] /= price
12331236

1234-
cmax = MAX(c_group, windows).get_factor_value(normalize=normalize, handle_nan=fill)
1235-
for c in cmax.columns:
1236-
cmax[c] /= price
1237-
1238-
cmin = MIN(c_group, windows).get_factor_value(normalize=normalize, handle_nan=fill)
1239-
for c in cmin.columns:
1240-
cmin[c] /= price
1241-
1242-
qtlu = QTLU(c_group, windows).get_factor_value(normalize=normalize, handle_nan=fill)
1243-
for c in qtlu.columns:
1244-
qtlu[c] /= price
1245-
1246-
qtld = QTLD(c_group, windows).get_factor_value(normalize=normalize, handle_nan=fill)
1247-
for c in qtld.columns:
1248-
qtld[c] /= price
1249-
12501237
vma = MA(v_group, windows).get_factor_value(normalize=normalize, handle_nan=fill)
12511238
vma.columns = ["vma" + str(w) for w in windows]
12521239
for c in vma.columns:
@@ -1263,6 +1250,6 @@ def qlib158(data: pd.DataFrame, normalize: bool = False, fill: bool = False, win
12631250
vsumn = SUMN(data["volume"], windows).get_factor_value(normalize=normalize, handle_nan=fill)
12641251
vsumn.columns = ["vsumn" + str(w) for w in windows]
12651252

1266-
features = pd.concat([OPEN, CLOSE, HIGH, LOW, VOLUME, AMOUNT, parallel_df, delta, ma, std, r2,
1267-
resi, cmax, cmin, qtlu, qtld, vma, vstd, vsump, vsumn], axis=1)
1253+
features = pd.concat([OPEN, CLOSE, HIGH, LOW, VOLUME, AMOUNT, parallel_df, delta, r2,
1254+
resi, parallel_df2, vma, vstd, vsump, vsumn], axis=1)
12681255
return features

0 commit comments

Comments
 (0)