This commit is contained in:
2026-01-02 00:26:49 +08:00
parent 11e585b71b
commit 2d265949d7
19 changed files with 2169 additions and 123 deletions
+13
View File
@@ -0,0 +1,13 @@
gross_margin = divide(fnd6_newqeventv110_spceepsq, fnd6_newqeventv110_spcedq)
industry_zscore = group_zscore(gross_margin, group_sw)
zscore_trend = ts_regression(industry_zscore, ts_step(1), 4, 0, 0)
revenue_growth = ts_delta(fnd6_newqeventv110_spcedq, 4)
signal = if_else(revenue_growth >= 0, zscore_trend, 0)
ranked_signal = rank(signal)
final_alpha = subtract(ranked_signal, 0.5)
+19
View File
@@ -0,0 +1,19 @@
divide(fnd6_spce, fnd6_newqv1300_spceepsq)
group_zscore(divide(fnd6_spce, fnd6_newqv1300_spceepsq),申万行业分类)
ts_decay_linear(group_zscore(divide(fnd6_spce, fnd6_newqv1300_spceepsq),申万行业分类),4)
sign(ts_decay_linear(group_zscore(divide(fnd6_spce, fnd6_newqv1300_spceepsq),申万行业分类),4))
rank(ts_decay_linear(group_zscore(divide(fnd6_spce, fnd6_newqv1300_spceepsq),申万行业分类),4))
if_else(fnd6_newqv1300_spceepsq >= 0, ts_decay_linear(group_zscore(divide(fnd6_spce, fnd6_newqv1300_spceepsq),申万行业分类),4), NaN)
multiply(sign(ts_decay_linear(group_zscore(divide(fnd6_spce, fnd6_newqv1300_spceepsq),申万行业分类),4)), rank(ts_decay_linear(group_zscore(divide(fnd6_spce, fnd6_newqv1300_spceepsq),申万行业分类),4)))
winsorize(ts_decay_linear(group_zscore(divide(fnd6_spce, fnd6_newqv1300_spceepsq),申万行业分类),4),4)
group_rank(ts_decay_linear(group_zscore(divide(fnd6_spce, fnd6_newqv1300_spceepsq),申万行业分类),4),申万行业分类)
normalize(ts_decay_linear(group_zscore(divide(fnd6_spce, fnd6_newqv1300_spceepsq),申万行业分类),4))
+60
View File
@@ -0,0 +1,60 @@
gross_margin = divide(fnd6_acdo, fnd6_newqeventv110_spcepd12)
industry_zscore = group_zscore(gross_margin, swsector)
slope = ts_decay_linear(industry_zscore, 4)
alpha_raw = if_else(industry_zscore > 0, reverse(slope), slope)
gross_margin = divide(fnd6_acdo, fnd6_newqeventv110_spcepd12)
industry_zscore = group_zscore(gross_margin, swsector)
slope = ts_decay_linear(industry_zscore, 4)
alpha_raw = multiply(slope, reverse(industry_zscore))
alpha = rank(alpha_raw)
gross_margin = divide(fnd6_acdo, fnd6_newqeventv110_spcepd12)
industry_zscore = group_zscore(gross_margin, swsector)
slope = ts_decay_linear(industry_zscore, 4)
signal = if_else(slope > 0, 1, if_else(slope < 0, -1, 0))
alpha = multiply(signal, industry_zscore)
gross_margin = divide(fnd6_acdo, fnd6_newqeventv110_spcepd12)
industry_zscore = group_zscore(gross_margin, swsector)
slope = ts_decay_linear(industry_zscore, 4)
alpha_raw = ts_zscore(slope, 8)
alpha = reverse(alpha_raw)
gross_margin = divide(fnd6_acdo, fnd6_newqeventv110_spcepd12)
industry_zscore = group_zscore(gross_margin, swsector)
slope = ts_decay_linear(industry_zscore, 4)
combined_score = add(industry_zscore, slope)
alpha = rank(combined_score)
gross_margin = divide(fnd6_acdo, fnd6_newqeventv110_spcepd12)
industry_zscore = group_zscore(gross_margin, swsector)
slope = ts_decay_linear(industry_zscore, 4)
alpha_raw = multiply(industry_zscore, slope)
alpha_rank = rank(alpha_raw)
alpha = subtract(alpha_rank, 0.5)
gross_margin = divide(fnd6_acdo, fnd6_newqeventv110_spcepd12)
industry_zscore = group_zscore(gross_margin, swsector)
slope = ts_decay_linear(industry_zscore, 4)
trend_strength = ts_std_dev(slope, 4)
alpha = multiply(slope, trend_strength)
gross_margin = divide(fnd6_acdo, fnd6_newqeventv110_spcepd12)
industry_zscore = group_zscore(gross_margin, swsector)
slope = ts_decay_linear(industry_zscore, 4)
baseline = ts_mean(industry_zscore, 8)
alpha_raw = subtract(slope, baseline)
alpha = rank(alpha_raw)
gross_margin = divide(fnd6_acdo, fnd6_newqeventv110_spcepd12)
industry_zscore = group_zscore(gross_margin, swsector)
slope = ts_decay_linear(industry_zscore, 4)
pos_alpha = if_else(industry_zscore <= 0, reverse(slope), multiply(slope, -1))
alpha = rank(pos_alpha)
gross_margin = divide(fnd6_acdo, fnd6_newqeventv110_spcepd12)
industry_zscore = group_zscore(gross_margin, swsector)
slope = ts_decay_linear(industry_zscore, 4)
raw_signal = if_else(industry_zscore > 0, if_else(slope < 0, 1, -1), if_else(slope > 0, 1, -1))
alpha = multiply(raw_signal, industry_zscore)
+19
View File
@@ -0,0 +1,19 @@
divide(fnd6_spce, fnd6_newqeventv110_spceepsq)
group_zscore(divide(fnd6_spce, fnd6_newqeventv110_spceepsq), group=申万行业)
ts_decay_linear(group_zscore(divide(fnd6_spce, fnd6_newqeventv110_spceepsq), group=申万行业), 4)
sign(ts_decay_linear(group_zscore(divide(fnd6_spce, fnd6_newqeventv110_spceepsq), group=申万行业), 4))
multiply(sign(ts_decay_linear(group_zscore(divide(fnd6_spce, fnd6_newqeventv110_spceepsq), group=申万行业), 4)), rank(ts_decay_linear(group_zscore(divide(fnd6_spce, fnd6_newqeventv110_spceepsq), group=申万行业), 4)))
if_else(greater_equal(fnd6_newqeventv110_spceepsq, 0), multiply(sign(ts_decay_linear(group_zscore(divide(fnd6_spce, fnd6_newqeventv110_spceepsq), group=申万行业), 4)), rank(ts_decay_linear(group_zscore(divide(fnd6_spce, fnd6_newqeventv110_spceepsq), group=申万行业), 4))), 0)
ts_decay_linear(group_zscore(divide(fnd6_spce, fnd6_newqeventv110_spceepsq), group=申万行业), 4, dense=false)
if_else(greater_equal(ts_delta(fnd6_newqeventv110_spceepsq, 1), 0), multiply(sign(ts_decay_linear(group_zscore(divide(fnd6_spce, fnd6_newqeventv110_spceepsq), group=申万行业), 4)), rank(ts_decay_linear(group_zscore(divide(fnd6_spce, fnd6_newqeventv110_spceepsq), group=申万行业), 4))), 0)
winsorize(ts_decay_linear(group_zscore(divide(fnd6_spce, fnd6_newqeventv110_spceepsq), group=申万行业), 4), std=3)
normalize(multiply(sign(ts_decay_linear(group_zscore(divide(fnd6_spce, fnd6_newqeventv110_spceepsq), group=申万行业), 4)), rank(ts_decay_linear(group_zscore(divide(fnd6_spce, fnd6_newqeventv110_spceepsq), group=申万行业), 4))), useStd=true)