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
+39
View File
@@ -0,0 +1,39 @@
ts_corr(ts_backfill(fscore_total,44), ts_backfill(divide(fnd6_spce,add(call_breakeven_120,put_breakeven_120)),44),528)
ts_corr(ts_backfill(ts_delta(fscore_total,132),44), ts_backfill(subtract(fnd6_spce,divide(add(call_breakeven_120,put_breakeven_120),2)),44),792)
ts_corr(ts_backfill(ts_zscore(fscore_total,22),66), ts_backfill(ts_zscore(fnd6_spce,66),66),756)
ts_corr(ts_backfill(ts_rank(fscore_total,22),66), ts_backfill(ts_rank(fnd6_spce,66),66),504)
ts_corr(ts_backfill(multiply(sign(ts_delta(fscore_total,66)),sqrt(abs(ts_delta(fscore_total,66)))),66), ts_backfill(divide(fnd6_spce,call_breakeven_120),66),630)
ts_corr(ts_backfill(ts_sum(fscore_total,66),66), ts_backfill(ts_sum(fnd6_spce,66),66),1008)
ts_corr(ts_backfill(ts_mean(fscore_total,44),66), ts_backfill(ts_mean(fnd6_spce,44),66),880)
ts_corr(ts_backfill(subtract(fscore_total,ts_delay(fscore_total,132)),44), ts_backfill(subtract(fnd6_spce,ts_delay(fnd6_spce,132)),44),660)
ts_corr(ts_backfill(ts_regression(fscore_total,ts_step(1),66,0,0),66), ts_backfill(ts_regression(fnd6_spce,ts_step(1),66,0,0),66),924)
ts_corr(ts_backfill(ts_decay_linear(fscore_total,44),66), ts_backfill(ts_decay_linear(fnd6_spce,44),66),572)
ts_corr(ts_backfill(group_neutralize(fscore_total,top1000),44), ts_backfill(group_neutralize(divide(fnd6_spce,call_breakeven_120),top1000),44),616)
ts_corr(ts_backfill(ts_scale(fscore_total,44),44), ts_backfill(ts_scale(fnd6_spce,44),44),704)
ts_corr(ts_backfill(ts_av_diff(fscore_total,44),44), ts_backfill(ts_av_diff(fnd6_spce,44),44),528)
ts_corr(ts_backfill(ts_std_dev(fscore_total,22),66), ts_backfill(ts_std_dev(fnd6_spce,22),66),792)
ts_corr(ts_backfill(if_else(ts_delta(fscore_total,22)>0,ts_delta(fscore_total,22),0),66), ts_backfill(if_else(ts_delta(fnd6_spce,22)>0,ts_delta(fnd6_spce,22),0),66),504)
ts_corr(ts_backfill(ts_product(fscore_total,22),66), ts_backfill(ts_product(fnd6_spce,22),66),396)
ts_corr(ts_backfill(divide(ts_delta(fscore_total,22),ts_std_dev(fscore_total,66)),66), ts_backfill(divide(ts_delta(fnd6_spce,22),ts_std_dev(fnd6_spce,66)),66),840)
ts_corr(ts_backfill(signed_power(ts_delta(fscore_total,44),0.5),66), ts_backfill(signed_power(ts_delta(fnd6_spce,44),0.5),66),660)
ts_corr(ts_backfill(add(ts_zscore(fscore_total,22),ts_rank(fscore_total,22)),44), ts_backfill(add(ts_zscore(fnd6_spce,22),ts_rank(fnd6_spce,22)),44),880)
ts_corr(ts_backfill(subtract(ts_zscore(fscore_total,44),ts_delay(ts_zscore(fscore_total,44),22)),44), ts_backfill(subtract(ts_zscore(fnd6_spce,44),ts_delay(ts_zscore(fnd6_spce,44),22)),44),616)
+39
View File
@@ -0,0 +1,39 @@
ts_corr(ts_backfill(fscore_momentum,66), ts_backfill(fscore_value,66),756)
ts_corr(ts_backfill(fscore_momentum,50), ts_backfill(fscore_value,50),756)
ts_corr(ts_backfill(fscore_momentum,80), ts_backfill(fscore_value,80),756)
ts_corr(ts_backfill(fscore_momentum,66), ts_backfill(fscore_value,66),500)
ts_corr(ts_backfill(fscore_momentum,66), ts_backfill(fscore_value,66),1000)
ts_corr(ts_backfill(fscore_momentum,66), ts_backfill(fscore_value,66),756) * ts_std_dev(fscore_momentum,66)
ts_corr(ts_backfill(fscore_momentum,66), ts_backfill(fscore_value,66),756) * ts_std_dev(fscore_value,66)
ts_corr(ts_backfill(fscore_momentum,66), ts_backfill(fscore_value,66),756) * ts_zscore(fscore_momentum,66)
ts_corr(ts_backfill(fscore_momentum,66), ts_backfill(fscore_value,66),756) * ts_zscore(fscore_value,66)
group_neutralize(ts_corr(ts_backfill(fscore_momentum,66), ts_backfill(fscore_value,66),756), pv13_h_min2_focused_sector)
group_neutralize(ts_corr(ts_backfill(fscore_momentum,66), ts_backfill(fscore_value,66),756), pv13_h_min24_500_sector)
group_neutralize(ts_corr(ts_backfill(fscore_momentum,66), ts_backfill(fscore_value,66),756), pv13_h_min22_1000_sector)
ts_corr(ts_backfill(fscore_momentum,66), ts_backfill(fscore_value,66),756) * if_else(ts_count_nans(fscore_momentum,66) > 0, 0, 1)
ts_corr(ts_backfill(fscore_momentum,66), ts_backfill(fscore_value,66),756) * if_else(ts_count_nans(fscore_value,66) > 0, 0, 1)
ts_corr(ts_backfill(fscore_momentum,66), ts_backfill(fscore_value,66),756) * sign(ts_delta(fscore_momentum,1))
ts_corr(ts_backfill(fscore_momentum,66), ts_backfill(fscore_value,66),756) * sign(ts_delta(fscore_value,1))
ts_corr(ts_backfill(fscore_momentum,66), ts_backfill(fscore_value,66),756) * ts_rank(fscore_momentum,66)
ts_corr(ts_backfill(fscore_momentum,66), ts_backfill(fscore_value,66),756) * ts_rank(fscore_value,66)
ts_corr(ts_backfill(fscore_momentum,66), ts_backfill(fscore_value,66),756) * winsorize(ts_delta(fscore_momentum,66),4)
ts_corr(ts_backfill(fscore_momentum,66), ts_backfill(fscore_value,66),756) * winsorize(ts_delta(fscore_value,66),4)
+39
View File
@@ -0,0 +1,39 @@
ts_sum(subtract(implied_volatility_call_120, implied_volatility_put_90), 10)
group_neutralize(ts_sum(subtract(implied_volatility_call_120, implied_volatility_put_90), 10), group)
winsorize(ts_sum(subtract(implied_volatility_call_120, implied_volatility_put_90), 10), 3)
if_else(ts_std_dev(subtract(implied_volatility_call_120, implied_volatility_put_90), 10) > 10, 0, ts_sum(subtract(implied_volatility_call_120, implied_volatility_put_90), 10))
ts_zscore(ts_sum(subtract(implied_volatility_call_120, implied_volatility_put_90), 10), 20)
ts_rank(ts_sum(subtract(implied_volatility_call_120, implied_volatility_put_90), 10), 20)
scale(ts_sum(subtract(implied_volatility_call_120, implied_volatility_put_90), 10))
scale(group_neutralize(ts_sum(subtract(implied_volatility_call_120, implied_volatility_put_90), 10), group))
scale(group_neutralize(ts_zscore(ts_sum(subtract(implied_volatility_call_120, implied_volatility_put_90), 10), 20), group))
winsorize(group_neutralize(ts_zscore(ts_sum(subtract(implied_volatility_call_120, implied_volatility_put_90), 10), 20), group), 3)
ts_sum(subtract(implied_volatility_call_120, implied_volatility_put_90), 5)
ts_sum(subtract(implied_volatility_call_120, implied_volatility_put_90), 15)
ts_sum(subtract(implied_volatility_call_120, ts_mean(implied_volatility_put_90, 5)), 10)
ts_sum(subtract(ts_mean(implied_volatility_call_120, 5), implied_volatility_put_90), 10)
ts_sum(ts_delta(subtract(implied_volatility_call_120, implied_volatility_put_90), 1), 10)
ts_sum(ts_zscore(subtract(implied_volatility_call_120, implied_volatility_put_90), 10), 10)
ts_sum(ts_rank(subtract(implied_volatility_call_120, implied_volatility_put_90), 10), 10)
ts_sum(ts_scale(subtract(implied_volatility_call_120, implied_volatility_put_90), 5), 10)
ts_sum(divide(subtract(implied_volatility_call_120, implied_volatility_put_90), ts_std_dev(implied_volatility_call_120, 10)), 10)
ts_sum(ts_backfill(subtract(implied_volatility_call_120, implied_volatility_put_90), 5), 10)
+20
View File
@@ -0,0 +1,20 @@
ts_sum(winsorize(subtract(implied_volatility_call_120, implied_volatility_put_90), std=3), 10)
ts_zscore(subtract(implied_volatility_call_120, implied_volatility_put_90), 10)
group_neutralize(ts_sum(subtract(implied_volatility_call_120, implied_volatility_put_90), 10), "subindustry")
rank(ts_sum(winsorize(subtract(implied_volatility_call_120, implied_volatility_put_90), std=4), 10))
ts_rank(subtract(implied_volatility_call_120, implied_volatility_put_90), 10)
ts_scale(subtract(implied_volatility_call_120, implied_volatility_put_90), 10)
ts_av_diff(subtract(implied_volatility_call_120, implied_volatility_put_90), 10)
hump(ts_sum(subtract(implied_volatility_call_120, implied_volatility_put_90), 10), hump=0.02)
ts_decay_linear(subtract(implied_volatility_call_120, implied_volatility_put_90), 10)
group_zscore(ts_sum(subtract(implied_volatility_call_120, implied_volatility_put_90), 10), "subindustry")
normalize(ts_sum(subtract(implied_volatility_call_120, implied_volatility_put_90), 10), useStd=true)
ts_std_dev(subtract(implied_volatility_call_120, implied_volatility_put_90), 10)
multiply(ts_sum(subtract(implied_volatility_call_120, implied_volatility_put_90), 10), sign(ts_delta(implied_volatility_call_120, 1)))
rank(ts_zscore(subtract(implied_volatility_call_120, implied_volatility_put_90), 10))
ts_quantile(subtract(implied_volatility_call_120, implied_volatility_put_90), 10, driver="uniform")
winsorize(ts_sum(subtract(implied_volatility_call_120, implied_volatility_put_90), 10), std=3.5)
group_scale(ts_sum(subtract(implied_volatility_call_120, implied_volatility_put_90), 10), "subindustry")
ts_correlation(subtract(implied_volatility_call_120, implied_volatility_put_90), implied_volatility_call_60, 10)
ts_arg_max(subtract(implied_volatility_call_120, implied_volatility_put_90), 10)
ts_delta(ts_sum(winsorize(subtract(implied_volatility_call_120, implied_volatility_put_90), std=4), 10), 1)
+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)