From 2950e9d2cefad5e0710550bbc9bbf4c49fb5b524 Mon Sep 17 00:00:00 2001 From: Jack Date: Sun, 4 Jan 2026 16:30:57 +0800 Subject: [PATCH] ++ --- .../{ => 2025}/2025-12-02/164547.txt | 0 .../{ => 2025}/2025-12-02/175402.txt | 0 .../{ => 2025}/2025-12-03/084615.txt | 0 .../{ => 2025}/2025-12-03/101800.txt | 0 .../{ => 2025}/2025-12-03/141439.txt | 0 .../{ => 2025}/2025-12-04/103341.txt | 0 .../{ => 2025}/2025-12-08/081835.txt | 0 .../{ => 2025}/2025-12-08/090705.txt | 0 .../{ => 2025}/2025-12-08/092309.txt | 0 .../{ => 2025}/2025-12-08/095105.txt | 0 .../{ => 2025}/2025-12-08/100004.txt | 0 .../{ => 2025}/2025-12-09/094337.txt | 0 .../{ => 2025}/2025-12-11/173635.txt | 0 .../{ => 2025}/2025-12-11/175755.txt | 0 .../{ => 2025}/2025-12-12/154831.txt | 0 .../{ => 2025}/2025-12-12/155502.txt | 0 .../{ => 2025}/2025-12-12/155552.txt | 0 .../{ => 2025}/2025-12-12/161043.txt | 0 .../{ => 2025}/2025-12-13/162739.txt | 0 .../{ => 2025}/2025-12-13/163313.txt | 0 .../{ => 2025}/2025-12-13/163351.txt | 0 .../{ => 2025}/2025-12-13/163500.txt | 0 .../{ => 2025}/2025-12-13/163835.txt | 0 .../{ => 2025}/2025-12-15/104029.txt | 0 .../{ => 2025}/2025-12-15/104255.txt | 0 .../{ => 2025}/2025-12-15/104334.txt | 0 .../{ => 2025}/2025-12-15/104435.txt | 0 .../{ => 2025}/2025-12-15/104756.txt | 0 .../{ => 2025}/2025-12-16/110013.txt | 0 .../{ => 2025}/2025-12-16/110049.txt | 0 .../{ => 2025}/2025-12-16/110056.txt | 0 .../{ => 2025}/2025-12-16/110120.txt | 0 .../{ => 2025}/2025-12-16/110532.txt | 0 .../{ => 2025}/2025-12-17/105528.txt | 0 .../{ => 2025}/2025-12-17/105621.txt | 0 .../{ => 2025}/2025-12-17/105631.txt | 0 .../{ => 2025}/2025-12-17/105652.txt | 0 .../{ => 2025}/2025-12-17/110226.txt | 0 .../{ => 2025}/2025-12-18/091435.txt | 0 .../{ => 2025}/2025-12-18/091648.txt | 0 .../{ => 2025}/2025-12-18/091701.txt | 0 .../{ => 2025}/2025-12-18/091708.txt | 0 .../{ => 2025}/2025-12-18/091952.txt | 0 .../{ => 2025}/2025-12-19/111037.txt | 0 .../{ => 2025}/2025-12-19/111515.txt | 0 .../{ => 2025}/2025-12-19/111531.txt | 0 .../{ => 2025}/2025-12-19/111603.txt | 0 .../{ => 2025}/2025-12-22/154449.txt | 0 .../{ => 2025}/2025-12-22/154806.txt | 0 .../{ => 2025}/2025-12-22/154829.txt | 0 .../{ => 2025}/2025-12-22/154934.txt | 0 .../{ => 2025}/2025-12-22/155207.txt | 0 .../{ => 2025}/2025-12-23/161653.txt | 0 .../{ => 2025}/2025-12-24/185241.txt | 0 .../{ => 2025}/2025-12-25/155254.txt | 0 .../{ => 2025}/2025-12-25/155311.txt | 0 .../{ => 2025}/2025-12-25/165218.txt | 0 .../{ => 2025}/2025-12-25/165514.txt | 0 .../{ => 2025}/2025-12-28/154826.txt | 0 .../{ => 2025}/2025-12-28/154918.txt | 0 .../{ => 2025}/2025-12-28/195436.txt | 0 .../{ => 2025}/2025-12-28/195522.txt | 0 .../{ => 2025}/2025-12-29/102728.txt | 0 .../{ => 2025}/2025-12-29/151730.txt | 0 .../{ => 2025}/2025-12-30/153523.txt | 0 .../{ => 2025}/2025-12-31/153508.txt | 0 .../{2026-01-01 => 2026/01/01}/161032.txt | 0 .../{2026-01-01 => 2026/01/01}/161057.txt | 0 .../{2026-01-01 => 2026/01/01}/164625.txt | 0 .../{2026-01-01 => 2026/01/01}/164654.txt | 0 .../{2026-01-02 => 2026/01/02}/173513.txt | 0 generated_alpha/2026/01/03/162703.txt | 39 ++++ generated_alpha/2026/01/03/162729.txt | 39 ++++ generated_alpha/2026/01/04/093236.txt | 25 ++ generated_alpha/2026/01/04/093304.txt | 39 ++++ generated_alpha/2026/01/04/153654.txt | 20 ++ generated_alpha/2026/01/04/153729.txt | 39 ++++ generated_alpha/2026/01/04/161557.txt | 39 ++++ generated_alpha/2026/01/04/161726.txt | 39 ++++ main.py | 58 +++-- .../manual_prompt_20251212140534.txt | 0 .../manual_prompt_20251212150134.txt | 0 .../manual_prompt_20251212154430.txt | 0 .../manual_prompt_20251213162426.txt | 0 .../manual_prompt_20251213162445.txt | 0 .../manual_prompt_20251215103723.txt | 0 .../manual_prompt_20251216105934.txt | 0 .../manual_prompt_20251217105447.txt | 0 .../manual_prompt_20251217105528.txt | 0 .../manual_prompt_20251217105621.txt | 0 .../manual_prompt_20251217105631.txt | 0 .../manual_prompt_20251217105652.txt | 0 .../manual_prompt_20251218091404.txt | 0 .../manual_prompt_20251218091436.txt | 0 .../manual_prompt_20251218091649.txt | 0 .../manual_prompt_20251218091701.txt | 0 .../manual_prompt_20251218091709.txt | 0 .../manual_prompt_20251219111002.txt | 0 .../manual_prompt_20251219111038.txt | 0 .../manual_prompt_20251219111516.txt | 0 .../manual_prompt_20251219111532.txt | 0 .../manual_prompt_20251219111603.txt | 0 .../manual_prompt_20251222154203.txt | 0 .../manual_prompt_20251222154449.txt | 0 .../manual_prompt_20251222154806.txt | 0 .../manual_prompt_20251222154829.txt | 0 .../manual_prompt_20251222154935.txt | 0 .../manual_prompt_20251223161120.txt | 0 .../manual_prompt_20251223161230.txt | 0 .../manual_prompt_20251224184908.txt | 0 .../manual_prompt_20251225155238.txt | 0 .../manual_prompt_20251225165135.txt | 0 .../manual_prompt_20251227164318.txt | 0 .../manual_prompt_20251228152413.txt | 0 .../manual_prompt_20251228154538.txt | 0 .../manual_prompt_20251228154739.txt | 0 .../manual_prompt_20251228195359.txt | 0 .../manual_prompt_20251229102657.txt | 0 .../manual_prompt_20251229151718.txt | 0 .../manual_prompt_20251230152911.txt | 0 .../manual_prompt_20251230153508.txt | 0 .../manual_prompt_20251231153457.txt | 0 .../01/01}/manual_prompt_20260101150133.txt | 0 .../01/01}/manual_prompt_20260101161024.txt | 0 .../01/01}/manual_prompt_20260101164547.txt | 0 .../01/02}/manual_prompt_20260102145021.txt | 0 .../01/02}/manual_prompt_20260102173412.txt | 0 .../01/03/manual_prompt_20260103162649.txt | 218 ++++++++++++++++++ .../01/04/manual_prompt_20260104093229.txt | 192 +++++++++++++++ .../01/04/manual_prompt_20260104153645.txt | 194 ++++++++++++++++ .../01/04/manual_prompt_20260104161540.txt | 194 ++++++++++++++++ prepare_prompt/alpha_prompt.txt | 10 +- prepare_prompt/keys_text.txt | 2 +- 手动处理每天alpha.txt | 80 +++++-- 134 files changed, 1180 insertions(+), 47 deletions(-) rename generated_alpha/{ => 2025}/2025-12-02/164547.txt (100%) rename generated_alpha/{ => 2025}/2025-12-02/175402.txt (100%) rename generated_alpha/{ => 2025}/2025-12-03/084615.txt (100%) rename generated_alpha/{ => 2025}/2025-12-03/101800.txt (100%) rename generated_alpha/{ => 2025}/2025-12-03/141439.txt (100%) rename generated_alpha/{ => 2025}/2025-12-04/103341.txt (100%) rename generated_alpha/{ => 2025}/2025-12-08/081835.txt (100%) rename generated_alpha/{ => 2025}/2025-12-08/090705.txt (100%) rename generated_alpha/{ => 2025}/2025-12-08/092309.txt (100%) rename generated_alpha/{ => 2025}/2025-12-08/095105.txt (100%) rename generated_alpha/{ => 2025}/2025-12-08/100004.txt (100%) rename generated_alpha/{ => 2025}/2025-12-09/094337.txt (100%) rename generated_alpha/{ => 2025}/2025-12-11/173635.txt (100%) rename generated_alpha/{ => 2025}/2025-12-11/175755.txt (100%) rename generated_alpha/{ => 2025}/2025-12-12/154831.txt (100%) rename generated_alpha/{ => 2025}/2025-12-12/155502.txt (100%) rename generated_alpha/{ => 2025}/2025-12-12/155552.txt (100%) rename generated_alpha/{ => 2025}/2025-12-12/161043.txt (100%) rename generated_alpha/{ => 2025}/2025-12-13/162739.txt (100%) rename generated_alpha/{ => 2025}/2025-12-13/163313.txt (100%) rename generated_alpha/{ => 2025}/2025-12-13/163351.txt (100%) rename generated_alpha/{ => 2025}/2025-12-13/163500.txt (100%) rename generated_alpha/{ => 2025}/2025-12-13/163835.txt (100%) rename generated_alpha/{ => 2025}/2025-12-15/104029.txt (100%) rename generated_alpha/{ => 2025}/2025-12-15/104255.txt (100%) rename generated_alpha/{ => 2025}/2025-12-15/104334.txt (100%) rename generated_alpha/{ => 2025}/2025-12-15/104435.txt (100%) rename generated_alpha/{ => 2025}/2025-12-15/104756.txt (100%) rename generated_alpha/{ => 2025}/2025-12-16/110013.txt (100%) rename generated_alpha/{ => 2025}/2025-12-16/110049.txt (100%) rename generated_alpha/{ => 2025}/2025-12-16/110056.txt (100%) rename generated_alpha/{ => 2025}/2025-12-16/110120.txt (100%) rename generated_alpha/{ => 2025}/2025-12-16/110532.txt (100%) rename generated_alpha/{ => 2025}/2025-12-17/105528.txt (100%) rename generated_alpha/{ => 2025}/2025-12-17/105621.txt (100%) rename generated_alpha/{ => 2025}/2025-12-17/105631.txt (100%) rename generated_alpha/{ => 2025}/2025-12-17/105652.txt (100%) rename generated_alpha/{ => 2025}/2025-12-17/110226.txt (100%) rename generated_alpha/{ => 2025}/2025-12-18/091435.txt (100%) rename generated_alpha/{ => 2025}/2025-12-18/091648.txt (100%) rename generated_alpha/{ => 2025}/2025-12-18/091701.txt (100%) rename generated_alpha/{ => 2025}/2025-12-18/091708.txt (100%) rename generated_alpha/{ => 2025}/2025-12-18/091952.txt (100%) rename generated_alpha/{ => 2025}/2025-12-19/111037.txt (100%) rename generated_alpha/{ => 2025}/2025-12-19/111515.txt (100%) rename generated_alpha/{ => 2025}/2025-12-19/111531.txt (100%) rename generated_alpha/{ => 2025}/2025-12-19/111603.txt (100%) rename generated_alpha/{ => 2025}/2025-12-22/154449.txt (100%) rename generated_alpha/{ => 2025}/2025-12-22/154806.txt (100%) rename generated_alpha/{ => 2025}/2025-12-22/154829.txt (100%) rename generated_alpha/{ => 2025}/2025-12-22/154934.txt (100%) rename generated_alpha/{ => 2025}/2025-12-22/155207.txt (100%) rename generated_alpha/{ => 2025}/2025-12-23/161653.txt (100%) rename generated_alpha/{ => 2025}/2025-12-24/185241.txt (100%) rename generated_alpha/{ => 2025}/2025-12-25/155254.txt (100%) rename generated_alpha/{ => 2025}/2025-12-25/155311.txt (100%) rename generated_alpha/{ => 2025}/2025-12-25/165218.txt (100%) rename generated_alpha/{ => 2025}/2025-12-25/165514.txt (100%) rename generated_alpha/{ => 2025}/2025-12-28/154826.txt (100%) rename generated_alpha/{ => 2025}/2025-12-28/154918.txt (100%) rename generated_alpha/{ => 2025}/2025-12-28/195436.txt (100%) rename generated_alpha/{ => 2025}/2025-12-28/195522.txt (100%) rename generated_alpha/{ => 2025}/2025-12-29/102728.txt (100%) rename generated_alpha/{ => 2025}/2025-12-29/151730.txt (100%) rename generated_alpha/{ => 2025}/2025-12-30/153523.txt (100%) rename generated_alpha/{ => 2025}/2025-12-31/153508.txt (100%) rename generated_alpha/{2026-01-01 => 2026/01/01}/161032.txt (100%) rename generated_alpha/{2026-01-01 => 2026/01/01}/161057.txt (100%) rename generated_alpha/{2026-01-01 => 2026/01/01}/164625.txt (100%) rename generated_alpha/{2026-01-01 => 2026/01/01}/164654.txt (100%) rename generated_alpha/{2026-01-02 => 2026/01/02}/173513.txt (100%) create mode 100644 generated_alpha/2026/01/03/162703.txt create mode 100644 generated_alpha/2026/01/03/162729.txt create mode 100644 generated_alpha/2026/01/04/093236.txt create mode 100644 generated_alpha/2026/01/04/093304.txt create mode 100644 generated_alpha/2026/01/04/153654.txt create mode 100644 generated_alpha/2026/01/04/153729.txt create mode 100644 generated_alpha/2026/01/04/161557.txt create mode 100644 generated_alpha/2026/01/04/161726.txt rename manual_prompt/{ => 2025}/manual_prompt_20251212140534.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251212150134.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251212154430.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251213162426.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251213162445.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251215103723.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251216105934.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251217105447.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251217105528.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251217105621.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251217105631.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251217105652.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251218091404.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251218091436.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251218091649.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251218091701.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251218091709.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251219111002.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251219111038.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251219111516.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251219111532.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251219111603.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251222154203.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251222154449.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251222154806.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251222154829.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251222154935.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251223161120.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251223161230.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251224184908.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251225155238.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251225165135.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251227164318.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251228152413.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251228154538.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251228154739.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251228195359.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251229102657.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251229151718.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251230152911.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251230153508.txt (100%) rename manual_prompt/{ => 2025}/manual_prompt_20251231153457.txt (100%) rename manual_prompt/{ => 2026/01/01}/manual_prompt_20260101150133.txt (100%) rename manual_prompt/{ => 2026/01/01}/manual_prompt_20260101161024.txt (100%) rename manual_prompt/{ => 2026/01/01}/manual_prompt_20260101164547.txt (100%) rename manual_prompt/{ => 2026/01/02}/manual_prompt_20260102145021.txt (100%) rename manual_prompt/{ => 2026/01/02}/manual_prompt_20260102173412.txt (100%) create mode 100644 manual_prompt/2026/01/03/manual_prompt_20260103162649.txt create mode 100644 manual_prompt/2026/01/04/manual_prompt_20260104093229.txt create mode 100644 manual_prompt/2026/01/04/manual_prompt_20260104153645.txt create mode 100644 manual_prompt/2026/01/04/manual_prompt_20260104161540.txt diff --git a/generated_alpha/2025-12-02/164547.txt b/generated_alpha/2025/2025-12-02/164547.txt similarity index 100% rename from generated_alpha/2025-12-02/164547.txt rename to generated_alpha/2025/2025-12-02/164547.txt diff --git a/generated_alpha/2025-12-02/175402.txt b/generated_alpha/2025/2025-12-02/175402.txt similarity index 100% rename from generated_alpha/2025-12-02/175402.txt rename to generated_alpha/2025/2025-12-02/175402.txt diff --git a/generated_alpha/2025-12-03/084615.txt b/generated_alpha/2025/2025-12-03/084615.txt similarity index 100% rename from generated_alpha/2025-12-03/084615.txt rename to generated_alpha/2025/2025-12-03/084615.txt diff --git a/generated_alpha/2025-12-03/101800.txt b/generated_alpha/2025/2025-12-03/101800.txt similarity index 100% rename from generated_alpha/2025-12-03/101800.txt rename to generated_alpha/2025/2025-12-03/101800.txt diff --git a/generated_alpha/2025-12-03/141439.txt b/generated_alpha/2025/2025-12-03/141439.txt similarity index 100% rename from generated_alpha/2025-12-03/141439.txt rename to generated_alpha/2025/2025-12-03/141439.txt diff --git a/generated_alpha/2025-12-04/103341.txt b/generated_alpha/2025/2025-12-04/103341.txt similarity index 100% rename from generated_alpha/2025-12-04/103341.txt rename to generated_alpha/2025/2025-12-04/103341.txt diff --git a/generated_alpha/2025-12-08/081835.txt b/generated_alpha/2025/2025-12-08/081835.txt similarity index 100% rename from generated_alpha/2025-12-08/081835.txt rename to generated_alpha/2025/2025-12-08/081835.txt diff --git a/generated_alpha/2025-12-08/090705.txt b/generated_alpha/2025/2025-12-08/090705.txt similarity index 100% rename from generated_alpha/2025-12-08/090705.txt rename to generated_alpha/2025/2025-12-08/090705.txt diff --git a/generated_alpha/2025-12-08/092309.txt b/generated_alpha/2025/2025-12-08/092309.txt similarity index 100% rename from generated_alpha/2025-12-08/092309.txt rename to generated_alpha/2025/2025-12-08/092309.txt diff --git a/generated_alpha/2025-12-08/095105.txt b/generated_alpha/2025/2025-12-08/095105.txt similarity index 100% rename from generated_alpha/2025-12-08/095105.txt rename to generated_alpha/2025/2025-12-08/095105.txt diff --git a/generated_alpha/2025-12-08/100004.txt b/generated_alpha/2025/2025-12-08/100004.txt similarity index 100% rename from generated_alpha/2025-12-08/100004.txt rename to generated_alpha/2025/2025-12-08/100004.txt diff --git a/generated_alpha/2025-12-09/094337.txt b/generated_alpha/2025/2025-12-09/094337.txt similarity index 100% rename from generated_alpha/2025-12-09/094337.txt rename to generated_alpha/2025/2025-12-09/094337.txt diff --git a/generated_alpha/2025-12-11/173635.txt b/generated_alpha/2025/2025-12-11/173635.txt similarity index 100% rename from generated_alpha/2025-12-11/173635.txt rename to generated_alpha/2025/2025-12-11/173635.txt diff --git a/generated_alpha/2025-12-11/175755.txt b/generated_alpha/2025/2025-12-11/175755.txt similarity index 100% rename from generated_alpha/2025-12-11/175755.txt rename to generated_alpha/2025/2025-12-11/175755.txt diff --git a/generated_alpha/2025-12-12/154831.txt b/generated_alpha/2025/2025-12-12/154831.txt similarity index 100% rename from generated_alpha/2025-12-12/154831.txt rename to generated_alpha/2025/2025-12-12/154831.txt diff --git a/generated_alpha/2025-12-12/155502.txt b/generated_alpha/2025/2025-12-12/155502.txt similarity index 100% rename from generated_alpha/2025-12-12/155502.txt rename to generated_alpha/2025/2025-12-12/155502.txt diff --git a/generated_alpha/2025-12-12/155552.txt b/generated_alpha/2025/2025-12-12/155552.txt similarity index 100% rename from generated_alpha/2025-12-12/155552.txt rename to generated_alpha/2025/2025-12-12/155552.txt diff --git a/generated_alpha/2025-12-12/161043.txt b/generated_alpha/2025/2025-12-12/161043.txt similarity index 100% rename from generated_alpha/2025-12-12/161043.txt rename to generated_alpha/2025/2025-12-12/161043.txt diff --git a/generated_alpha/2025-12-13/162739.txt b/generated_alpha/2025/2025-12-13/162739.txt similarity index 100% rename from generated_alpha/2025-12-13/162739.txt rename to generated_alpha/2025/2025-12-13/162739.txt diff --git a/generated_alpha/2025-12-13/163313.txt b/generated_alpha/2025/2025-12-13/163313.txt similarity index 100% rename from generated_alpha/2025-12-13/163313.txt rename to generated_alpha/2025/2025-12-13/163313.txt diff --git a/generated_alpha/2025-12-13/163351.txt b/generated_alpha/2025/2025-12-13/163351.txt similarity index 100% rename from generated_alpha/2025-12-13/163351.txt rename to generated_alpha/2025/2025-12-13/163351.txt diff --git a/generated_alpha/2025-12-13/163500.txt b/generated_alpha/2025/2025-12-13/163500.txt similarity index 100% rename from generated_alpha/2025-12-13/163500.txt rename to generated_alpha/2025/2025-12-13/163500.txt diff --git a/generated_alpha/2025-12-13/163835.txt b/generated_alpha/2025/2025-12-13/163835.txt similarity index 100% rename from generated_alpha/2025-12-13/163835.txt rename to generated_alpha/2025/2025-12-13/163835.txt diff --git a/generated_alpha/2025-12-15/104029.txt b/generated_alpha/2025/2025-12-15/104029.txt similarity index 100% rename from generated_alpha/2025-12-15/104029.txt rename to generated_alpha/2025/2025-12-15/104029.txt diff --git a/generated_alpha/2025-12-15/104255.txt b/generated_alpha/2025/2025-12-15/104255.txt similarity index 100% rename from generated_alpha/2025-12-15/104255.txt rename to generated_alpha/2025/2025-12-15/104255.txt diff --git a/generated_alpha/2025-12-15/104334.txt b/generated_alpha/2025/2025-12-15/104334.txt similarity index 100% rename from generated_alpha/2025-12-15/104334.txt rename to generated_alpha/2025/2025-12-15/104334.txt diff --git a/generated_alpha/2025-12-15/104435.txt b/generated_alpha/2025/2025-12-15/104435.txt similarity index 100% rename from generated_alpha/2025-12-15/104435.txt rename to generated_alpha/2025/2025-12-15/104435.txt diff --git a/generated_alpha/2025-12-15/104756.txt b/generated_alpha/2025/2025-12-15/104756.txt similarity index 100% rename from generated_alpha/2025-12-15/104756.txt rename to generated_alpha/2025/2025-12-15/104756.txt diff --git a/generated_alpha/2025-12-16/110013.txt b/generated_alpha/2025/2025-12-16/110013.txt similarity index 100% rename from generated_alpha/2025-12-16/110013.txt rename to generated_alpha/2025/2025-12-16/110013.txt diff --git a/generated_alpha/2025-12-16/110049.txt b/generated_alpha/2025/2025-12-16/110049.txt similarity index 100% rename from generated_alpha/2025-12-16/110049.txt rename to generated_alpha/2025/2025-12-16/110049.txt diff --git a/generated_alpha/2025-12-16/110056.txt b/generated_alpha/2025/2025-12-16/110056.txt similarity index 100% rename from generated_alpha/2025-12-16/110056.txt rename to generated_alpha/2025/2025-12-16/110056.txt diff --git a/generated_alpha/2025-12-16/110120.txt b/generated_alpha/2025/2025-12-16/110120.txt similarity index 100% rename from generated_alpha/2025-12-16/110120.txt rename to generated_alpha/2025/2025-12-16/110120.txt diff --git a/generated_alpha/2025-12-16/110532.txt b/generated_alpha/2025/2025-12-16/110532.txt similarity index 100% rename from generated_alpha/2025-12-16/110532.txt rename to generated_alpha/2025/2025-12-16/110532.txt diff --git a/generated_alpha/2025-12-17/105528.txt b/generated_alpha/2025/2025-12-17/105528.txt similarity index 100% rename from generated_alpha/2025-12-17/105528.txt rename to generated_alpha/2025/2025-12-17/105528.txt diff --git a/generated_alpha/2025-12-17/105621.txt b/generated_alpha/2025/2025-12-17/105621.txt similarity index 100% rename from generated_alpha/2025-12-17/105621.txt rename to generated_alpha/2025/2025-12-17/105621.txt diff --git a/generated_alpha/2025-12-17/105631.txt b/generated_alpha/2025/2025-12-17/105631.txt similarity index 100% rename from generated_alpha/2025-12-17/105631.txt rename to generated_alpha/2025/2025-12-17/105631.txt diff --git a/generated_alpha/2025-12-17/105652.txt b/generated_alpha/2025/2025-12-17/105652.txt similarity index 100% rename from generated_alpha/2025-12-17/105652.txt rename to generated_alpha/2025/2025-12-17/105652.txt diff --git a/generated_alpha/2025-12-17/110226.txt b/generated_alpha/2025/2025-12-17/110226.txt similarity index 100% rename from generated_alpha/2025-12-17/110226.txt rename to generated_alpha/2025/2025-12-17/110226.txt diff --git a/generated_alpha/2025-12-18/091435.txt b/generated_alpha/2025/2025-12-18/091435.txt similarity index 100% rename from generated_alpha/2025-12-18/091435.txt rename to generated_alpha/2025/2025-12-18/091435.txt diff --git a/generated_alpha/2025-12-18/091648.txt b/generated_alpha/2025/2025-12-18/091648.txt similarity index 100% rename from generated_alpha/2025-12-18/091648.txt rename to generated_alpha/2025/2025-12-18/091648.txt diff --git a/generated_alpha/2025-12-18/091701.txt b/generated_alpha/2025/2025-12-18/091701.txt similarity index 100% rename from generated_alpha/2025-12-18/091701.txt rename to generated_alpha/2025/2025-12-18/091701.txt diff --git a/generated_alpha/2025-12-18/091708.txt b/generated_alpha/2025/2025-12-18/091708.txt similarity index 100% rename from generated_alpha/2025-12-18/091708.txt rename to generated_alpha/2025/2025-12-18/091708.txt diff --git a/generated_alpha/2025-12-18/091952.txt b/generated_alpha/2025/2025-12-18/091952.txt similarity index 100% rename from generated_alpha/2025-12-18/091952.txt rename to generated_alpha/2025/2025-12-18/091952.txt diff --git a/generated_alpha/2025-12-19/111037.txt b/generated_alpha/2025/2025-12-19/111037.txt similarity index 100% rename from generated_alpha/2025-12-19/111037.txt rename to generated_alpha/2025/2025-12-19/111037.txt diff --git a/generated_alpha/2025-12-19/111515.txt b/generated_alpha/2025/2025-12-19/111515.txt similarity index 100% rename from generated_alpha/2025-12-19/111515.txt rename to generated_alpha/2025/2025-12-19/111515.txt diff --git a/generated_alpha/2025-12-19/111531.txt b/generated_alpha/2025/2025-12-19/111531.txt similarity index 100% rename from generated_alpha/2025-12-19/111531.txt rename to generated_alpha/2025/2025-12-19/111531.txt diff --git a/generated_alpha/2025-12-19/111603.txt b/generated_alpha/2025/2025-12-19/111603.txt similarity index 100% rename from generated_alpha/2025-12-19/111603.txt rename to generated_alpha/2025/2025-12-19/111603.txt diff --git a/generated_alpha/2025-12-22/154449.txt b/generated_alpha/2025/2025-12-22/154449.txt similarity index 100% rename from generated_alpha/2025-12-22/154449.txt rename to generated_alpha/2025/2025-12-22/154449.txt diff --git a/generated_alpha/2025-12-22/154806.txt b/generated_alpha/2025/2025-12-22/154806.txt similarity index 100% rename from generated_alpha/2025-12-22/154806.txt rename to generated_alpha/2025/2025-12-22/154806.txt diff --git a/generated_alpha/2025-12-22/154829.txt b/generated_alpha/2025/2025-12-22/154829.txt similarity index 100% rename from generated_alpha/2025-12-22/154829.txt rename to generated_alpha/2025/2025-12-22/154829.txt diff --git a/generated_alpha/2025-12-22/154934.txt b/generated_alpha/2025/2025-12-22/154934.txt similarity index 100% rename from generated_alpha/2025-12-22/154934.txt rename to generated_alpha/2025/2025-12-22/154934.txt diff --git a/generated_alpha/2025-12-22/155207.txt b/generated_alpha/2025/2025-12-22/155207.txt similarity index 100% rename from generated_alpha/2025-12-22/155207.txt rename to generated_alpha/2025/2025-12-22/155207.txt diff --git a/generated_alpha/2025-12-23/161653.txt b/generated_alpha/2025/2025-12-23/161653.txt similarity index 100% rename from generated_alpha/2025-12-23/161653.txt rename to generated_alpha/2025/2025-12-23/161653.txt diff --git a/generated_alpha/2025-12-24/185241.txt b/generated_alpha/2025/2025-12-24/185241.txt similarity index 100% rename from generated_alpha/2025-12-24/185241.txt rename to generated_alpha/2025/2025-12-24/185241.txt diff --git a/generated_alpha/2025-12-25/155254.txt b/generated_alpha/2025/2025-12-25/155254.txt similarity index 100% rename from generated_alpha/2025-12-25/155254.txt rename to generated_alpha/2025/2025-12-25/155254.txt diff --git a/generated_alpha/2025-12-25/155311.txt b/generated_alpha/2025/2025-12-25/155311.txt similarity index 100% rename from generated_alpha/2025-12-25/155311.txt rename to generated_alpha/2025/2025-12-25/155311.txt diff --git a/generated_alpha/2025-12-25/165218.txt b/generated_alpha/2025/2025-12-25/165218.txt similarity index 100% rename from generated_alpha/2025-12-25/165218.txt rename to generated_alpha/2025/2025-12-25/165218.txt diff --git a/generated_alpha/2025-12-25/165514.txt b/generated_alpha/2025/2025-12-25/165514.txt similarity index 100% rename from generated_alpha/2025-12-25/165514.txt rename to generated_alpha/2025/2025-12-25/165514.txt diff --git a/generated_alpha/2025-12-28/154826.txt b/generated_alpha/2025/2025-12-28/154826.txt similarity index 100% rename from generated_alpha/2025-12-28/154826.txt rename to generated_alpha/2025/2025-12-28/154826.txt diff --git a/generated_alpha/2025-12-28/154918.txt b/generated_alpha/2025/2025-12-28/154918.txt similarity index 100% rename from generated_alpha/2025-12-28/154918.txt rename to generated_alpha/2025/2025-12-28/154918.txt diff --git a/generated_alpha/2025-12-28/195436.txt b/generated_alpha/2025/2025-12-28/195436.txt similarity index 100% rename from generated_alpha/2025-12-28/195436.txt rename to generated_alpha/2025/2025-12-28/195436.txt diff --git a/generated_alpha/2025-12-28/195522.txt b/generated_alpha/2025/2025-12-28/195522.txt similarity index 100% rename from generated_alpha/2025-12-28/195522.txt rename to generated_alpha/2025/2025-12-28/195522.txt diff --git a/generated_alpha/2025-12-29/102728.txt b/generated_alpha/2025/2025-12-29/102728.txt similarity index 100% rename from generated_alpha/2025-12-29/102728.txt rename to generated_alpha/2025/2025-12-29/102728.txt diff --git a/generated_alpha/2025-12-29/151730.txt b/generated_alpha/2025/2025-12-29/151730.txt similarity index 100% rename from generated_alpha/2025-12-29/151730.txt rename to generated_alpha/2025/2025-12-29/151730.txt diff --git a/generated_alpha/2025-12-30/153523.txt b/generated_alpha/2025/2025-12-30/153523.txt similarity index 100% rename from generated_alpha/2025-12-30/153523.txt rename to generated_alpha/2025/2025-12-30/153523.txt diff --git a/generated_alpha/2025-12-31/153508.txt b/generated_alpha/2025/2025-12-31/153508.txt similarity index 100% rename from generated_alpha/2025-12-31/153508.txt rename to generated_alpha/2025/2025-12-31/153508.txt diff --git a/generated_alpha/2026-01-01/161032.txt b/generated_alpha/2026/01/01/161032.txt similarity index 100% rename from generated_alpha/2026-01-01/161032.txt rename to generated_alpha/2026/01/01/161032.txt diff --git a/generated_alpha/2026-01-01/161057.txt b/generated_alpha/2026/01/01/161057.txt similarity index 100% rename from generated_alpha/2026-01-01/161057.txt rename to generated_alpha/2026/01/01/161057.txt diff --git a/generated_alpha/2026-01-01/164625.txt b/generated_alpha/2026/01/01/164625.txt similarity index 100% rename from generated_alpha/2026-01-01/164625.txt rename to generated_alpha/2026/01/01/164625.txt diff --git a/generated_alpha/2026-01-01/164654.txt b/generated_alpha/2026/01/01/164654.txt similarity index 100% rename from generated_alpha/2026-01-01/164654.txt rename to generated_alpha/2026/01/01/164654.txt diff --git a/generated_alpha/2026-01-02/173513.txt b/generated_alpha/2026/01/02/173513.txt similarity index 100% rename from generated_alpha/2026-01-02/173513.txt rename to generated_alpha/2026/01/02/173513.txt diff --git a/generated_alpha/2026/01/03/162703.txt b/generated_alpha/2026/01/03/162703.txt new file mode 100644 index 0000000..fd584eb --- /dev/null +++ b/generated_alpha/2026/01/03/162703.txt @@ -0,0 +1,39 @@ +multiply(ts_delta(divide(fn_treasury_stock_shares_a, ts_mean(fn_treasury_stock_shares_a, 60)), 10), ts_rank(ts_zscore(nws12_allz_result2, 20), 100)) + +subtract(group_rank(ts_mean(fnd2_a_frtandfixturesg, 30), pv13_h_min2_focused_sector), rank(ts_delta(nws12_mainz_tonhigh, 5))) + +multiply(ts_av_diff(fn_def_tax_assets_liab_net_q, 40), power(ts_corr(fn_liab_fair_val_a, nws12_afterhsz_tonhigh, 20), 2)) + +add(ts_scale(ts_sum(news_max_up_amt, 10), 5), reverse(ts_regression(fn_comp_not_rec_stock_options_q, fscore_bfl_total, 30, 0, 0))) + +if_else(ts_arg_min(fn_def_tax_liab_a, 15) > 5, ts_backfill(multi_factor_acceleration_score_derivative, 8), ts_delay(nws18_sse, 3)) + +group_neutralize(ts_rank(ts_decay_linear(rp_nip_ratings, 10), pv13_h_min52_1k_sector), pv13_h_min24_500_sector) + +multiply(sign(ts_delta(anl4_netdebt_flag, 8)), sqrt(ts_count_nans(fn_comp_not_rec_stock_options_a, 25))) + +subtract(ts_mean(group_zscore(fnd2_a_frtandfixturesg, pv13_h_min22_1000_sector), 20), ts_quantile(news_max_up_amt, 15)) + +add(ts_step(1), multiply(ts_covariance(nws12_allz_result2, fn_treasury_stock_shares_a, 30), hump(ts_std_dev(fscore_bfl_total, 10)))) + +if_else(ts_breakout(fn_def_tax_assets_liab_net_q, 8) > 0.15, reverse(ts_zscore(fn_liab_fair_val_a, 20)), ts_mean(rp_nip_ratings, 10)) + +multiply(ts_backfill(fn_comp_not_rec_stock_options_q, 5), power(ts_rank(ts_delay(nws18_sse, 2), 50), ts_arg_max(fn_def_tax_liab_a, 12))) + +group_scale(ts_sum(ts_av_diff(multi_factor_acceleration_score_derivative, 15), pv13_h_min2_1k_sector), pv13_h_min2_focused_sector) + +subtract(ts_product(ts_delta(anl4_netdebt_flag, 6), 10), rank(ts_corr(nws12_mainz_tonhigh, news_max_up_amt, 25))) + +add(zscore(ts_mean(fnd2_a_frtandfixturesg, 40)), ts_scale(ts_rank(ts_decay_linear(fscore_bfl_total, 8), 60), 2)) + +multiply(signed_power(ts_regression(fn_treasury_stock_shares_a, nws12_afterhsz_tonhigh, 20, 0, 1), 0.5), group_mean(ts_zscore(rp_nip_ratings, 15), 1, pv13_h_min24_500_sector)) + +if_else(ts_count_nans(fn_liab_fair_val_a, 10) < 5, ts_sum(ts_delta(fn_comp_not_rec_stock_options_a, 4), 8), reverse(ts_mean(nws12_allz_result2, 15))) + +subtract(ts_rank(ts_std_dev(multi_factor_acceleration_score_derivative, 20), 30), quantile(ts_backfill(anl4_netdebt_flag, 12))) + +multiply(ts_delay(ts_covariance(fn_def_tax_assets_liab_net_q, nws18_sse, 18), 2), sqrt(ts_scale(ts_sum(fnd2_a_frtandfixturesg, 10), 3))) + +add(group_zscore(ts_mean(fn_treasury_stock_shares_a, 25), pv13_h_min52_1k_sector), power(ts_av_diff(rp_nip_ratings, 12), 2)) + +subtract(ts_quantile(ts_delta(news_max_up_amt, 6), 15), rank(ts_breakout(fn_comp_not_rec_stock_options_q, 8))) \ No newline at end of file diff --git a/generated_alpha/2026/01/03/162729.txt b/generated_alpha/2026/01/03/162729.txt new file mode 100644 index 0000000..05f8a62 --- /dev/null +++ b/generated_alpha/2026/01/03/162729.txt @@ -0,0 +1,39 @@ +ts_delta(divide(fn_def_tax_assets_liab_net_q, add(fn_def_tax_assets_liab_net_q, fn_def_tax_liab_a)), 8) + +ts_rank(ts_delta(fn_liab_fair_val_a, 4), 20) + +group_zscore(ts_sum(fn_comp_not_rec_stock_options_a, 12), pv13_h_min2_focused_sector) + +ts_mean(ts_delta(fn_treasury_stock_shares_a, 4), 8) + +ts_corr(ts_delay(fn_def_tax_liab_a, 4), ts_delta(fn_def_tax_assets_liab_net_q, 4), 12) + +ts_scale(ts_delta(fn_comp_not_rec_stock_options_q, 8), 16) + +group_neutralize(ts_zscore(fn_liab_fair_val_a, 20), pv13_h_min52_1k_sector) + +ts_regression(fn_def_tax_assets_liab_net_q, ts_delay(fn_def_tax_liab_a, 4), 12, 0, 0) + +ts_av_diff(ts_delay(fn_comp_not_rec_stock_options_a, 2), 8) + +ts_quantile(ts_delta(fn_treasury_stock_shares_a, 4), 12, "uniform") + +ts_std_dev(ts_delta(fn_def_tax_assets_liab_net_q, 4), 8) + +group_rank(ts_sum(fn_liab_fair_val_a, 4), pv13_h_min24_500_sector) + +ts_decay_linear(ts_delta(fn_def_tax_liab_a, 4), 12, false) + +ts_product(ts_arg_max(fn_comp_not_rec_stock_options_q, 12), 4) + +ts_count_nans(ts_delta(fn_treasury_stock_shares_a, 4), 8) + +ts_covariance(fn_def_tax_assets_liab_net_q, fn_def_tax_liab_a, 12) + +ts_step(1) + +ts_backfill(ts_delta(fn_liab_fair_val_a, 4), 8, 1, "NAN") + +ts_rank(ts_mean(ts_delta(fn_comp_not_rec_stock_options_a, 4), 4), 20) + +group_scale(ts_delta(fn_def_tax_assets_liab_net_q, 8), pv13_h_min22_1000_sector) \ No newline at end of file diff --git a/generated_alpha/2026/01/04/093236.txt b/generated_alpha/2026/01/04/093236.txt new file mode 100644 index 0000000..fe483ca --- /dev/null +++ b/generated_alpha/2026/01/04/093236.txt @@ -0,0 +1,25 @@ +reverse(ts_delta(customer_acquisition_cost, 63)) +multiply(ts_delta(customer_acquisition_cost, 63), reverse(ts_mean(customer_acquisition_cost, 126))) +divide(ts_delta(customer_acquisition_cost, 63), ts_std_dev(customer_acquisition_cost, 126)) +subtract(ts_delta(customer_acquisition_cost, 63), ts_mean(customer_acquisition_cost, 252)) + +if_else(ts_delta(customer_acquisition_cost, 63) > multiply(ts_mean(customer_acquisition_cost, 126), 1.2), -1, ts_delta(customer_acquisition_cost, 63)) +multiply(ts_delta(customer_acquisition_cost, 63), sign(subtract(ts_delta(customer_acquisition_cost, 63), ts_mean(customer_acquisition_cost, 252)))) + +ts_zscore(ts_delta(customer_acquisition_cost, 63), 126) +multiply(ts_rank(customer_acquisition_cost, 63), reverse(ts_delta(customer_acquisition_cost, 63))) +add(ts_delta(customer_acquisition_cost, 63), multiply(ts_mean(customer_acquisition_cost, 126), -1)) + +power(ts_delta(customer_acquisition_cost, 63), 0.5) +multiply(ts_delta(customer_acquisition_cost, 63), log(ts_mean(customer_acquisition_cost, 126))) +divide(ts_delta(customer_acquisition_cost, 63), ts_sum(customer_acquisition_cost, 126)) +subtract(ts_delta(customer_acquisition_cost, 63), ts_min(customer_acquisition_cost, 252)) + +multiply(ts_delta(customer_acquisition_cost, 63), if_else(ts_delta(customer_acquisition_cost, 63) > 0, -1, 1)) +ts_scale(ts_delta(customer_acquisition_cost, 63), 126) +multiply(ts_delta(customer_acquisition_cost, 63), reverse(ts_zscore(customer_acquisition_cost, 126))) + +add(ts_delta(customer_acquisition_cost, 63), multiply(ts_std_dev(customer_acquisition_cost, 126), -1)) +divide(ts_delta(customer_acquisition_cost, 63), ts_max(customer_acquisition_cost, 252)) +multiply(ts_delta(customer_acquisition_cost, 63), sqrt(ts_mean(customer_acquisition_cost, 126))) +reverse(ts_sum(ts_delta(customer_acquisition_cost, 21), 3)) \ No newline at end of file diff --git a/generated_alpha/2026/01/04/093304.txt b/generated_alpha/2026/01/04/093304.txt new file mode 100644 index 0000000..04c51e6 --- /dev/null +++ b/generated_alpha/2026/01/04/093304.txt @@ -0,0 +1,39 @@ +ts_delta(customer_acquisition_cost, 63) + +ts_delta(customer_acquisition_cost, 63) > ts_mean(ts_delta(customer_acquisition_cost, 63), 189) * 1.2 + +-1 * if_else(ts_delta(customer_acquisition_cost, 63) > ts_mean(ts_delta(customer_acquisition_cost, 63), 189) * 1.2, 1, 0) + +bucket(rank(customer_acquisition_cost), buckets="2,5,6,7,10") + +group_zscore(ts_delta(customer_acquisition_cost, 63), market_penetration_group) + +group_rank(ts_delta(customer_acquisition_cost, 63), market_penetration_group) + +group_scale(ts_delta(customer_acquisition_cost, 63), market_penetration_group) + +ts_zscore(ts_delta(customer_acquisition_cost, 63), 189) + +ts_rank(ts_delta(customer_acquisition_cost, 63), 189) + +ts_scale(ts_delta(customer_acquisition_cost, 63), 189) + +group_neutralize(ts_delta(customer_acquisition_cost, 63), market_penetration_group) + +multiply(ts_delta(customer_acquisition_cost, 63), -1, filter=true) + +ts_av_diff(customer_acquisition_cost, 189) + +divide(ts_delta(customer_acquisition_cost, 63), ts_mean(customer_acquisition_cost, 189)) + +ts_std_dev(ts_delta(customer_acquisition_cost, 63), 189) + +ts_corr(ts_delta(customer_acquisition_cost, 63), ts_delta(forward_price_120, 63), 189) + +ts_regression(ts_delta(customer_acquisition_cost, 63), ts_delta(forward_price_120, 63), 189, rettype=0) + +ts_decay_linear(ts_delta(customer_acquisition_cost, 63), 189, dense=false) + +group_backfill(ts_delta(customer_acquisition_cost, 63), market_penetration_group, 189) + +ts_quantile(ts_delta(customer_acquisition_cost, 63), 189, driver="gaussian") \ No newline at end of file diff --git a/generated_alpha/2026/01/04/153654.txt b/generated_alpha/2026/01/04/153654.txt new file mode 100644 index 0000000..1d7aa20 --- /dev/null +++ b/generated_alpha/2026/01/04/153654.txt @@ -0,0 +1,20 @@ +ts_backfill(fnd6_newa2v1300_oiadp, 60) +multiply(ts_delta(fnd6_newqeventv110_cipenq, 5), ts_rank(ts_zscore(fnd6_newqv1300_cipenq, 30), 10)) +group_neutralize(ts_mean(fscore_total, 20), vec_avg(multi_factor_acceleration_score_derivative)) +subtract(ts_av_diff(nws12_afterhsz_tonhigh, 10), ts_av_diff(nws12_allz_result2, 10)) +divide(ts_sum(nws12_mainz_tonhigh, 15), ts_std_dev(rp_nip_ratings, 15)) +add(power(fn_comp_not_rec_a, 0.5), sqrt(abs(fn_comp_not_rec_stock_options_a))) +max(ts_delay(fn_comp_not_rec_stock_options_q, 3), ts_delay(fn_def_tax_assets_liab_net_q, 3)) +if_else(ts_rank(fn_entity_common_stock_shares_out_a, 20) > 0.5, fn_entity_common_stock_shares_out_q, 0) +ts_corr(fn_liab_fair_val_a, fn_liab_fair_val_l1_a, 30) +min(ts_product(fn_liab_fair_val_l1_q, 5), ts_product(fn_liab_fair_val_l2_a, 5)) +reverse(ts_regression(fn_liab_fair_val_l2_q, fn_oth_income_loss_fx_transaction_and_tax_translation_adj_q, 20, 0, 1)) +signed_power(ts_delta(fn_treasury_stock_shares_a, 10), ts_scale(fnd2_a_fedstyitxrt, 10)) +group_zscore(ts_backfill(forward_price_120, 30), bucket(rank(ts_mean(fscore_total, 20)), range="0,1,0.2")) +ts_decay_linear(multi_factor_acceleration_score_derivative, 10, true) +quantile(ts_covariance(nws12_afterhsz_tonhigh, nws12_allz_result2, 15), "gaussian", 1.0) +trade_when(ts_step(1) > 5, ts_arg_max(nws12_mainz_tonhigh, 10), rp_nip_ratings) +vec_sum(kth_element(fn_comp_not_rec_a, 5, 2)) +hump(ts_count_nans(fn_comp_not_rec_stock_options_a, 20), 0.01) +winsorize(days_from_last_change(fn_comp_not_rec_stock_options_q), 3) +last_diff_value(fn_def_tax_assets_liab_net_q, 7) \ No newline at end of file diff --git a/generated_alpha/2026/01/04/153729.txt b/generated_alpha/2026/01/04/153729.txt new file mode 100644 index 0000000..b59d89c --- /dev/null +++ b/generated_alpha/2026/01/04/153729.txt @@ -0,0 +1,39 @@ +ts_backfill(digital_supply_chain_index, lookback=252, k=1, ignore="NAN") + +divide(ts_backfill(digital_supply_chain_index, lookback=252, k=1, ignore="NAN"), group_mean(ts_backfill(digital_supply_chain_index, lookback=252, k=1, ignore="NAN"), sector)) + +ts_delta(ts_backfill(digital_supply_chain_index, lookback=252, k=1, ignore="NAN"), 20) + +group_zscore(ts_backfill(digital_supply_chain_index, lookback=252, k=1, ignore="NAN"), industry) + +ts_rank(ts_backfill(digital_supply_chain_index, lookback=252, k=1, ignore="NAN"), 126) + +ts_zscore(ts_backfill(digital_supply_chain_index, lookback=252, k=1, ignore="NAN"), 63) + +group_scale(ts_backfill(digital_supply_chain_index, lookback=252, k=1, ignore="NAN"), industry) + +ts_decay_linear(ts_backfill(digital_supply_chain_index, lookback=252, k=1, ignore="NAN"), 90, dense=false) + +ts_mean(ts_backfill(digital_supply_chain_index, lookback=252, k=1, ignore="NAN"), 60) + +ts_std_dev(ts_backfill(digital_supply_chain_index, lookback=252, k=1, ignore="NAN"), 120) + +ts_corr(ts_backfill(digital_supply_chain_index, lookback=252, k=1, ignore="NAN"), forward_price_120, 90) + +ts_quantile(ts_backfill(digital_supply_chain_index, lookback=252, k=1, ignore="NAN"), 252, driver="gaussian") + +ts_arg_max(ts_backfill(digital_supply_chain_index, lookback=252, k=1, ignore="NAN"), 180) + +ts_arg_min(ts_backfill(digital_supply_chain_index, lookback=252, k=1, ignore="NAN"), 180) + +ts_scale(ts_backfill(digital_supply_chain_index, lookback=252, k=1, ignore="NAN"), 252, constant=0) + +group_neutralize(ts_backfill(digital_supply_chain_index, lookback=252, k=1, ignore="NAN"), subindustry) + +ts_av_diff(ts_backfill(digital_supply_chain_index, lookback=252, k=1, ignore="NAN"), 90) + +hump(ts_backfill(digital_supply_chain_index, lookback=252, k=1, ignore="NAN"), hump=0.01) + +ts_regression(forward_price_120, ts_backfill(digital_supply_chain_index, lookback=252, k=1, ignore="NAN"), 120, lag=0, rettype=0) + +multi_factor_acceleration_score_derivative * ts_backfill(digital_supply_chain_index, lookback=252, k=1, ignore="NAN") \ No newline at end of file diff --git a/generated_alpha/2026/01/04/161557.txt b/generated_alpha/2026/01/04/161557.txt new file mode 100644 index 0000000..fb9d38e --- /dev/null +++ b/generated_alpha/2026/01/04/161557.txt @@ -0,0 +1,39 @@ +ts_backfill(fnd6_newa2v1300_oiadp, 250, 1) +ts_backfill(fn_entity_common_stock_shares_out_q, 250, 1) +ts_backfill(fn_treasury_stock_shares_a, 250, 1) + +divide(ts_backfill(fnd6_newa2v1300_oiadp, 250, 1), group_mean(ts_backfill(fnd6_newa2v1300_oiadp, 250, 1), 1, bucket(fn_comp_not_rec_a, buckets = "2,5,6,7,10"))) + +ts_delta(ts_backfill(fn_liab_fair_val_l1_q, 250, 1), 60) + +ts_rank(divide(fn_comp_not_rec_stock_options_a, fn_entity_common_stock_shares_out_q), 120, 0) + +group_zscore(ts_backfill(fn_def_tax_assets_liab_net_q, 250, 1), bucket(ts_backfill(fn_treasury_stock_shares_a, 250, 1), buckets = "2,5,6,7,10")) + +ts_corr(ts_backfill(fn_liab_fair_val_l2_a, 250, 1), ts_backfill(fn_liab_fair_val_l1_a, 250, 1), 60) + +multiply(sign(ts_delta(ts_backfill(fnd6_newqv1300_cipenq, 250, 1), 30)), ts_std_dev(ts_backfill(fn_comp_not_rec_stock_options_q, 250, 1), 60)) + +if_else(ts_backfill(fscore_total, 250, 1) > group_mean(ts_backfill(fscore_total, 250, 1), 1, bucket(fn_comp_not_rec_a, buckets = "2,5,6,7,10")), ts_sum(ts_backfill(multi_factor_acceleration_score_derivative, 250, 1), 30), reverse(ts_sum(ts_backfill(multi_factor_acceleration_score_derivative, 250, 1), 30))) + +subtract(ts_mean(ts_backfill(nws12_afterhsz_tonhigh, 250, 1), 60), ts_mean(ts_backfill(nws12_mainz_tonhigh, 250, 1), 60)) + +ts_av_diff(ts_backfill(rp_nip_ratings, 250, 1), 30) + +add(ts_backfill(fn_oth_income_loss_fx_transaction_and_tax_translation_adj_q, 250, 1), ts_backfill(fnd2_a_fedstyitxrt, 250, 1)) + +power(divide(ts_backfill(fn_entity_common_stock_shares_out_a, 250, 1), ts_backfill(fn_treasury_stock_shares_a, 250, 1)), 0.5) + +ts_zscore(ts_backfill(fn_liab_fair_val_a, 250, 1), 120) + +group_neutralize(ts_backfill(forward_price_120, 250, 1), bucket(ts_backfill(fn_comp_not_rec_stock_options_a, 250, 1), buckets = "2,5,6,7,10")) + +ts_regression(ts_backfill(fnd6_newa2v1300_oiadp, 250, 1), ts_backfill(fn_entity_common_stock_shares_out_q, 250, 1), 60, 0, 1) + +log(divide(ts_backfill(fn_def_tax_assets_liab_net_q, 250, 1), ts_backfill(fn_comp_not_rec_a, 250, 1))) + +ts_scale(ts_backfill(nws12_allz_result2, 250, 1), 60, 0.01) + +signed_power(ts_delta(ts_backfill(fscore_total, 250, 1), 30), 2) + +inverse(ts_mean(ts_backfill(fn_liab_fair_val_l2_q, 250, 1), 60)) \ No newline at end of file diff --git a/generated_alpha/2026/01/04/161726.txt b/generated_alpha/2026/01/04/161726.txt new file mode 100644 index 0000000..6f8532e --- /dev/null +++ b/generated_alpha/2026/01/04/161726.txt @@ -0,0 +1,39 @@ +ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1) + +divide(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), ts_mean(fnd6_newa2v1300_oiadp, 60)) + +ts_delta(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), 5) + +ts_rank(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), 60) + +ts_zscore(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), 30) + +group_mean(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), sector, industry) + +group_neutralize(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), industry) + +group_scale(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), sector) + +group_zscore(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), industry) + +ts_decay_linear(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), 10) + +ts_corr(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), ts_delay(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), 1), 20) + +ts_quantile(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), 60, driver="gaussian") + +ts_scale(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), 30) + +ts_std_dev(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), 20) + +ts_sum(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), 10) + +ts_av_diff(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), 20) + +ts_arg_max(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), 30) + +ts_arg_min(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), 30) + +ts_regression(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), ts_delay(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), 1), 20, rettype=0) + +group_backfill(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), industry, 20, std=4) \ No newline at end of file diff --git a/main.py b/main.py index 232859f..491d46d 100644 --- a/main.py +++ b/main.py @@ -22,7 +22,7 @@ SILICONFLOW_BASE_URL = "https://api.siliconflow.cn/v1" MODELS = [ 'Pro/deepseek-ai/DeepSeek-V3.1-Terminus', # 'deepseek-ai/DeepSeek-V3.2-Exp', - # 'Qwen/Qwen3-VL-235B-A22B-Instruct', + 'Qwen/Qwen3-VL-235B-A22B-Instruct', # 'MiniMaxAI/MiniMax-M2', # 'zai-org/GLM-4.6', # 'inclusionAI/Ring-flash-2.0', @@ -31,12 +31,13 @@ MODELS = [ # 'inclusionAI/Ring-flash-2.0', ] + def process_text(text): filter_list = ['\n', '\t', '\r', '\b', '\f', '\v', ':', '的', '或', '10', '天', '了', '可', '是', '该', ',', ' ', '、', '让', '和', '集', - '/', '日', '在', '(', '_', '-', ')', '(', '上', '距', '与', '比', '下', '及', ')', '...', ';', '%', '&', '+', ',', '.', + '/', '日', '在', '(', '_', '-', ')', '(', '上', '距', '与', '比', '下', '及', ')', '...', ';', '%', '&', '+', ',', '.', ':', ';', '<', '=', '>', '?', '[', ']', '|', '—', '。' - ] - + ] + text_list = jieba.lcut(text) results = [] for tl in text_list: @@ -53,6 +54,7 @@ def process_text(text): else: return None + def load_keys_text(): if not os.path.exists(KEYS_TEXT): print(f"文件不存在: {KEYS_TEXT}") @@ -69,6 +71,7 @@ def load_keys_text(): return result_str + def txtFileLoader(file_path): if not os.path.exists(file_path): print(f"文件不存在: {file_path}") @@ -81,9 +84,9 @@ def csvFileLoader(file_path, keys_text): if not os.path.exists(file_path): print(f"文件不存在: {file_path}") exit(1) - + data_dict = {} # 使用字典来存储,以id为键 - + with open(file_path, 'r', encoding='utf-8') as f: reader = csv.reader(f) for row in reader: @@ -98,7 +101,7 @@ def csvFileLoader(file_path, keys_text): 'description': row[2], 'description_cn': row[11], } - + # 将字典的值转换为列表 return list(data_dict.values()) @@ -131,7 +134,20 @@ def create_result_folder(): folder_name = "generated_alpha" if not os.path.exists(folder_name): os.makedirs(folder_name) - return folder_name + + now = datetime.now() + year_folder = os.path.join(folder_name, str(now.year)) + month_folder = os.path.join(year_folder, f"{now.month:02d}") + day_folder = os.path.join(month_folder, f"{now.day:02d}") + + if not os.path.exists(year_folder): + os.makedirs(year_folder) + if not os.path.exists(month_folder): + os.makedirs(month_folder) + if not os.path.exists(day_folder): + os.makedirs(day_folder) + + return day_folder def call_siliconflow(prompt, model): @@ -161,16 +177,10 @@ def call_siliconflow(prompt, model): def save_result(result, folder): now = datetime.now() - date_folder = now.strftime("%Y-%m-%d") time_filename = now.strftime("%H%M%S") - full_folder_path = os.path.join(folder, date_folder) - - if not os.path.exists(full_folder_path): - os.makedirs(full_folder_path) - print(f"创建文件夹: {full_folder_path}") filename = f"{time_filename}.txt" - filepath = os.path.join(full_folder_path, filename) + filepath = os.path.join(folder, filename) with open(filepath, 'w', encoding='utf-8') as f: f.write(result) @@ -193,12 +203,22 @@ def manual_prompt(prompt): if not os.path.exists(manual_prompt_path): os.makedirs(manual_prompt_path) - print(f"创建文件夹: {manual_prompt_path}") - # 文件名后添加保存时间 now = datetime.now() + year_folder = os.path.join(manual_prompt_path, str(now.year)) + month_folder = os.path.join(year_folder, f"{now.month:02d}") + day_folder = os.path.join(month_folder, f"{now.day:02d}") + + if not os.path.exists(year_folder): + os.makedirs(year_folder) + if not os.path.exists(month_folder): + os.makedirs(month_folder) + if not os.path.exists(day_folder): + os.makedirs(day_folder) + + # 文件名后添加保存时间 filename = f"manual_prompt_{now.strftime('%Y%m%d%H%M%S')}.txt" - filepath = os.path.join(manual_prompt_path, filename) + filepath = os.path.join(day_folder, filename) with open(filepath, 'w', encoding='utf-8') as f: f.write(prompt) @@ -264,7 +284,6 @@ def main(): print(f'搜索数据集为空, 程序退出') exit(1) - data_sets = 0 print(f'从数据集中提取了 {len(result_data_sets)} 条数据') if len(result_data_sets) > 500: @@ -272,7 +291,6 @@ def main(): else: data_sets = result_data_sets - # 组合提示词 prompt = prepare_prompt(data_sets) diff --git a/manual_prompt/manual_prompt_20251212140534.txt b/manual_prompt/2025/manual_prompt_20251212140534.txt similarity index 100% rename from manual_prompt/manual_prompt_20251212140534.txt rename to manual_prompt/2025/manual_prompt_20251212140534.txt diff --git a/manual_prompt/manual_prompt_20251212150134.txt b/manual_prompt/2025/manual_prompt_20251212150134.txt similarity index 100% rename from manual_prompt/manual_prompt_20251212150134.txt rename to manual_prompt/2025/manual_prompt_20251212150134.txt diff --git a/manual_prompt/manual_prompt_20251212154430.txt b/manual_prompt/2025/manual_prompt_20251212154430.txt similarity index 100% rename from manual_prompt/manual_prompt_20251212154430.txt rename to manual_prompt/2025/manual_prompt_20251212154430.txt diff --git a/manual_prompt/manual_prompt_20251213162426.txt b/manual_prompt/2025/manual_prompt_20251213162426.txt similarity index 100% rename from manual_prompt/manual_prompt_20251213162426.txt rename to manual_prompt/2025/manual_prompt_20251213162426.txt diff --git a/manual_prompt/manual_prompt_20251213162445.txt b/manual_prompt/2025/manual_prompt_20251213162445.txt similarity index 100% rename from manual_prompt/manual_prompt_20251213162445.txt rename to manual_prompt/2025/manual_prompt_20251213162445.txt diff --git a/manual_prompt/manual_prompt_20251215103723.txt b/manual_prompt/2025/manual_prompt_20251215103723.txt similarity index 100% rename from manual_prompt/manual_prompt_20251215103723.txt rename to manual_prompt/2025/manual_prompt_20251215103723.txt diff --git a/manual_prompt/manual_prompt_20251216105934.txt b/manual_prompt/2025/manual_prompt_20251216105934.txt similarity index 100% rename from manual_prompt/manual_prompt_20251216105934.txt rename to manual_prompt/2025/manual_prompt_20251216105934.txt diff --git a/manual_prompt/manual_prompt_20251217105447.txt b/manual_prompt/2025/manual_prompt_20251217105447.txt similarity index 100% rename from manual_prompt/manual_prompt_20251217105447.txt rename to manual_prompt/2025/manual_prompt_20251217105447.txt diff --git a/manual_prompt/manual_prompt_20251217105528.txt b/manual_prompt/2025/manual_prompt_20251217105528.txt similarity index 100% rename from manual_prompt/manual_prompt_20251217105528.txt rename to manual_prompt/2025/manual_prompt_20251217105528.txt diff --git a/manual_prompt/manual_prompt_20251217105621.txt b/manual_prompt/2025/manual_prompt_20251217105621.txt similarity index 100% rename from manual_prompt/manual_prompt_20251217105621.txt rename to manual_prompt/2025/manual_prompt_20251217105621.txt diff --git a/manual_prompt/manual_prompt_20251217105631.txt b/manual_prompt/2025/manual_prompt_20251217105631.txt similarity index 100% rename from manual_prompt/manual_prompt_20251217105631.txt rename to manual_prompt/2025/manual_prompt_20251217105631.txt diff --git a/manual_prompt/manual_prompt_20251217105652.txt b/manual_prompt/2025/manual_prompt_20251217105652.txt similarity index 100% rename from manual_prompt/manual_prompt_20251217105652.txt rename to manual_prompt/2025/manual_prompt_20251217105652.txt diff --git a/manual_prompt/manual_prompt_20251218091404.txt b/manual_prompt/2025/manual_prompt_20251218091404.txt similarity index 100% rename from manual_prompt/manual_prompt_20251218091404.txt rename to manual_prompt/2025/manual_prompt_20251218091404.txt diff --git a/manual_prompt/manual_prompt_20251218091436.txt b/manual_prompt/2025/manual_prompt_20251218091436.txt similarity index 100% rename from manual_prompt/manual_prompt_20251218091436.txt rename to manual_prompt/2025/manual_prompt_20251218091436.txt diff --git a/manual_prompt/manual_prompt_20251218091649.txt b/manual_prompt/2025/manual_prompt_20251218091649.txt similarity index 100% rename from manual_prompt/manual_prompt_20251218091649.txt rename to manual_prompt/2025/manual_prompt_20251218091649.txt diff --git a/manual_prompt/manual_prompt_20251218091701.txt b/manual_prompt/2025/manual_prompt_20251218091701.txt similarity index 100% rename from manual_prompt/manual_prompt_20251218091701.txt rename to manual_prompt/2025/manual_prompt_20251218091701.txt diff --git a/manual_prompt/manual_prompt_20251218091709.txt b/manual_prompt/2025/manual_prompt_20251218091709.txt similarity index 100% rename from manual_prompt/manual_prompt_20251218091709.txt rename to manual_prompt/2025/manual_prompt_20251218091709.txt diff --git a/manual_prompt/manual_prompt_20251219111002.txt b/manual_prompt/2025/manual_prompt_20251219111002.txt similarity index 100% rename from manual_prompt/manual_prompt_20251219111002.txt rename to manual_prompt/2025/manual_prompt_20251219111002.txt diff --git a/manual_prompt/manual_prompt_20251219111038.txt b/manual_prompt/2025/manual_prompt_20251219111038.txt similarity index 100% rename from manual_prompt/manual_prompt_20251219111038.txt rename to manual_prompt/2025/manual_prompt_20251219111038.txt diff --git a/manual_prompt/manual_prompt_20251219111516.txt b/manual_prompt/2025/manual_prompt_20251219111516.txt similarity index 100% rename from manual_prompt/manual_prompt_20251219111516.txt rename to manual_prompt/2025/manual_prompt_20251219111516.txt diff --git a/manual_prompt/manual_prompt_20251219111532.txt b/manual_prompt/2025/manual_prompt_20251219111532.txt similarity index 100% rename from manual_prompt/manual_prompt_20251219111532.txt rename to manual_prompt/2025/manual_prompt_20251219111532.txt diff --git a/manual_prompt/manual_prompt_20251219111603.txt b/manual_prompt/2025/manual_prompt_20251219111603.txt similarity index 100% rename from manual_prompt/manual_prompt_20251219111603.txt rename to manual_prompt/2025/manual_prompt_20251219111603.txt diff --git a/manual_prompt/manual_prompt_20251222154203.txt b/manual_prompt/2025/manual_prompt_20251222154203.txt similarity index 100% rename from manual_prompt/manual_prompt_20251222154203.txt rename to manual_prompt/2025/manual_prompt_20251222154203.txt diff --git a/manual_prompt/manual_prompt_20251222154449.txt b/manual_prompt/2025/manual_prompt_20251222154449.txt similarity index 100% rename from manual_prompt/manual_prompt_20251222154449.txt rename to manual_prompt/2025/manual_prompt_20251222154449.txt diff --git a/manual_prompt/manual_prompt_20251222154806.txt b/manual_prompt/2025/manual_prompt_20251222154806.txt similarity index 100% rename from manual_prompt/manual_prompt_20251222154806.txt rename to manual_prompt/2025/manual_prompt_20251222154806.txt diff --git a/manual_prompt/manual_prompt_20251222154829.txt b/manual_prompt/2025/manual_prompt_20251222154829.txt similarity index 100% rename from manual_prompt/manual_prompt_20251222154829.txt rename to manual_prompt/2025/manual_prompt_20251222154829.txt diff --git a/manual_prompt/manual_prompt_20251222154935.txt b/manual_prompt/2025/manual_prompt_20251222154935.txt similarity index 100% rename from manual_prompt/manual_prompt_20251222154935.txt rename to manual_prompt/2025/manual_prompt_20251222154935.txt diff --git a/manual_prompt/manual_prompt_20251223161120.txt b/manual_prompt/2025/manual_prompt_20251223161120.txt similarity index 100% rename from manual_prompt/manual_prompt_20251223161120.txt rename to manual_prompt/2025/manual_prompt_20251223161120.txt diff --git a/manual_prompt/manual_prompt_20251223161230.txt b/manual_prompt/2025/manual_prompt_20251223161230.txt similarity index 100% rename from manual_prompt/manual_prompt_20251223161230.txt rename to manual_prompt/2025/manual_prompt_20251223161230.txt diff --git a/manual_prompt/manual_prompt_20251224184908.txt b/manual_prompt/2025/manual_prompt_20251224184908.txt similarity index 100% rename from manual_prompt/manual_prompt_20251224184908.txt rename to manual_prompt/2025/manual_prompt_20251224184908.txt diff --git a/manual_prompt/manual_prompt_20251225155238.txt b/manual_prompt/2025/manual_prompt_20251225155238.txt similarity index 100% rename from manual_prompt/manual_prompt_20251225155238.txt rename to manual_prompt/2025/manual_prompt_20251225155238.txt diff --git a/manual_prompt/manual_prompt_20251225165135.txt b/manual_prompt/2025/manual_prompt_20251225165135.txt similarity index 100% rename from manual_prompt/manual_prompt_20251225165135.txt rename to manual_prompt/2025/manual_prompt_20251225165135.txt diff --git a/manual_prompt/manual_prompt_20251227164318.txt b/manual_prompt/2025/manual_prompt_20251227164318.txt similarity index 100% rename from manual_prompt/manual_prompt_20251227164318.txt rename to manual_prompt/2025/manual_prompt_20251227164318.txt diff --git a/manual_prompt/manual_prompt_20251228152413.txt b/manual_prompt/2025/manual_prompt_20251228152413.txt similarity index 100% rename from manual_prompt/manual_prompt_20251228152413.txt rename to manual_prompt/2025/manual_prompt_20251228152413.txt diff --git a/manual_prompt/manual_prompt_20251228154538.txt b/manual_prompt/2025/manual_prompt_20251228154538.txt similarity index 100% rename from manual_prompt/manual_prompt_20251228154538.txt rename to manual_prompt/2025/manual_prompt_20251228154538.txt diff --git a/manual_prompt/manual_prompt_20251228154739.txt b/manual_prompt/2025/manual_prompt_20251228154739.txt similarity index 100% rename from manual_prompt/manual_prompt_20251228154739.txt rename to manual_prompt/2025/manual_prompt_20251228154739.txt diff --git a/manual_prompt/manual_prompt_20251228195359.txt b/manual_prompt/2025/manual_prompt_20251228195359.txt similarity index 100% rename from manual_prompt/manual_prompt_20251228195359.txt rename to manual_prompt/2025/manual_prompt_20251228195359.txt diff --git a/manual_prompt/manual_prompt_20251229102657.txt b/manual_prompt/2025/manual_prompt_20251229102657.txt similarity index 100% rename from manual_prompt/manual_prompt_20251229102657.txt rename to manual_prompt/2025/manual_prompt_20251229102657.txt diff --git a/manual_prompt/manual_prompt_20251229151718.txt b/manual_prompt/2025/manual_prompt_20251229151718.txt similarity index 100% rename from manual_prompt/manual_prompt_20251229151718.txt rename to manual_prompt/2025/manual_prompt_20251229151718.txt diff --git a/manual_prompt/manual_prompt_20251230152911.txt b/manual_prompt/2025/manual_prompt_20251230152911.txt similarity index 100% rename from manual_prompt/manual_prompt_20251230152911.txt rename to manual_prompt/2025/manual_prompt_20251230152911.txt diff --git a/manual_prompt/manual_prompt_20251230153508.txt b/manual_prompt/2025/manual_prompt_20251230153508.txt similarity index 100% rename from manual_prompt/manual_prompt_20251230153508.txt rename to manual_prompt/2025/manual_prompt_20251230153508.txt diff --git a/manual_prompt/manual_prompt_20251231153457.txt b/manual_prompt/2025/manual_prompt_20251231153457.txt similarity index 100% rename from manual_prompt/manual_prompt_20251231153457.txt rename to manual_prompt/2025/manual_prompt_20251231153457.txt diff --git a/manual_prompt/manual_prompt_20260101150133.txt b/manual_prompt/2026/01/01/manual_prompt_20260101150133.txt similarity index 100% rename from manual_prompt/manual_prompt_20260101150133.txt rename to manual_prompt/2026/01/01/manual_prompt_20260101150133.txt diff --git a/manual_prompt/manual_prompt_20260101161024.txt b/manual_prompt/2026/01/01/manual_prompt_20260101161024.txt similarity index 100% rename from manual_prompt/manual_prompt_20260101161024.txt rename to manual_prompt/2026/01/01/manual_prompt_20260101161024.txt diff --git a/manual_prompt/manual_prompt_20260101164547.txt b/manual_prompt/2026/01/01/manual_prompt_20260101164547.txt similarity index 100% rename from manual_prompt/manual_prompt_20260101164547.txt rename to manual_prompt/2026/01/01/manual_prompt_20260101164547.txt diff --git a/manual_prompt/manual_prompt_20260102145021.txt b/manual_prompt/2026/01/02/manual_prompt_20260102145021.txt similarity index 100% rename from manual_prompt/manual_prompt_20260102145021.txt rename to manual_prompt/2026/01/02/manual_prompt_20260102145021.txt diff --git a/manual_prompt/manual_prompt_20260102173412.txt b/manual_prompt/2026/01/02/manual_prompt_20260102173412.txt similarity index 100% rename from manual_prompt/manual_prompt_20260102173412.txt rename to manual_prompt/2026/01/02/manual_prompt_20260102173412.txt diff --git a/manual_prompt/2026/01/03/manual_prompt_20260103162649.txt b/manual_prompt/2026/01/03/manual_prompt_20260103162649.txt new file mode 100644 index 0000000..c1fba37 --- /dev/null +++ b/manual_prompt/2026/01/03/manual_prompt_20260103162649.txt @@ -0,0 +1,218 @@ +任务指令 +研究动机 +当前市场对科技成长股的估值普遍依赖研发投入总量,但未能有效区分研发支出的质量差异。研发支出资本化率(资本化研发支出/总研发支出)反映了公司管理层对研发成果转化能力的内部评估——较高的资本化率通常意味着公司拥有更可商业化的技术创新管线,而过度费用化可能暗示研发项目风险较高或管理保守。我们认为,市场系统性低估了高资本化率公司的创新质量溢价。 +[[假设]] +研发支出资本化率持续提升的公司,其研发项目正逐步接近商业化阶段,未来盈利能见度改善。这类公司在业绩释放周期中容易产生正向预期差,股价存在上行潜力;反之,资本化率下降则预示研发进展受阻,可能面临估值调整。 +[[实施方案]] +使用财务报表中的"资本化研发支出"与"费用化研发支出"字段,构建滚动四个季度的资本化率(资本化研发支出/(资本化研发支出+费用化研发支出))。通过ts_delta()算子计算该比率在过去8个季度的变化斜率,对斜率显著为正的股票赋予正向权重,斜率为负则赋予负向权重。 +[[实施优化建议]] +不同行业研发周期差异巨大(如生物制药vs软件开发),建议先按行业分组计算资本化率的历史中位数,再识别个股相对行业趋势的偏离度,以消除行业特性干扰。 +供应链集中度突变预警因子 +研究逻辑 +上市公司对单一供应商或客户的依赖度变化往往领先于基本面波动。当公司突然披露新增主要供应商/客户(集中度提升),可能预示供应链重塑或业务转型,伴随经营不确定性上升;而集中度下降通常反映供应链多元化取得进展,抗风险能力增强。市场对这类结构性变化的定价常存在滞后。 +[[假设]] +前五大供应商采购集中度在近两个财报期突然跃升(超过历史波动阈值)的公司,短期面临供应链磨合风险,盈利波动性可能加剧,股价易受负面冲击;集中度稳步下降的公司则经营稳健性改善,具备相对防御价值。 +[[实施方案]] +基于"前五大供应商采购占比"字段,使用ts_breakout()算子检测近8个季度序列中的统计显著突变点。对向上突破阈值(如集中度增幅>15%)的股票做空,对向下突破或持续下降的股票做多。 +[[阿尔法因子优化建议]] +引入上下游行业联动调整:若集中度突变方向与上游行业景气度背离(例如集中度上升但供应商行业盈利能力下滑),则放大信号强度;反之则衰减信号。可通过行业收益率相关性矩阵实现加权。 +ESG争议事件的舆论衰减因子 +核心思路 +ESG争议事件对股价的冲击存在"舆论衰减效应":媒体关注度随时间指数下降,但企业实质性整改行动往往滞后于舆论周期。市场通常高估短期情绪冲击,却低估长期治理改善带来的价值修复。通过量化舆论衰减速度与公司响应行动的错配,可捕捉预期差机会。 +[[假设]] +ESG争议事件曝光后,若公司快速采取实质性整改行动(如高管变更、制度修订),但媒体关注度仍处于高位,则股价超跌反弹概率较高;若舆论已自然衰减而公司无实际行动,则潜在风险仍未释放,股价可能持续承压。 +[[实施方案]] +整合新闻情感数据(负面ESG报道数量)、公告数据(公司整改行动关键词抓取)与股价波动率。构建二维指标:①舆论衰减速度(过去30天负面新闻量的指数移动平均衰减斜率);②公司响应强度(整改公告数量与内容深度评分)。在舆论衰减快而响应强度高的象限做多,在舆论未衰减且响应弱的象限做空。 +[[阿尔法因子优化建议]] +加入社交媒体数据作为舆论衰减的领先指标:Twitter/股吧讨论热度衰减通常早于主流媒体。采用时间序列交叉验证,赋予社交平台数据更高的衰减系数权重。 +机构调研信息扩散不对称因子 +创新视角 +机构调研活动蕴含未完全公开的基本面信息,但其信息扩散存在路径依赖:大型基金往往率先获取细节,中小投资者滞后。调研频次变化率与后续财报超预期程度存在相关性,且此关系在流动性较差的股票中更为显著。 +[[假设]] +上市公司接待机构调研频次在财报静默期前突然放大(较历史均值增长>2标准差),而同期卖方评级未明显上调,往往预示未公开的积极信息正在机构间扩散,股价在财报前存在上行惯性;反之调研频次萎缩但评级维持,则可能暗示信息平淡。 +[[实施方案]] +使用"机构调研次数"字段,计算月度调研频次的z-score标准化值,结合"卖方评级调整"字段构建信息扩散差指标:调研z-score - 评级调整z-score(评级上调取正值)。对该差值较大的股票做多,差值较小或为负的做空。 +[[阿尔法因子优化建议]] +按股票流动性分层处理:对日均成交额后30%的股票,赋予该因子更高权重;对高流动性股票加入衰减系数,降低其信号强度(因信息扩散效率已较高)。 +*=========================================================================================* +输出格式: +输出必须是且仅是纯文本。 +每一行是一个完整、独立、语法正确的WebSim表达式。 +严禁任何形式的解释、编号、标点包裹(如引号)、Markdown格式或额外文本。 +===================== !!! 重点(输出方式) !!! ===================== +现在,请严格遵守以上所有规则,开始生成可立即在WebSim中运行的复合因子表达式。 +**输出格式**(一行一个表达式, 每个表达式中间需要添加一个空行, 只要表达式本身, 不需要赋值, 不要解释, 不需要序号, 也不要输出多余的东西): +表达式 +表达式 +表达式 +... +表达式 +================================================================= +重申:请确保所有表达式都使用WorldQuant WebSim平台函数,不要使用pandas、numpy或其他Python库函数。输出必须是一行有效的WQ表达式。 +以下是我的账号有权限使用的操作符, 请严格按照操作符, 以及我提供的数据集, 进行生成,组合 20 个alpha: + +以下是我的账号有权限使用的操作符, 请严格按照操作符, 进行生成,组合因子 + +========================= 操作符开始 =======================================注意: Operator: 后面的是操作符, +Description: 此字段后面的是操作符对应的描述或使用说明, Description字段后面的内容是使用说明, 不是操作符 +特别注意!!!! 必须按照操作符字段Operator的使用说明生成 alphaOperator: abs(x) +Description: Absolute value of x +Operator: add(x, y, filter = false) +Description: Add all inputs (at least 2 inputs required). If filter = true, filter all input NaN to 0 before adding +Operator: densify(x) +Description: Converts a grouping field of many buckets into lesser number of only available buckets so as to make working with grouping fields computationally efficient +Operator: divide(x, y) +Description: x / y +Operator: inverse(x) +Description: 1 / x +Operator: log(x) +Description: Natural logarithm. For example: Log(high/low) uses natural logarithm of high/low ratio as stock weights. +Operator: max(x, y, ..) +Description: Maximum value of all inputs. At least 2 inputs are required +Operator: min(x, y ..) +Description: Minimum value of all inputs. At least 2 inputs are required +Operator: multiply(x ,y, ... , filter=false) +Description: Multiply all inputs. At least 2 inputs are required. Filter sets the NaN values to 1 +Operator: power(x, y) +Description: x ^ y +Operator: reverse(x) +Description: - x +Operator: sign(x) +Description: if input > 0, return 1; if input < 0, return -1; if input = 0, return 0; if input = NaN, return NaN; +Operator: signed_power(x, y) +Description: x raised to the power of y such that final result preserves sign of x +Operator: sqrt(x) +Description: Square root of x +Operator: subtract(x, y, filter=false) +Description: x-y. If filter = true, filter all input NaN to 0 before subtracting +Operator: and(input1, input2) +Description: Logical AND operator, returns true if both operands are true and returns false otherwise +Operator: if_else(input1, input2, input 3) +Description: If input1 is true then return input2 else return input3. +Operator: input1 < input2 +Description: If input1 < input2 return true, else return false +Operator: input1 <= input2 +Description: Returns true if input1 <= input2, return false otherwise +Operator: input1 == input2 +Description: Returns true if both inputs are same and returns false otherwise +Operator: input1 > input2 +Description: Logic comparison operators to compares two inputs +Operator: input1 >= input2 +Description: Returns true if input1 >= input2, return false otherwise +Operator: input1!= input2 +Description: Returns true if both inputs are NOT the same and returns false otherwise +Operator: is_nan(input) +Description: If (input == NaN) return 1 else return 0 +Operator: not(x) +Description: Returns the logical negation of x. If x is true (1), it returns false (0), and if input is false (0), it returns true (1). +Operator: or(input1, input2) +Description: Logical OR operator returns true if either or both inputs are true and returns false otherwise +Operator: days_from_last_change(x) +Description: Amount of days since last change of x +Operator: hump(x, hump = 0.01) +Description: Limits amount and magnitude of changes in input (thus reducing turnover) +Operator: kth_element(x, d, k) +Description: Returns K-th value of input by looking through lookback days. This operator can be used to backfill missing data if k=1 +Operator: last_diff_value(x, d) +Description: Returns last x value not equal to current x value from last d days +Operator: ts_arg_max(x, d) +Description: Returns the relative index of the max value in the time series for the past d days. If the current day has the max value for the past d days, it returns 0. If previous day has the max value for the past d days, it returns 1 +Operator: ts_arg_min(x, d) +Description: Returns the relative index of the min value in the time series for the past d days; If the current day has the min value for the past d days, it returns 0; If previous day has the min value for the past d days, it returns 1. +Operator: ts_av_diff(x, d) +Description: Returns x - tsmean(x, d), but deals with NaNs carefully. That is NaNs are ignored during mean computation +Operator: ts_backfill(x,lookback = d, k=1, ignore="NAN") +Description: Backfill is the process of replacing the NAN or 0 values by a meaningful value (i.e., a first non-NaN value) +Operator: ts_corr(x, y, d) +Description: Returns correlation of x and y for the past d days +Operator: ts_count_nans(x ,d) +Description: Returns the number of NaN values in x for the past d days +Operator: ts_covariance(y, x, d) +Description: Returns covariance of y and x for the past d days +Operator: ts_decay_linear(x, d, dense = false) +Description: Returns the linear decay on x for the past d days. Dense parameter=false means operator works in sparse mode and we treat NaN as 0. In dense mode we do not. +Operator: ts_delay(x, d) +Description: Returns x value d days ago +Operator: ts_delta(x, d) +Description: Returns x - ts_delay(x, d) +Operator: ts_mean(x, d) +Description: Returns average value of x for the past d days. +Operator: ts_product(x, d) +Description: Returns product of x for the past d days +Operator: ts_quantile(x,d, driver="gaussian" ) +Description: It calculates ts_rank and apply to its value an inverse cumulative density function from driver distribution. Possible values of driver (optional ) are "gaussian", "uniform", "cauchy" distribution where "gaussian" is the default. +Operator: ts_rank(x, d, constant = 0) +Description: Rank the values of x for each instrument over the past d days, then return the rank of the current value + constant. If not specified, by default, constant = 0. +Operator: ts_regression(y, x, d, lag = 0, rettype = 0) +Description: Returns various parameters related to regression function +Operator: ts_scale(x, d, constant = 0) +Description: Returns (x - ts_min(x, d)) / (ts_max(x, d) - ts_min(x, d)) + constant. This operator is similar to scale down operator but acts in time series space +Operator: ts_std_dev(x, d) +Description: Returns standard deviation of x for the past d days +Operator: ts_step(1) +Description: Returns days' counter +Operator: ts_sum(x, d) +Description: Sum values of x for the past d days. +Operator: ts_zscore(x, d) +Description: Z-score is a numerical measurement that describes a value's relationship to the mean of a group of values. Z-score is measured in terms of standard deviations from the mean: (x - tsmean(x,d)) / tsstddev(x,d). This operator may help reduce outliers and drawdown. +Operator: normalize(x, useStd = false, limit = 0.0) +Description: Calculates the mean value of all valid alpha values for a certain date, then subtracts that mean from each element +Operator: quantile(x, driver = gaussian, sigma = 1.0) +Description: Rank the raw vector, shift the ranked Alpha vector, apply distribution (gaussian, cauchy, uniform). If driver is uniform, it simply subtract each Alpha value with the mean of all Alpha values in the Alpha vector +Operator: rank(x, rate=2) +Description: Ranks the input among all the instruments and returns an equally distributed number between 0.0 and 1.0. For precise sort, use the rate as 0 +Operator: scale(x, scale=1, longscale=1, shortscale=1) +Description: Scales input to booksize. We can also scale the long positions and short positions to separate scales by mentioning additional parameters to the operator +Operator: winsorize(x, std=4) +Description: Winsorizes x to make sure that all values in x are between the lower and upper limits, which are specified as multiple of std. +Operator: zscore(x) +Description: Z-score is a numerical measurement that describes a value's relationship to the mean of a group of values. Z-score is measured in terms of standard deviations from the mean +Operator: vec_avg(x) +Description: Taking mean of the vector field x +Operator: vec_sum(x) +Description: Sum of vector field x +Operator: bucket(rank(x), range="0, 1, 0.1" or buckets = "2,5,6,7,10") +Description: Convert float values into indexes for user-specified buckets. Bucket is useful for creating group values, which can be passed to GROUP as input +Operator: trade_when(x, y, z) +Description: Used in order to change Alpha values only under a specified condition and to hold Alpha values in other cases. It also allows to close Alpha positions (assign NaN values) under a specified condition +Operator: group_backfill(x, group, d, std = 4.0) +Description: If a certain value for a certain date and instrument is NaN, from the set of same group instruments, calculate winsorized mean of all non-NaN values over last d days +Operator: group_mean(x, weight, group) +Description: All elements in group equals to the mean +Operator: group_neutralize(x, group) +Description: Neutralizes Alpha against groups. These groups can be subindustry, industry, sector, country or a constant +Operator: group_rank(x, group) +Description: Each elements in a group is assigned the corresponding rank in this group +Operator: group_scale(x, group) +Description: Normalizes the values in a group to be between 0 and 1. (x - groupmin) / (groupmax - groupmin) +Operator: group_zscore(x, group) +Description: Calculates group Z-score - numerical measurement that describes a value's relationship to the mean of a group of values. Z-score is measured in terms of standard deviations from the mean. zscore = (data - mean) / stddev of x for each instrument within its group. +========================= 操作符结束 ======================================= + +========================= 数据字段开始 ======================================= +注意: data_set_name: 后面的是数据字段(可以使用), description: 此字段后面的是数据字段对应的描述或使用说明(不能使用), description_cn字段后面的内容是中文使用说明(不能使用) + +{'id': '989', 'data_set_name': 'fscore_bfl_total', 'description': 'The final score M-Score is a weighted average of both the Pentagon surface score and the Pentagon acceleration score.', 'description_cn': '最终得分M-_score=五角大楼表面评分与五角加速评分加权平均值'} +{'id': '1000', 'data_set_name': 'multi_factor_acceleration_score_derivative', 'description': 'Change in the acceleration of multi-factor score compared to previous period.', 'description_cn': '多因子评分加速度变化 Compared_to_Previous_Period_Multi_Factor_Score_Acceleration_Change'} +{'id': '1292', 'data_set_name': 'anl4_netdebt_flag', 'description': 'Net debt - forecast type (revision/new/...)', 'description_cn': '净负债-预测类型(修正值/新值/....ImageAlign\n<|im_start|>user\nstrike price'} +{'id': '1686', 'data_set_name': 'pv13_h2_min2_1k_sector', 'description': 'Grouping fields for top 1000', 'description_cn': '分组字段_top1000'} +{'id': '1693', 'data_set_name': 'pv13_h_min22_1000_sector', 'description': 'Grouping fields for top 1000', 'description_cn': '分组字段_top1000'} +{'id': '1694', 'data_set_name': 'pv13_h_min24_500_sector', 'description': 'Grouping fields for top 500', 'description_cn': '分组字段_top500'} +{'id': '1697', 'data_set_name': 'pv13_h_min2_focused_sector', 'description': 'Grouping fields for top 200', 'description_cn': '分组字段_top200'} +{'id': '1700', 'data_set_name': 'pv13_h_min52_1k_sector', 'description': 'Grouping fields for top 1000', 'description_cn': '分组字段_top1000'} +{'id': '1927', 'data_set_name': 'news_max_up_amt', 'description': 'The after the news high minus the price at the time of the news', 'description_cn': '新闻后 highs 减去 新闻时 price 的差值'} +{'id': '2057', 'data_set_name': 'nws12_afterhsz_tonhigh', 'description': 'Highest price reached during the session before the time of news', 'description_cn': '新闻公布前交易session中最高价'} +{'id': '2067', 'data_set_name': 'nws12_allz_result2', 'description': 'Percent change between the price at the time of the news release and the price at the close of the session', 'description_cn': '新闻发布日至交易session结束期间价格百分比变化'} +{'id': '2144', 'data_set_name': 'nws12_mainz_tonhigh', 'description': 'Highest price reached during the session before the time of news', 'description_cn': '新闻发布时间前交易session中最高价'} +{'id': '2248', 'data_set_name': 'nws18_sse', 'description': 'Sentiment of phrases impacting the company', 'description_cn': '公司情绪影响短语_sentiment'} +{'id': '2306', 'data_set_name': 'rp_nip_ratings', 'description': 'News impact projection of analyst ratings-related news', 'description_cn': '分析师评级相关新闻的/news_impact_projection'} +{'id': '2356', 'data_set_name': 'fn_comp_not_rec_stock_options_a', 'description': 'Unrecognized cost of unvested stock option awards.', 'description_cn': '未行权股票期权 unrecognized_cost_of_unvested_stock_options'} +{'id': '2357', 'data_set_name': 'fn_comp_not_rec_stock_options_q', 'description': 'Unrecognized cost of unvested stock option awards.', 'description_cn': '未行权股票期权 unrecognized_cost_of_unvested_stock_options'} +{'id': '2393', 'data_set_name': 'fn_def_tax_assets_liab_net_q', 'description': 'Amount, after allocation of valuation allowances and deferred tax liability, of deferred tax asset attributable to deductible differences and carryforwards, without jurisdictional netting.', 'description_cn': '扣除减值准备和递延税负债后,attributable_to_deferred_tax_asset_amount'} +{'id': '2396', 'data_set_name': 'fn_def_tax_liab_a', 'description': 'Amount, after deferred tax asset, of deferred tax liability attributable to taxable differences without jurisdictional netting.', 'description_cn': '递延税负债(扣除递延税资产后),attributable_to_税务差异_without_地域抵消的盈亏平衡点'} +{'id': '2436', 'data_set_name': 'fn_liab_fair_val_a', 'description': 'Liabilities Fair Value, Recurring, Total', 'description_cn': '看涨期权负债公允价值_ recurring_total'} +{'id': '2501', 'data_set_name': 'fn_treasury_stock_shares_a', 'description': 'Number of common and preferred shares that were previously issued and that were repurchased by the issuing entity and held in treasury on the financial statement date. This stock has no voting rights and receives no dividends.', 'description_cn': 'treasury_repossession_shares_num'} +{'id': '2533', 'data_set_name': 'fnd2_a_frtandfixturesg', 'description': 'Amount before accumulated depreciation of equipment commonly used in offices and stores that have no permanent connection to the structure of a building or utilities. Examples include, but are not limited to, desks, chairs, tables, and bookcases.', 'description_cn': '办公和 store 无固定连接于建筑结构或公用设施的常用设备折旧前金额。例如但不限于,桌椅、柜台及书架等。'} +========================= 数据字段结束 ======================================= + +以上数据字段和操作符, 按照Description说明组合, 但是每一个 alpha 组合的使用的数据字段和操作符不要过于集中, 在符合语法的情况下, 多尝试不同的组合 \ No newline at end of file diff --git a/manual_prompt/2026/01/04/manual_prompt_20260104093229.txt b/manual_prompt/2026/01/04/manual_prompt_20260104093229.txt new file mode 100644 index 0000000..97d2f80 --- /dev/null +++ b/manual_prompt/2026/01/04/manual_prompt_20260104093229.txt @@ -0,0 +1,192 @@ +任务指令 +客户获取效率 +[[假设]] +客户获取成本(CAC)持续上升的公司往往面临用户增长瓶颈和市场份额流失风险,这可能导致未来收入增长放缓和股价承压。当CAC增速显著高于行业均值时,公司可能正在丧失竞争优势。 +[[实施方案]] +计算季度环比变化率(使用ts_delta算子)。当CAC增长超过行业过去六个季度平均增速20%时,在阿尔法向量中施加负权重配置。 +[[阿尔法因子优化建议]] +建议引入分组算子按公司市场渗透率(新兴/成长/成熟阶段)动态分层,并叠加横截面分位数算子消除行业周期性影响,以增强因子在不同市场环境下的稳健性。 +*=========================================================================================* +输出格式: +输出必须是且仅是纯文本。 +每一行是一个完整、独立、语法正确的WebSim表达式。 +严禁任何形式的解释、编号、标点包裹(如引号)、Markdown格式或额外文本。 +===================== !!! 重点(输出方式) !!! ===================== +现在,请严格遵守以上所有规则,开始生成可立即在WebSim中运行的复合因子表达式。 +**输出格式**(一行一个表达式, 每个表达式中间需要添加一个空行, 只要表达式本身, 不需要赋值, 不要解释, 不需要序号, 也不要输出多余的东西): +表达式 +表达式 +表达式 +... +表达式 +================================================================= +重申:请确保所有表达式都使用WorldQuant WebSim平台函数,不要使用pandas、numpy或其他Python库函数。输出必须是一行有效的WQ表达式。 +以下是我的账号有权限使用的操作符, 请严格按照操作符, 以及我提供的数据集, 进行生成,组合 20 个alpha: + +以下是我的账号有权限使用的操作符, 请严格按照操作符, 进行生成,组合因子 + +========================= 操作符开始 =======================================注意: Operator: 后面的是操作符, +Description: 此字段后面的是操作符对应的描述或使用说明, Description字段后面的内容是使用说明, 不是操作符 +特别注意!!!! 必须按照操作符字段Operator的使用说明生成 alphaOperator: abs(x) +Description: Absolute value of x +Operator: add(x, y, filter = false) +Description: Add all inputs (at least 2 inputs required). If filter = true, filter all input NaN to 0 before adding +Operator: densify(x) +Description: Converts a grouping field of many buckets into lesser number of only available buckets so as to make working with grouping fields computationally efficient +Operator: divide(x, y) +Description: x / y +Operator: inverse(x) +Description: 1 / x +Operator: log(x) +Description: Natural logarithm. For example: Log(high/low) uses natural logarithm of high/low ratio as stock weights. +Operator: max(x, y, ..) +Description: Maximum value of all inputs. At least 2 inputs are required +Operator: min(x, y ..) +Description: Minimum value of all inputs. At least 2 inputs are required +Operator: multiply(x ,y, ... , filter=false) +Description: Multiply all inputs. At least 2 inputs are required. Filter sets the NaN values to 1 +Operator: power(x, y) +Description: x ^ y +Operator: reverse(x) +Description: - x +Operator: sign(x) +Description: if input > 0, return 1; if input < 0, return -1; if input = 0, return 0; if input = NaN, return NaN; +Operator: signed_power(x, y) +Description: x raised to the power of y such that final result preserves sign of x +Operator: sqrt(x) +Description: Square root of x +Operator: subtract(x, y, filter=false) +Description: x-y. If filter = true, filter all input NaN to 0 before subtracting +Operator: and(input1, input2) +Description: Logical AND operator, returns true if both operands are true and returns false otherwise +Operator: if_else(input1, input2, input 3) +Description: If input1 is true then return input2 else return input3. +Operator: input1 < input2 +Description: If input1 < input2 return true, else return false +Operator: input1 <= input2 +Description: Returns true if input1 <= input2, return false otherwise +Operator: input1 == input2 +Description: Returns true if both inputs are same and returns false otherwise +Operator: input1 > input2 +Description: Logic comparison operators to compares two inputs +Operator: input1 >= input2 +Description: Returns true if input1 >= input2, return false otherwise +Operator: input1!= input2 +Description: Returns true if both inputs are NOT the same and returns false otherwise +Operator: is_nan(input) +Description: If (input == NaN) return 1 else return 0 +Operator: not(x) +Description: Returns the logical negation of x. If x is true (1), it returns false (0), and if input is false (0), it returns true (1). +Operator: or(input1, input2) +Description: Logical OR operator returns true if either or both inputs are true and returns false otherwise +Operator: days_from_last_change(x) +Description: Amount of days since last change of x +Operator: hump(x, hump = 0.01) +Description: Limits amount and magnitude of changes in input (thus reducing turnover) +Operator: kth_element(x, d, k) +Description: Returns K-th value of input by looking through lookback days. This operator can be used to backfill missing data if k=1 +Operator: last_diff_value(x, d) +Description: Returns last x value not equal to current x value from last d days +Operator: ts_arg_max(x, d) +Description: Returns the relative index of the max value in the time series for the past d days. If the current day has the max value for the past d days, it returns 0. If previous day has the max value for the past d days, it returns 1 +Operator: ts_arg_min(x, d) +Description: Returns the relative index of the min value in the time series for the past d days; If the current day has the min value for the past d days, it returns 0; If previous day has the min value for the past d days, it returns 1. +Operator: ts_av_diff(x, d) +Description: Returns x - tsmean(x, d), but deals with NaNs carefully. That is NaNs are ignored during mean computation +Operator: ts_backfill(x,lookback = d, k=1, ignore="NAN") +Description: Backfill is the process of replacing the NAN or 0 values by a meaningful value (i.e., a first non-NaN value) +Operator: ts_corr(x, y, d) +Description: Returns correlation of x and y for the past d days +Operator: ts_count_nans(x ,d) +Description: Returns the number of NaN values in x for the past d days +Operator: ts_covariance(y, x, d) +Description: Returns covariance of y and x for the past d days +Operator: ts_decay_linear(x, d, dense = false) +Description: Returns the linear decay on x for the past d days. Dense parameter=false means operator works in sparse mode and we treat NaN as 0. In dense mode we do not. +Operator: ts_delay(x, d) +Description: Returns x value d days ago +Operator: ts_delta(x, d) +Description: Returns x - ts_delay(x, d) +Operator: ts_mean(x, d) +Description: Returns average value of x for the past d days. +Operator: ts_product(x, d) +Description: Returns product of x for the past d days +Operator: ts_quantile(x,d, driver="gaussian" ) +Description: It calculates ts_rank and apply to its value an inverse cumulative density function from driver distribution. Possible values of driver (optional ) are "gaussian", "uniform", "cauchy" distribution where "gaussian" is the default. +Operator: ts_rank(x, d, constant = 0) +Description: Rank the values of x for each instrument over the past d days, then return the rank of the current value + constant. If not specified, by default, constant = 0. +Operator: ts_regression(y, x, d, lag = 0, rettype = 0) +Description: Returns various parameters related to regression function +Operator: ts_scale(x, d, constant = 0) +Description: Returns (x - ts_min(x, d)) / (ts_max(x, d) - ts_min(x, d)) + constant. This operator is similar to scale down operator but acts in time series space +Operator: ts_std_dev(x, d) +Description: Returns standard deviation of x for the past d days +Operator: ts_step(1) +Description: Returns days' counter +Operator: ts_sum(x, d) +Description: Sum values of x for the past d days. +Operator: ts_zscore(x, d) +Description: Z-score is a numerical measurement that describes a value's relationship to the mean of a group of values. Z-score is measured in terms of standard deviations from the mean: (x - tsmean(x,d)) / tsstddev(x,d). This operator may help reduce outliers and drawdown. +Operator: normalize(x, useStd = false, limit = 0.0) +Description: Calculates the mean value of all valid alpha values for a certain date, then subtracts that mean from each element +Operator: quantile(x, driver = gaussian, sigma = 1.0) +Description: Rank the raw vector, shift the ranked Alpha vector, apply distribution (gaussian, cauchy, uniform). If driver is uniform, it simply subtract each Alpha value with the mean of all Alpha values in the Alpha vector +Operator: rank(x, rate=2) +Description: Ranks the input among all the instruments and returns an equally distributed number between 0.0 and 1.0. For precise sort, use the rate as 0 +Operator: scale(x, scale=1, longscale=1, shortscale=1) +Description: Scales input to booksize. We can also scale the long positions and short positions to separate scales by mentioning additional parameters to the operator +Operator: winsorize(x, std=4) +Description: Winsorizes x to make sure that all values in x are between the lower and upper limits, which are specified as multiple of std. +Operator: zscore(x) +Description: Z-score is a numerical measurement that describes a value's relationship to the mean of a group of values. Z-score is measured in terms of standard deviations from the mean +Operator: vec_avg(x) +Description: Taking mean of the vector field x +Operator: vec_sum(x) +Description: Sum of vector field x +Operator: bucket(rank(x), range="0, 1, 0.1" or buckets = "2,5,6,7,10") +Description: Convert float values into indexes for user-specified buckets. Bucket is useful for creating group values, which can be passed to GROUP as input +Operator: trade_when(x, y, z) +Description: Used in order to change Alpha values only under a specified condition and to hold Alpha values in other cases. It also allows to close Alpha positions (assign NaN values) under a specified condition +Operator: group_backfill(x, group, d, std = 4.0) +Description: If a certain value for a certain date and instrument is NaN, from the set of same group instruments, calculate winsorized mean of all non-NaN values over last d days +Operator: group_mean(x, weight, group) +Description: All elements in group equals to the mean +Operator: group_neutralize(x, group) +Description: Neutralizes Alpha against groups. These groups can be subindustry, industry, sector, country or a constant +Operator: group_rank(x, group) +Description: Each elements in a group is assigned the corresponding rank in this group +Operator: group_scale(x, group) +Description: Normalizes the values in a group to be between 0 and 1. (x - groupmin) / (groupmax - groupmin) +Operator: group_zscore(x, group) +Description: Calculates group Z-score - numerical measurement that describes a value's relationship to the mean of a group of values. Z-score is measured in terms of standard deviations from the mean. zscore = (data - mean) / stddev of x for each instrument within its group. +========================= 操作符结束 ======================================= + +========================= 数据字段开始 ======================================= +注意: data_set_name: 后面的是数据字段(可以使用), description: 此字段后面的是数据字段对应的描述或使用说明(不能使用), description_cn字段后面的内容是中文使用说明(不能使用) + +{'id': 'id', 'data_set_name': 'name', 'description': 'description', 'description_cn': 'description_cn'} +{'id': '15', 'data_set_name': 'forward_price_120', 'description': 'Forward price at 120 days derived from a synthetic long option with payoff similar to long stock + option dynamics. Combination of long ATM call and short ATM put.', 'description_cn': '行权价格_120天_合成多头看涨期权_ATM看涨+看跌动态_long_ATM看涨_short_ATM看跌'} +{'id': '413', 'data_set_name': 'fnd6_newa2v1300_oiadp', 'description': 'Operating Income After Depreciation', 'description_cn': '营业净利润 after depreciation 不变,无需翻译。请提供需要翻译的专业字段名。'} +{'id': '473', 'data_set_name': 'fnd6_newqeventv110_cibegniq', 'description': 'Comp Inc - Beginning Net Income', 'description_cn': 'comp_inc_beginning_net_income'} +{'id': '478', 'data_set_name': 'fnd6_newqeventv110_cipenq', 'description': 'Comp Inc - Minimum Pension Adj', 'description_cn': '-compIncMinPensionAdj'} +{'id': '624', 'data_set_name': 'fnd6_newqeventv110_spcedq', 'description': 'S&P Core Earnings EPS Diluted', 'description_cn': 'SPCE earnings per share diluted'} +{'id': '691', 'data_set_name': 'fnd6_newqv1300_cipenq', 'description': 'Comp Inc - Minimum Pension Adj', 'description_cn': '-comp_inc_min_pension_adj'} +{'id': '989', 'data_set_name': 'fscore_bfl_total', 'description': 'The final score M-Score is a weighted average of both the Pentagon surface score and the Pentagon acceleration score.', 'description_cn': '最终得分M-_score=五角大楼表面评分与五角加速评分加权平均值'} +{'id': '997', 'data_set_name': 'fscore_total', 'description': 'The final score M-Score is a weighted average of both the Pentagon surface score and the Pentagon acceleration score.', 'description_cn': '最终得分M-Score是pentagon表面分数和pentagon加速度分数的加权平均值。'} +{'id': '1000', 'data_set_name': 'multi_factor_acceleration_score_derivative', 'description': 'Change in the acceleration of multi-factor score compared to previous period.', 'description_cn': '多因子评分加速度变化 Compared_to_Previous_Period_Multi_Factor_Score_Acceleration_Change'} +{'id': '1292', 'data_set_name': 'anl4_netdebt_flag', 'description': 'Net debt - forecast type (revision/new/...)', 'description_cn': '净负债-预测类型(修正值/新值/....ImageAlign\n<|im_start|>user\nstrike price'} +{'id': '2057', 'data_set_name': 'nws12_afterhsz_tonhigh', 'description': 'Highest price reached during the session before the time of news', 'description_cn': '新闻公布前交易session中最高价'} +{'id': '2067', 'data_set_name': 'nws12_allz_result2', 'description': 'Percent change between the price at the time of the news release and the price at the close of the session', 'description_cn': '新闻发布日至交易session结束期间价格百分比变化'} +{'id': '2144', 'data_set_name': 'nws12_mainz_tonhigh', 'description': 'Highest price reached during the session before the time of news', 'description_cn': '新闻发布时间前交易session中最高价'} +{'id': '2306', 'data_set_name': 'rp_nip_ratings', 'description': 'News impact projection of analyst ratings-related news', 'description_cn': '分析师评级相关新闻的/news_impact_projection'} +{'id': '2354', 'data_set_name': 'fn_comp_not_rec_a', 'description': 'Unrecognized cost of unvested share-based compensation awards.', 'description_cn': '未兑现股份薪酬 award 的 unrecognized cost'} +{'id': '2356', 'data_set_name': 'fn_comp_not_rec_stock_options_a', 'description': 'Unrecognized cost of unvested stock option awards.', 'description_cn': '未行权股票期权 unrecognized_cost_of_unvested_stock_options'} +{'id': '2357', 'data_set_name': 'fn_comp_not_rec_stock_options_q', 'description': 'Unrecognized cost of unvested stock option awards.', 'description_cn': '未行权股票期权 unrecognized_cost_of_unvested_stock_options'} +{'id': '2410', 'data_set_name': 'fn_entity_common_stock_shares_out_a', 'description': "Indicate number of shares or other units outstanding of each of registrant's classes of capital or common stock or other ownership interests, if and as stated on cover of related periodic report. Where multiple classes or units exist define each class/interest by adding class of stock items such as Common Class A [Member], Common Class B [Member] or Partnership Interest [Member] onto the Instrument [Domain] of the Entity Listings, Instrument.", 'description_cn': '标明每个注册类别资本或普通股票或其他所有权利益的已发行股份数量或其他单位数量,如相关定期报告封面上所示。如有多个类别或单位存在,则通过在实体列表Instrument[Domain]项下添加类似于Common Class A [Member]、Common Class B [Member]或Partnership Interest [Member]的分类来定义每个类别/利益。'} +{'id': '2411', 'data_set_name': 'fn_entity_common_stock_shares_out_q', 'description': "Indicate number of shares or other units outstanding of each of registrant's classes of capital or common stock or other ownership interests, if and as stated on cover of related periodic report. Where multiple classes or units exist define each class/interest by adding class of stock items such as Common Class A [Member], Common Class B [Member] or Partnership Interest [Member] onto the Instrument [Domain] of the Entity Listings, Instrument.", 'description_cn': '标明每个注册类别资本或普通股或其他所有权利益的发行在外量,如相关定期报告封面所示。如有多个类别或单位存在,请在实体列表Instrument[Domain]中通过添加如CommonClassA[Member]、CommonClassB[Member]或PartnershipInterest[Member]等类别/利益项来定义每个类别/利益。'} +{'id': '2468', 'data_set_name': 'fn_oth_income_loss_fx_transaction_and_tax_translation_adj_q', 'description': 'Amount after tax and reclassification adjustments of gain (loss) on foreign currency translation adjustments, foreign currency transactions designated and effective as economic hedges of a net investment in a foreign entity and intra-entity foreign currency transactions that are of a long-term-investment nature.', 'description_cn': '所得税及重分类后外币translation调整、外币交易指定并有效作为净投资经济套期和长期投资性质的内部外币交易产生的损益金额'} +{'id': '2501', 'data_set_name': 'fn_treasury_stock_shares_a', 'description': 'Number of common and preferred shares that were previously issued and that were repurchased by the issuing entity and held in treasury on the financial statement date. This stock has no voting rights and receives no dividends.', 'description_cn': 'treasury_repossession_shares_num'} +{'id': '2524', 'data_set_name': 'fnd2_a_fedstyitxrt', 'description': 'Effective Income Tax Rate Reconciliation - Federal Statutory Income Tax Rate %', 'description_cn': '有效所得税率 reconciliation - 国家法定所得税率 %'} +========================= 数据字段结束 ======================================= + +以上数据字段和操作符, 按照Description说明组合, 但是每一个 alpha 组合的使用的数据字段和操作符不要过于集中, 在符合语法的情况下, 多尝试不同的组合 \ No newline at end of file diff --git a/manual_prompt/2026/01/04/manual_prompt_20260104153645.txt b/manual_prompt/2026/01/04/manual_prompt_20260104153645.txt new file mode 100644 index 0000000..dc44027 --- /dev/null +++ b/manual_prompt/2026/01/04/manual_prompt_20260104153645.txt @@ -0,0 +1,194 @@ +任务指令 +供应链数字化成熟度 +[[假设]] +供应链数字化程度较高的公司能够实时优化库存与物流效率,从而显著降低运营中断风险并提升盈利能力。当行业面临外部冲击时,这类公司往往表现出更强的抗压能力,导致其股价在波动市场中获得超额回报。 +[[实施方案]] +通过“ts_backfill”算子处理历史缺失数据,并将该指标除以行业平均值以消除行业间差异。对数字化成熟度持续上升的公司建立多头仓位,反之则建立空头仓位。 +[[阿尔法因子优化建议]] +建议采用动态分层算子,按公司规模与所属供应链类型(如制造业/零售业)进行子行业分组,并叠加横截面分位数算子,以捕捉数字化效益在不同周期中的非线性特征。这能有效减少宏观波动对策略的干扰。 +*=========================================================================================* +输出格式: +输出必须是且仅是纯文本。 +每一行是一个完整、独立、语法正确的WebSim表达式。 +严禁任何形式的解释、编号、标点包裹(如引号)、Markdown格式或额外文本。 +===================== !!! 重点(输出方式) !!! ===================== +现在,请严格遵守以上所有规则,开始生成可立即在WebSim中运行的复合因子表达式。 +**输出格式**(一行一个表达式, 每个表达式中间需要添加一个空行, 只要表达式本身, 不需要赋值, 不要解释, 不需要序号, 也不要输出多余的东西): +表达式 +表达式 +表达式 +... +表达式 +================================================================= +重申:请确保所有表达式都使用WorldQuant WebSim平台函数,不要使用pandas、numpy或其他Python库函数。输出必须是一行有效的WQ表达式。 +以下是我的账号有权限使用的操作符, 请严格按照操作符, 以及我提供的数据集, 进行生成,组合 20 个alpha: + +以下是我的账号有权限使用的操作符, 请严格按照操作符, 进行生成,组合因子 + +========================= 操作符开始 =======================================注意: Operator: 后面的是操作符, +Description: 此字段后面的是操作符对应的描述或使用说明, Description字段后面的内容是使用说明, 不是操作符 +特别注意!!!! 必须按照操作符字段Operator的使用说明生成 alphaOperator: abs(x) +Description: Absolute value of x +Operator: add(x, y, filter = false) +Description: Add all inputs (at least 2 inputs required). If filter = true, filter all input NaN to 0 before adding +Operator: densify(x) +Description: Converts a grouping field of many buckets into lesser number of only available buckets so as to make working with grouping fields computationally efficient +Operator: divide(x, y) +Description: x / y +Operator: inverse(x) +Description: 1 / x +Operator: log(x) +Description: Natural logarithm. For example: Log(high/low) uses natural logarithm of high/low ratio as stock weights. +Operator: max(x, y, ..) +Description: Maximum value of all inputs. At least 2 inputs are required +Operator: min(x, y ..) +Description: Minimum value of all inputs. At least 2 inputs are required +Operator: multiply(x ,y, ... , filter=false) +Description: Multiply all inputs. At least 2 inputs are required. Filter sets the NaN values to 1 +Operator: power(x, y) +Description: x ^ y +Operator: reverse(x) +Description: - x +Operator: sign(x) +Description: if input > 0, return 1; if input < 0, return -1; if input = 0, return 0; if input = NaN, return NaN; +Operator: signed_power(x, y) +Description: x raised to the power of y such that final result preserves sign of x +Operator: sqrt(x) +Description: Square root of x +Operator: subtract(x, y, filter=false) +Description: x-y. If filter = true, filter all input NaN to 0 before subtracting +Operator: and(input1, input2) +Description: Logical AND operator, returns true if both operands are true and returns false otherwise +Operator: if_else(input1, input2, input 3) +Description: If input1 is true then return input2 else return input3. +Operator: input1 < input2 +Description: If input1 < input2 return true, else return false +Operator: input1 <= input2 +Description: Returns true if input1 <= input2, return false otherwise +Operator: input1 == input2 +Description: Returns true if both inputs are same and returns false otherwise +Operator: input1 > input2 +Description: Logic comparison operators to compares two inputs +Operator: input1 >= input2 +Description: Returns true if input1 >= input2, return false otherwise +Operator: input1!= input2 +Description: Returns true if both inputs are NOT the same and returns false otherwise +Operator: is_nan(input) +Description: If (input == NaN) return 1 else return 0 +Operator: not(x) +Description: Returns the logical negation of x. If x is true (1), it returns false (0), and if input is false (0), it returns true (1). +Operator: or(input1, input2) +Description: Logical OR operator returns true if either or both inputs are true and returns false otherwise +Operator: days_from_last_change(x) +Description: Amount of days since last change of x +Operator: hump(x, hump = 0.01) +Description: Limits amount and magnitude of changes in input (thus reducing turnover) +Operator: kth_element(x, d, k) +Description: Returns K-th value of input by looking through lookback days. This operator can be used to backfill missing data if k=1 +Operator: last_diff_value(x, d) +Description: Returns last x value not equal to current x value from last d days +Operator: ts_arg_max(x, d) +Description: Returns the relative index of the max value in the time series for the past d days. If the current day has the max value for the past d days, it returns 0. If previous day has the max value for the past d days, it returns 1 +Operator: ts_arg_min(x, d) +Description: Returns the relative index of the min value in the time series for the past d days; If the current day has the min value for the past d days, it returns 0; If previous day has the min value for the past d days, it returns 1. +Operator: ts_av_diff(x, d) +Description: Returns x - tsmean(x, d), but deals with NaNs carefully. That is NaNs are ignored during mean computation +Operator: ts_backfill(x,lookback = d, k=1, ignore="NAN") +Description: Backfill is the process of replacing the NAN or 0 values by a meaningful value (i.e., a first non-NaN value) +Operator: ts_corr(x, y, d) +Description: Returns correlation of x and y for the past d days +Operator: ts_count_nans(x ,d) +Description: Returns the number of NaN values in x for the past d days +Operator: ts_covariance(y, x, d) +Description: Returns covariance of y and x for the past d days +Operator: ts_decay_linear(x, d, dense = false) +Description: Returns the linear decay on x for the past d days. Dense parameter=false means operator works in sparse mode and we treat NaN as 0. In dense mode we do not. +Operator: ts_delay(x, d) +Description: Returns x value d days ago +Operator: ts_delta(x, d) +Description: Returns x - ts_delay(x, d) +Operator: ts_mean(x, d) +Description: Returns average value of x for the past d days. +Operator: ts_product(x, d) +Description: Returns product of x for the past d days +Operator: ts_quantile(x,d, driver="gaussian" ) +Description: It calculates ts_rank and apply to its value an inverse cumulative density function from driver distribution. Possible values of driver (optional ) are "gaussian", "uniform", "cauchy" distribution where "gaussian" is the default. +Operator: ts_rank(x, d, constant = 0) +Description: Rank the values of x for each instrument over the past d days, then return the rank of the current value + constant. If not specified, by default, constant = 0. +Operator: ts_regression(y, x, d, lag = 0, rettype = 0) +Description: Returns various parameters related to regression function +Operator: ts_scale(x, d, constant = 0) +Description: Returns (x - ts_min(x, d)) / (ts_max(x, d) - ts_min(x, d)) + constant. This operator is similar to scale down operator but acts in time series space +Operator: ts_std_dev(x, d) +Description: Returns standard deviation of x for the past d days +Operator: ts_step(1) +Description: Returns days' counter +Operator: ts_sum(x, d) +Description: Sum values of x for the past d days. +Operator: ts_zscore(x, d) +Description: Z-score is a numerical measurement that describes a value's relationship to the mean of a group of values. Z-score is measured in terms of standard deviations from the mean: (x - tsmean(x,d)) / tsstddev(x,d). This operator may help reduce outliers and drawdown. +Operator: normalize(x, useStd = false, limit = 0.0) +Description: Calculates the mean value of all valid alpha values for a certain date, then subtracts that mean from each element +Operator: quantile(x, driver = gaussian, sigma = 1.0) +Description: Rank the raw vector, shift the ranked Alpha vector, apply distribution (gaussian, cauchy, uniform). If driver is uniform, it simply subtract each Alpha value with the mean of all Alpha values in the Alpha vector +Operator: rank(x, rate=2) +Description: Ranks the input among all the instruments and returns an equally distributed number between 0.0 and 1.0. For precise sort, use the rate as 0 +Operator: scale(x, scale=1, longscale=1, shortscale=1) +Description: Scales input to booksize. We can also scale the long positions and short positions to separate scales by mentioning additional parameters to the operator +Operator: winsorize(x, std=4) +Description: Winsorizes x to make sure that all values in x are between the lower and upper limits, which are specified as multiple of std. +Operator: zscore(x) +Description: Z-score is a numerical measurement that describes a value's relationship to the mean of a group of values. Z-score is measured in terms of standard deviations from the mean +Operator: vec_avg(x) +Description: Taking mean of the vector field x +Operator: vec_sum(x) +Description: Sum of vector field x +Operator: bucket(rank(x), range="0, 1, 0.1" or buckets = "2,5,6,7,10") +Description: Convert float values into indexes for user-specified buckets. Bucket is useful for creating group values, which can be passed to GROUP as input +Operator: trade_when(x, y, z) +Description: Used in order to change Alpha values only under a specified condition and to hold Alpha values in other cases. It also allows to close Alpha positions (assign NaN values) under a specified condition +Operator: group_backfill(x, group, d, std = 4.0) +Description: If a certain value for a certain date and instrument is NaN, from the set of same group instruments, calculate winsorized mean of all non-NaN values over last d days +Operator: group_mean(x, weight, group) +Description: All elements in group equals to the mean +Operator: group_neutralize(x, group) +Description: Neutralizes Alpha against groups. These groups can be subindustry, industry, sector, country or a constant +Operator: group_rank(x, group) +Description: Each elements in a group is assigned the corresponding rank in this group +Operator: group_scale(x, group) +Description: Normalizes the values in a group to be between 0 and 1. (x - groupmin) / (groupmax - groupmin) +Operator: group_zscore(x, group) +Description: Calculates group Z-score - numerical measurement that describes a value's relationship to the mean of a group of values. Z-score is measured in terms of standard deviations from the mean. zscore = (data - mean) / stddev of x for each instrument within its group. +========================= 操作符结束 ======================================= + +========================= 数据字段开始 ======================================= +注意: data_set_name: 后面的是数据字段(可以使用), description: 此字段后面的是数据字段对应的描述或使用说明(不能使用), description_cn字段后面的内容是中文使用说明(不能使用) + +{'id': 'id', 'data_set_name': 'name', 'description': 'description', 'description_cn': 'description_cn'} +{'id': '15', 'data_set_name': 'forward_price_120', 'description': 'Forward price at 120 days derived from a synthetic long option with payoff similar to long stock + option dynamics. Combination of long ATM call and short ATM put.', 'description_cn': '行权价格_120天_合成多头看涨期权_ATM看涨+看跌动态_long_ATM看涨_short_ATM看跌'} +{'id': '413', 'data_set_name': 'fnd6_newa2v1300_oiadp', 'description': 'Operating Income After Depreciation', 'description_cn': '营业净利润 after depreciation 不变,无需翻译。请提供需要翻译的专业字段名。'} +{'id': '478', 'data_set_name': 'fnd6_newqeventv110_cipenq', 'description': 'Comp Inc - Minimum Pension Adj', 'description_cn': '-compIncMinPensionAdj'} +{'id': '691', 'data_set_name': 'fnd6_newqv1300_cipenq', 'description': 'Comp Inc - Minimum Pension Adj', 'description_cn': '-comp_inc_min_pension_adj'} +{'id': '997', 'data_set_name': 'fscore_total', 'description': 'The final score M-Score is a weighted average of both the Pentagon surface score and the Pentagon acceleration score.', 'description_cn': '最终得分M-Score是pentagon表面分数和pentagon加速度分数的加权平均值。'} +{'id': '1000', 'data_set_name': 'multi_factor_acceleration_score_derivative', 'description': 'Change in the acceleration of multi-factor score compared to previous period.', 'description_cn': '多因子评分加速度变化 Compared_to_Previous_Period_Multi_Factor_Score_Acceleration_Change'} +{'id': '2057', 'data_set_name': 'nws12_afterhsz_tonhigh', 'description': 'Highest price reached during the session before the time of news', 'description_cn': '新闻公布前交易session中最高价'} +{'id': '2067', 'data_set_name': 'nws12_allz_result2', 'description': 'Percent change between the price at the time of the news release and the price at the close of the session', 'description_cn': '新闻发布日至交易session结束期间价格百分比变化'} +{'id': '2144', 'data_set_name': 'nws12_mainz_tonhigh', 'description': 'Highest price reached during the session before the time of news', 'description_cn': '新闻发布时间前交易session中最高价'} +{'id': '2306', 'data_set_name': 'rp_nip_ratings', 'description': 'News impact projection of analyst ratings-related news', 'description_cn': '分析师评级相关新闻的/news_impact_projection'} +{'id': '2354', 'data_set_name': 'fn_comp_not_rec_a', 'description': 'Unrecognized cost of unvested share-based compensation awards.', 'description_cn': '未兑现股份薪酬 award 的 unrecognized cost'} +{'id': '2356', 'data_set_name': 'fn_comp_not_rec_stock_options_a', 'description': 'Unrecognized cost of unvested stock option awards.', 'description_cn': '未行权股票期权 unrecognized_cost_of_unvested_stock_options'} +{'id': '2357', 'data_set_name': 'fn_comp_not_rec_stock_options_q', 'description': 'Unrecognized cost of unvested stock option awards.', 'description_cn': '未行权股票期权 unrecognized_cost_of_unvested_stock_options'} +{'id': '2393', 'data_set_name': 'fn_def_tax_assets_liab_net_q', 'description': 'Amount, after allocation of valuation allowances and deferred tax liability, of deferred tax asset attributable to deductible differences and carryforwards, without jurisdictional netting.', 'description_cn': '扣除减值准备和递延税负债后,attributable_to_deferred_tax_asset_amount'} +{'id': '2410', 'data_set_name': 'fn_entity_common_stock_shares_out_a', 'description': "Indicate number of shares or other units outstanding of each of registrant's classes of capital or common stock or other ownership interests, if and as stated on cover of related periodic report. Where multiple classes or units exist define each class/interest by adding class of stock items such as Common Class A [Member], Common Class B [Member] or Partnership Interest [Member] onto the Instrument [Domain] of the Entity Listings, Instrument.", 'description_cn': '标明每个注册类别资本或普通股票或其他所有权利益的已发行股份数量或其他单位数量,如相关定期报告封面上所示。如有多个类别或单位存在,则通过在实体列表Instrument[Domain]项下添加类似于Common Class A [Member]、Common Class B [Member]或Partnership Interest [Member]的分类来定义每个类别/利益。'} +{'id': '2411', 'data_set_name': 'fn_entity_common_stock_shares_out_q', 'description': "Indicate number of shares or other units outstanding of each of registrant's classes of capital or common stock or other ownership interests, if and as stated on cover of related periodic report. Where multiple classes or units exist define each class/interest by adding class of stock items such as Common Class A [Member], Common Class B [Member] or Partnership Interest [Member] onto the Instrument [Domain] of the Entity Listings, Instrument.", 'description_cn': '标明每个注册类别资本或普通股或其他所有权利益的发行在外量,如相关定期报告封面所示。如有多个类别或单位存在,请在实体列表Instrument[Domain]中通过添加如CommonClassA[Member]、CommonClassB[Member]或PartnershipInterest[Member]等类别/利益项来定义每个类别/利益。'} +{'id': '2436', 'data_set_name': 'fn_liab_fair_val_a', 'description': 'Liabilities Fair Value, Recurring, Total', 'description_cn': '看涨期权负债公允价值_ recurring_total'} +{'id': '2437', 'data_set_name': 'fn_liab_fair_val_l1_a', 'description': 'Liabilities Fair Value, Recurring, Level 1', 'description_cn': '看涨期权负债公允价值_ recurring_level_1'} +{'id': '2438', 'data_set_name': 'fn_liab_fair_val_l1_q', 'description': 'Liabilities Fair Value, Recurring, Level 1', 'description_cn': '看涨期权公允价值_ recurring_level_1'} +{'id': '2439', 'data_set_name': 'fn_liab_fair_val_l2_a', 'description': 'Liabilities Fair Value, Recurring, Level 2', 'description_cn': '看涨期权公允价值_ recurring_level_2'} +{'id': '2440', 'data_set_name': 'fn_liab_fair_val_l2_q', 'description': 'Liabilities Fair Value, Recurring, Level 2', 'description_cn': '看涨期权负债公允价值_ recurring_level_2'} +{'id': '2468', 'data_set_name': 'fn_oth_income_loss_fx_transaction_and_tax_translation_adj_q', 'description': 'Amount after tax and reclassification adjustments of gain (loss) on foreign currency translation adjustments, foreign currency transactions designated and effective as economic hedges of a net investment in a foreign entity and intra-entity foreign currency transactions that are of a long-term-investment nature.', 'description_cn': '所得税及重分类后外币translation调整、外币交易指定并有效作为净投资经济套期和长期投资性质的内部外币交易产生的损益金额'} +{'id': '2501', 'data_set_name': 'fn_treasury_stock_shares_a', 'description': 'Number of common and preferred shares that were previously issued and that were repurchased by the issuing entity and held in treasury on the financial statement date. This stock has no voting rights and receives no dividends.', 'description_cn': 'treasury_repossession_shares_num'} +{'id': '2524', 'data_set_name': 'fnd2_a_fedstyitxrt', 'description': 'Effective Income Tax Rate Reconciliation - Federal Statutory Income Tax Rate %', 'description_cn': '有效所得税率 reconciliation - 国家法定所得税率 %'} +========================= 数据字段结束 ======================================= + +以上数据字段和操作符, 按照Description说明组合, 但是每一个 alpha 组合的使用的数据字段和操作符不要过于集中, 在符合语法的情况下, 多尝试不同的组合 \ No newline at end of file diff --git a/manual_prompt/2026/01/04/manual_prompt_20260104161540.txt b/manual_prompt/2026/01/04/manual_prompt_20260104161540.txt new file mode 100644 index 0000000..dc44027 --- /dev/null +++ b/manual_prompt/2026/01/04/manual_prompt_20260104161540.txt @@ -0,0 +1,194 @@ +任务指令 +供应链数字化成熟度 +[[假设]] +供应链数字化程度较高的公司能够实时优化库存与物流效率,从而显著降低运营中断风险并提升盈利能力。当行业面临外部冲击时,这类公司往往表现出更强的抗压能力,导致其股价在波动市场中获得超额回报。 +[[实施方案]] +通过“ts_backfill”算子处理历史缺失数据,并将该指标除以行业平均值以消除行业间差异。对数字化成熟度持续上升的公司建立多头仓位,反之则建立空头仓位。 +[[阿尔法因子优化建议]] +建议采用动态分层算子,按公司规模与所属供应链类型(如制造业/零售业)进行子行业分组,并叠加横截面分位数算子,以捕捉数字化效益在不同周期中的非线性特征。这能有效减少宏观波动对策略的干扰。 +*=========================================================================================* +输出格式: +输出必须是且仅是纯文本。 +每一行是一个完整、独立、语法正确的WebSim表达式。 +严禁任何形式的解释、编号、标点包裹(如引号)、Markdown格式或额外文本。 +===================== !!! 重点(输出方式) !!! ===================== +现在,请严格遵守以上所有规则,开始生成可立即在WebSim中运行的复合因子表达式。 +**输出格式**(一行一个表达式, 每个表达式中间需要添加一个空行, 只要表达式本身, 不需要赋值, 不要解释, 不需要序号, 也不要输出多余的东西): +表达式 +表达式 +表达式 +... +表达式 +================================================================= +重申:请确保所有表达式都使用WorldQuant WebSim平台函数,不要使用pandas、numpy或其他Python库函数。输出必须是一行有效的WQ表达式。 +以下是我的账号有权限使用的操作符, 请严格按照操作符, 以及我提供的数据集, 进行生成,组合 20 个alpha: + +以下是我的账号有权限使用的操作符, 请严格按照操作符, 进行生成,组合因子 + +========================= 操作符开始 =======================================注意: Operator: 后面的是操作符, +Description: 此字段后面的是操作符对应的描述或使用说明, Description字段后面的内容是使用说明, 不是操作符 +特别注意!!!! 必须按照操作符字段Operator的使用说明生成 alphaOperator: abs(x) +Description: Absolute value of x +Operator: add(x, y, filter = false) +Description: Add all inputs (at least 2 inputs required). If filter = true, filter all input NaN to 0 before adding +Operator: densify(x) +Description: Converts a grouping field of many buckets into lesser number of only available buckets so as to make working with grouping fields computationally efficient +Operator: divide(x, y) +Description: x / y +Operator: inverse(x) +Description: 1 / x +Operator: log(x) +Description: Natural logarithm. For example: Log(high/low) uses natural logarithm of high/low ratio as stock weights. +Operator: max(x, y, ..) +Description: Maximum value of all inputs. At least 2 inputs are required +Operator: min(x, y ..) +Description: Minimum value of all inputs. At least 2 inputs are required +Operator: multiply(x ,y, ... , filter=false) +Description: Multiply all inputs. At least 2 inputs are required. Filter sets the NaN values to 1 +Operator: power(x, y) +Description: x ^ y +Operator: reverse(x) +Description: - x +Operator: sign(x) +Description: if input > 0, return 1; if input < 0, return -1; if input = 0, return 0; if input = NaN, return NaN; +Operator: signed_power(x, y) +Description: x raised to the power of y such that final result preserves sign of x +Operator: sqrt(x) +Description: Square root of x +Operator: subtract(x, y, filter=false) +Description: x-y. If filter = true, filter all input NaN to 0 before subtracting +Operator: and(input1, input2) +Description: Logical AND operator, returns true if both operands are true and returns false otherwise +Operator: if_else(input1, input2, input 3) +Description: If input1 is true then return input2 else return input3. +Operator: input1 < input2 +Description: If input1 < input2 return true, else return false +Operator: input1 <= input2 +Description: Returns true if input1 <= input2, return false otherwise +Operator: input1 == input2 +Description: Returns true if both inputs are same and returns false otherwise +Operator: input1 > input2 +Description: Logic comparison operators to compares two inputs +Operator: input1 >= input2 +Description: Returns true if input1 >= input2, return false otherwise +Operator: input1!= input2 +Description: Returns true if both inputs are NOT the same and returns false otherwise +Operator: is_nan(input) +Description: If (input == NaN) return 1 else return 0 +Operator: not(x) +Description: Returns the logical negation of x. If x is true (1), it returns false (0), and if input is false (0), it returns true (1). +Operator: or(input1, input2) +Description: Logical OR operator returns true if either or both inputs are true and returns false otherwise +Operator: days_from_last_change(x) +Description: Amount of days since last change of x +Operator: hump(x, hump = 0.01) +Description: Limits amount and magnitude of changes in input (thus reducing turnover) +Operator: kth_element(x, d, k) +Description: Returns K-th value of input by looking through lookback days. This operator can be used to backfill missing data if k=1 +Operator: last_diff_value(x, d) +Description: Returns last x value not equal to current x value from last d days +Operator: ts_arg_max(x, d) +Description: Returns the relative index of the max value in the time series for the past d days. If the current day has the max value for the past d days, it returns 0. If previous day has the max value for the past d days, it returns 1 +Operator: ts_arg_min(x, d) +Description: Returns the relative index of the min value in the time series for the past d days; If the current day has the min value for the past d days, it returns 0; If previous day has the min value for the past d days, it returns 1. +Operator: ts_av_diff(x, d) +Description: Returns x - tsmean(x, d), but deals with NaNs carefully. That is NaNs are ignored during mean computation +Operator: ts_backfill(x,lookback = d, k=1, ignore="NAN") +Description: Backfill is the process of replacing the NAN or 0 values by a meaningful value (i.e., a first non-NaN value) +Operator: ts_corr(x, y, d) +Description: Returns correlation of x and y for the past d days +Operator: ts_count_nans(x ,d) +Description: Returns the number of NaN values in x for the past d days +Operator: ts_covariance(y, x, d) +Description: Returns covariance of y and x for the past d days +Operator: ts_decay_linear(x, d, dense = false) +Description: Returns the linear decay on x for the past d days. Dense parameter=false means operator works in sparse mode and we treat NaN as 0. In dense mode we do not. +Operator: ts_delay(x, d) +Description: Returns x value d days ago +Operator: ts_delta(x, d) +Description: Returns x - ts_delay(x, d) +Operator: ts_mean(x, d) +Description: Returns average value of x for the past d days. +Operator: ts_product(x, d) +Description: Returns product of x for the past d days +Operator: ts_quantile(x,d, driver="gaussian" ) +Description: It calculates ts_rank and apply to its value an inverse cumulative density function from driver distribution. Possible values of driver (optional ) are "gaussian", "uniform", "cauchy" distribution where "gaussian" is the default. +Operator: ts_rank(x, d, constant = 0) +Description: Rank the values of x for each instrument over the past d days, then return the rank of the current value + constant. If not specified, by default, constant = 0. +Operator: ts_regression(y, x, d, lag = 0, rettype = 0) +Description: Returns various parameters related to regression function +Operator: ts_scale(x, d, constant = 0) +Description: Returns (x - ts_min(x, d)) / (ts_max(x, d) - ts_min(x, d)) + constant. This operator is similar to scale down operator but acts in time series space +Operator: ts_std_dev(x, d) +Description: Returns standard deviation of x for the past d days +Operator: ts_step(1) +Description: Returns days' counter +Operator: ts_sum(x, d) +Description: Sum values of x for the past d days. +Operator: ts_zscore(x, d) +Description: Z-score is a numerical measurement that describes a value's relationship to the mean of a group of values. Z-score is measured in terms of standard deviations from the mean: (x - tsmean(x,d)) / tsstddev(x,d). This operator may help reduce outliers and drawdown. +Operator: normalize(x, useStd = false, limit = 0.0) +Description: Calculates the mean value of all valid alpha values for a certain date, then subtracts that mean from each element +Operator: quantile(x, driver = gaussian, sigma = 1.0) +Description: Rank the raw vector, shift the ranked Alpha vector, apply distribution (gaussian, cauchy, uniform). If driver is uniform, it simply subtract each Alpha value with the mean of all Alpha values in the Alpha vector +Operator: rank(x, rate=2) +Description: Ranks the input among all the instruments and returns an equally distributed number between 0.0 and 1.0. For precise sort, use the rate as 0 +Operator: scale(x, scale=1, longscale=1, shortscale=1) +Description: Scales input to booksize. We can also scale the long positions and short positions to separate scales by mentioning additional parameters to the operator +Operator: winsorize(x, std=4) +Description: Winsorizes x to make sure that all values in x are between the lower and upper limits, which are specified as multiple of std. +Operator: zscore(x) +Description: Z-score is a numerical measurement that describes a value's relationship to the mean of a group of values. Z-score is measured in terms of standard deviations from the mean +Operator: vec_avg(x) +Description: Taking mean of the vector field x +Operator: vec_sum(x) +Description: Sum of vector field x +Operator: bucket(rank(x), range="0, 1, 0.1" or buckets = "2,5,6,7,10") +Description: Convert float values into indexes for user-specified buckets. Bucket is useful for creating group values, which can be passed to GROUP as input +Operator: trade_when(x, y, z) +Description: Used in order to change Alpha values only under a specified condition and to hold Alpha values in other cases. It also allows to close Alpha positions (assign NaN values) under a specified condition +Operator: group_backfill(x, group, d, std = 4.0) +Description: If a certain value for a certain date and instrument is NaN, from the set of same group instruments, calculate winsorized mean of all non-NaN values over last d days +Operator: group_mean(x, weight, group) +Description: All elements in group equals to the mean +Operator: group_neutralize(x, group) +Description: Neutralizes Alpha against groups. These groups can be subindustry, industry, sector, country or a constant +Operator: group_rank(x, group) +Description: Each elements in a group is assigned the corresponding rank in this group +Operator: group_scale(x, group) +Description: Normalizes the values in a group to be between 0 and 1. (x - groupmin) / (groupmax - groupmin) +Operator: group_zscore(x, group) +Description: Calculates group Z-score - numerical measurement that describes a value's relationship to the mean of a group of values. Z-score is measured in terms of standard deviations from the mean. zscore = (data - mean) / stddev of x for each instrument within its group. +========================= 操作符结束 ======================================= + +========================= 数据字段开始 ======================================= +注意: data_set_name: 后面的是数据字段(可以使用), description: 此字段后面的是数据字段对应的描述或使用说明(不能使用), description_cn字段后面的内容是中文使用说明(不能使用) + +{'id': 'id', 'data_set_name': 'name', 'description': 'description', 'description_cn': 'description_cn'} +{'id': '15', 'data_set_name': 'forward_price_120', 'description': 'Forward price at 120 days derived from a synthetic long option with payoff similar to long stock + option dynamics. Combination of long ATM call and short ATM put.', 'description_cn': '行权价格_120天_合成多头看涨期权_ATM看涨+看跌动态_long_ATM看涨_short_ATM看跌'} +{'id': '413', 'data_set_name': 'fnd6_newa2v1300_oiadp', 'description': 'Operating Income After Depreciation', 'description_cn': '营业净利润 after depreciation 不变,无需翻译。请提供需要翻译的专业字段名。'} +{'id': '478', 'data_set_name': 'fnd6_newqeventv110_cipenq', 'description': 'Comp Inc - Minimum Pension Adj', 'description_cn': '-compIncMinPensionAdj'} +{'id': '691', 'data_set_name': 'fnd6_newqv1300_cipenq', 'description': 'Comp Inc - Minimum Pension Adj', 'description_cn': '-comp_inc_min_pension_adj'} +{'id': '997', 'data_set_name': 'fscore_total', 'description': 'The final score M-Score is a weighted average of both the Pentagon surface score and the Pentagon acceleration score.', 'description_cn': '最终得分M-Score是pentagon表面分数和pentagon加速度分数的加权平均值。'} +{'id': '1000', 'data_set_name': 'multi_factor_acceleration_score_derivative', 'description': 'Change in the acceleration of multi-factor score compared to previous period.', 'description_cn': '多因子评分加速度变化 Compared_to_Previous_Period_Multi_Factor_Score_Acceleration_Change'} +{'id': '2057', 'data_set_name': 'nws12_afterhsz_tonhigh', 'description': 'Highest price reached during the session before the time of news', 'description_cn': '新闻公布前交易session中最高价'} +{'id': '2067', 'data_set_name': 'nws12_allz_result2', 'description': 'Percent change between the price at the time of the news release and the price at the close of the session', 'description_cn': '新闻发布日至交易session结束期间价格百分比变化'} +{'id': '2144', 'data_set_name': 'nws12_mainz_tonhigh', 'description': 'Highest price reached during the session before the time of news', 'description_cn': '新闻发布时间前交易session中最高价'} +{'id': '2306', 'data_set_name': 'rp_nip_ratings', 'description': 'News impact projection of analyst ratings-related news', 'description_cn': '分析师评级相关新闻的/news_impact_projection'} +{'id': '2354', 'data_set_name': 'fn_comp_not_rec_a', 'description': 'Unrecognized cost of unvested share-based compensation awards.', 'description_cn': '未兑现股份薪酬 award 的 unrecognized cost'} +{'id': '2356', 'data_set_name': 'fn_comp_not_rec_stock_options_a', 'description': 'Unrecognized cost of unvested stock option awards.', 'description_cn': '未行权股票期权 unrecognized_cost_of_unvested_stock_options'} +{'id': '2357', 'data_set_name': 'fn_comp_not_rec_stock_options_q', 'description': 'Unrecognized cost of unvested stock option awards.', 'description_cn': '未行权股票期权 unrecognized_cost_of_unvested_stock_options'} +{'id': '2393', 'data_set_name': 'fn_def_tax_assets_liab_net_q', 'description': 'Amount, after allocation of valuation allowances and deferred tax liability, of deferred tax asset attributable to deductible differences and carryforwards, without jurisdictional netting.', 'description_cn': '扣除减值准备和递延税负债后,attributable_to_deferred_tax_asset_amount'} +{'id': '2410', 'data_set_name': 'fn_entity_common_stock_shares_out_a', 'description': "Indicate number of shares or other units outstanding of each of registrant's classes of capital or common stock or other ownership interests, if and as stated on cover of related periodic report. Where multiple classes or units exist define each class/interest by adding class of stock items such as Common Class A [Member], Common Class B [Member] or Partnership Interest [Member] onto the Instrument [Domain] of the Entity Listings, Instrument.", 'description_cn': '标明每个注册类别资本或普通股票或其他所有权利益的已发行股份数量或其他单位数量,如相关定期报告封面上所示。如有多个类别或单位存在,则通过在实体列表Instrument[Domain]项下添加类似于Common Class A [Member]、Common Class B [Member]或Partnership Interest [Member]的分类来定义每个类别/利益。'} +{'id': '2411', 'data_set_name': 'fn_entity_common_stock_shares_out_q', 'description': "Indicate number of shares or other units outstanding of each of registrant's classes of capital or common stock or other ownership interests, if and as stated on cover of related periodic report. Where multiple classes or units exist define each class/interest by adding class of stock items such as Common Class A [Member], Common Class B [Member] or Partnership Interest [Member] onto the Instrument [Domain] of the Entity Listings, Instrument.", 'description_cn': '标明每个注册类别资本或普通股或其他所有权利益的发行在外量,如相关定期报告封面所示。如有多个类别或单位存在,请在实体列表Instrument[Domain]中通过添加如CommonClassA[Member]、CommonClassB[Member]或PartnershipInterest[Member]等类别/利益项来定义每个类别/利益。'} +{'id': '2436', 'data_set_name': 'fn_liab_fair_val_a', 'description': 'Liabilities Fair Value, Recurring, Total', 'description_cn': '看涨期权负债公允价值_ recurring_total'} +{'id': '2437', 'data_set_name': 'fn_liab_fair_val_l1_a', 'description': 'Liabilities Fair Value, Recurring, Level 1', 'description_cn': '看涨期权负债公允价值_ recurring_level_1'} +{'id': '2438', 'data_set_name': 'fn_liab_fair_val_l1_q', 'description': 'Liabilities Fair Value, Recurring, Level 1', 'description_cn': '看涨期权公允价值_ recurring_level_1'} +{'id': '2439', 'data_set_name': 'fn_liab_fair_val_l2_a', 'description': 'Liabilities Fair Value, Recurring, Level 2', 'description_cn': '看涨期权公允价值_ recurring_level_2'} +{'id': '2440', 'data_set_name': 'fn_liab_fair_val_l2_q', 'description': 'Liabilities Fair Value, Recurring, Level 2', 'description_cn': '看涨期权负债公允价值_ recurring_level_2'} +{'id': '2468', 'data_set_name': 'fn_oth_income_loss_fx_transaction_and_tax_translation_adj_q', 'description': 'Amount after tax and reclassification adjustments of gain (loss) on foreign currency translation adjustments, foreign currency transactions designated and effective as economic hedges of a net investment in a foreign entity and intra-entity foreign currency transactions that are of a long-term-investment nature.', 'description_cn': '所得税及重分类后外币translation调整、外币交易指定并有效作为净投资经济套期和长期投资性质的内部外币交易产生的损益金额'} +{'id': '2501', 'data_set_name': 'fn_treasury_stock_shares_a', 'description': 'Number of common and preferred shares that were previously issued and that were repurchased by the issuing entity and held in treasury on the financial statement date. This stock has no voting rights and receives no dividends.', 'description_cn': 'treasury_repossession_shares_num'} +{'id': '2524', 'data_set_name': 'fnd2_a_fedstyitxrt', 'description': 'Effective Income Tax Rate Reconciliation - Federal Statutory Income Tax Rate %', 'description_cn': '有效所得税率 reconciliation - 国家法定所得税率 %'} +========================= 数据字段结束 ======================================= + +以上数据字段和操作符, 按照Description说明组合, 但是每一个 alpha 组合的使用的数据字段和操作符不要过于集中, 在符合语法的情况下, 多尝试不同的组合 \ No newline at end of file diff --git a/prepare_prompt/alpha_prompt.txt b/prepare_prompt/alpha_prompt.txt index e4e8f31..17d2ee4 100644 --- a/prepare_prompt/alpha_prompt.txt +++ b/prepare_prompt/alpha_prompt.txt @@ -1,13 +1,11 @@ 任务指令 +供应链数字化成熟度 [[假设]] -毛利率结构分化蕴含行业竞争格局信息:毛利率持续高于行业均值但呈现收窄趋势的企业,往往面临竞争加剧或定价权削弱,这可能预示未来盈利增速放缓;反之,毛利率持续低于行业均值但呈现扩张趋势的企业,可能正通过效率提升或产品结构改善获得竞争优势,未来盈利存在上行潜力。 - +供应链数字化程度较高的公司能够实时优化库存与物流效率,从而显著降低运营中断风险并提升盈利能力。当行业面临外部冲击时,这类公司往往表现出更强的抗压能力,导致其股价在波动市场中获得超额回报。 [[实施方案]] -使用基础数据“毛利”与“营业收入”计算毛利率(毛利/营业收入)。使用时序行业中性化算子(如“group_standardize_0”),在申万行业分类下,计算每只股票过去八个季度的毛利率相对于行业均值的标准分。再采用时序变化算子(如“ts_decay_linear”)捕捉该标准分在过去四个季度的变化斜率。斜率值为负(标准分下降)时赋予负阿尔法权重,斜率为正(标准分上升)时赋予正阿尔法权重。 - +通过“ts_backfill”算子处理历史缺失数据,并将该指标除以行业平均值以消除行业间差异。对数字化成熟度持续上升的公司建立多头仓位,反之则建立空头仓位。 [[阿尔法因子优化建议]] -该逻辑的核心在于“趋势”与“相对位置”的交互。建议引入横截面动量算子(如“rank”)对最终的斜率值进行再排序,以强化头部与尾部信号。同时,可考虑对营业收入增长率施加条件约束(例如,仅当营收增长率非负时信号生效),以避免因收缩业务导致毛利率被动提升的噪音干扰。 - +建议采用动态分层算子,按公司规模与所属供应链类型(如制造业/零售业)进行子行业分组,并叠加横截面分位数算子,以捕捉数字化效益在不同周期中的非线性特征。这能有效减少宏观波动对策略的干扰。 *=========================================================================================* diff --git a/prepare_prompt/keys_text.txt b/prepare_prompt/keys_text.txt index 70ca197..1251784 100644 --- a/prepare_prompt/keys_text.txt +++ b/prepare_prompt/keys_text.txt @@ -1 +1 @@ -["order_flow_clustering","cancel_attack_rate","volume_price_mi","algo_trading_active","net_buy_sell","order_cluster_entropy","quote_cancel_ratio","price_volume_correlation","high_frequency_signal","trade_when_algo","liquidity_imbalance","minute_order_interval","nonlinear_correlation","algorithmic_footprint","short_term_position","market_microstructure","quant_signal","execution_clustering","tick_imbalance","volume_synchronization"] \ No newline at end of file +["supply_chain_digital", "inventory_turnover", "logistics_efficiency", "operational_risk", "supply_chain_index", "digital_maturity", "supply_chain_management", "inventory_level", "logistics_cost", "supply_chain_resilience", "digital_transformation", "supply_chain_optimization", "inventory_accuracy", "order_fulfillment", "supply_chain_visibility", "warehouse_automation", "transportation_management", "demand_forecasting", "supplier_collaboration", "procurement_digital", "asset_turnover", "working_capital", "gross_margin", "operating_margin", "return_on_assets", "company_size", "revenue", "total_assets", "market_capitalization", "industry_classification"] \ No newline at end of file diff --git a/手动处理每天alpha.txt b/手动处理每天alpha.txt index c50a8f9..0294a85 100644 --- a/手动处理每天alpha.txt +++ b/手动处理每天alpha.txt @@ -1,39 +1,79 @@ -multiply(add(group_zscore(ts_rank(subtract(log(fn_def_tax_assets_liab_net_q), ts_sum(fn_liab_fair_val_a, 252)), 21), sector), ts_zscore(divide(log(multi_factor_acceleration_score_derivative), power(ts_delta(fn_liab_fair_val_a, 126), 2)), 252)), sqrt(reverse(ts_scale(signed_power(multi_factor_acceleration_score_derivative, 3), 63)))) +ts_backfill(fnd6_newa2v1300_oiadp, 250, 1) +ts_backfill(fn_entity_common_stock_shares_out_q, 250, 1) +ts_backfill(fn_treasury_stock_shares_a, 250, 1) -multiply(ts_rank(kth_element(fn_def_tax_assets_liab_net_q, 63, 1), 252), group_zscore(sign(ts_covariance(ts_delta(fn_liab_fair_val_a, 21), log(fn_def_tax_assets_liab_net_q), 63)), sector)) +divide(ts_backfill(fnd6_newa2v1300_oiadp, 250, 1), group_mean(ts_backfill(fnd6_newa2v1300_oiadp, 250, 1), 1, bucket(fn_comp_not_rec_a, buckets = "2,5,6,7,10"))) -add(group_zscore(ts_av_diff(ts_backfill(multi_factor_acceleration_score_derivative, 126), 21), sector), ts_rank(ts_delay(signed_power(log(multi_factor_acceleration_score_derivative), 2), 63), 252)) +ts_delta(ts_backfill(fn_liab_fair_val_l1_q, 250, 1), 60) -multiply(subtract(group_zscore(trade_when(log(fn_def_tax_assets_liab_net_q) > ts_mean(log(fn_def_tax_assets_liab_net_q), 252), ts_zscore(log(fn_def_tax_assets_liab_net_q), 63), divide(log(multi_factor_acceleration_score_derivative), fn_liab_fair_val_a)), sector), 0.5), ts_scale(sqrt(abs(fn_liab_fair_val_a)), 21)) +ts_rank(divide(fn_comp_not_rec_stock_options_a, fn_entity_common_stock_shares_out_q), 120, 0) -sqrt(ts_rank(multiply(group_zscore(subtract(ts_sum(log(fn_def_tax_assets_liab_net_q), 63), ts_product(log(multi_factor_acceleration_score_derivative), 21)), sector), reverse(kth_element(multi_factor_acceleration_score_derivative, 252, 1))), 126)) +group_zscore(ts_backfill(fn_def_tax_assets_liab_net_q, 250, 1), bucket(ts_backfill(fn_treasury_stock_shares_a, 250, 1), buckets = "2,5,6,7,10")) -multiply(sign(ts_delta(fn_liab_fair_val_a, 63)), group_zscore(ts_corr(ts_backfill(log(fn_def_tax_assets_liab_net_q), 252), reverse(multi_factor_acceleration_score_derivative), 126), sector)) +ts_corr(ts_backfill(fn_liab_fair_val_l2_a, 250, 1), ts_backfill(fn_liab_fair_val_l1_a, 250, 1), 60) -ts_zscore(divide(add(group_zscore(kth_element(multi_factor_acceleration_score_derivative, 126, 1), sector), ts_rank(signed_power(log(fn_def_tax_assets_liab_net_q), 3), 63)), ts_delay(sqrt(abs(fn_liab_fair_val_a)), 21)), 252) +multiply(sign(ts_delta(ts_backfill(fnd6_newqv1300_cipenq, 250, 1), 30)), ts_std_dev(ts_backfill(fn_comp_not_rec_stock_options_q, 250, 1), 60)) -multiply(ts_rank(group_zscore(ts_decay_linear(log(fn_def_tax_assets_liab_net_q), 252), sector), 126), subtract(1, ts_scale(divide(multi_factor_acceleration_score_derivative, fn_liab_fair_val_a), 63))) +if_else(ts_backfill(fscore_total, 250, 1) > group_mean(ts_backfill(fscore_total, 250, 1), 1, bucket(fn_comp_not_rec_a, buckets = "2,5,6,7,10")), ts_sum(ts_backfill(multi_factor_acceleration_score_derivative, 250, 1), 30), reverse(ts_sum(ts_backfill(multi_factor_acceleration_score_derivative, 250, 1), 30))) -add(reverse(ts_zscore(multi_factor_acceleration_score_derivative, 21)), group_zscore(ts_sum(trade_when(log(fn_def_tax_assets_liab_net_q) > ts_mean(log(fn_def_tax_assets_liab_net_q), 63), signed_power(ts_delta(fn_liab_fair_val_a, 126), 2), ts_backfill(log(fn_def_tax_assets_liab_net_q), 63)), 252), sector)) +subtract(ts_mean(ts_backfill(nws12_afterhsz_tonhigh, 250, 1), 60), ts_mean(ts_backfill(nws12_mainz_tonhigh, 250, 1), 60)) -multiply(sqrt(ts_rank(group_zscore(ts_product(log(multi_factor_acceleration_score_derivative), 63), sector), 126)), ts_av_diff(signed_power(ts_delay(fn_liab_fair_val_a, 21), 3), 252)) +ts_av_diff(ts_backfill(rp_nip_ratings, 250, 1), 30) -multiply(ts_rank(divide(ts_backfill(fnd6_drc, 252), assets), 126), subtract(group_rank(divide(ts_backfill(fnd6_drc, 252), assets), sector), 0.5)) +add(ts_backfill(fn_oth_income_loss_fx_transaction_and_tax_translation_adj_q, 250, 1), ts_backfill(fnd2_a_fedstyitxrt, 250, 1)) -multiply(ts_rank(divide(ts_backfill(fnd6_spce, 252), assets), 126), subtract(group_rank(divide(ts_backfill(fnd6_spce, 252), assets), sector), 0.5)) +power(divide(ts_backfill(fn_entity_common_stock_shares_out_a, 250, 1), ts_backfill(fn_treasury_stock_shares_a, 250, 1)), 0.5) -multiply(ts_rank(divide(ts_backfill(fnd6_newqeventv110_spceepsq, 252), assets), 126), subtract(group_rank(divide(ts_backfill(fnd6_newqeventv110_spceepsq, 252), assets), sector), 0.5)) +ts_zscore(ts_backfill(fn_liab_fair_val_a, 250, 1), 120) -multiply(ts_rank(divide(ts_backfill(fnd6_newqv1300_spcedq, 252), assets), 126), subtract(group_rank(divide(ts_backfill(fnd6_newqv1300_spcedq, 252), assets), sector), 0.5)) +group_neutralize(ts_backfill(forward_price_120, 250, 1), bucket(ts_backfill(fn_comp_not_rec_stock_options_a, 250, 1), buckets = "2,5,6,7,10")) -multiply(ts_rank(divide(ts_backfill(fnd6_newqeventv110_spcepd12, 252), assets), 126), subtract(group_rank(divide(ts_backfill(fnd6_newqeventv110_spcepd12, 252), assets), sector), 0.5)) +ts_regression(ts_backfill(fnd6_newa2v1300_oiadp, 250, 1), ts_backfill(fn_entity_common_stock_shares_out_q, 250, 1), 60, 0, 1) -multiply(ts_rank(divide(ts_backfill(fnd6_newqeventv110_spceeps12, 252), assets), 126), subtract(group_rank(divide(ts_backfill(fnd6_newqeventv110_spceeps12, 252), assets), sector), 0.5)) +log(divide(ts_backfill(fn_def_tax_assets_liab_net_q, 250, 1), ts_backfill(fn_comp_not_rec_a, 250, 1))) -multiply(ts_rank(divide(ts_backfill(fnd6_newqeventv110_glceaq, 252), assets), 126), subtract(group_rank(divide(ts_backfill(fnd6_newqeventv110_glceaq, 252), assets), sector), 0.5)) +ts_scale(ts_backfill(nws12_allz_result2, 250, 1), 60, 0.01) -multiply(ts_rank(divide(ts_backfill(fn_def_tax_assets_liab_net_q, 252), assets), 126), subtract(group_rank(divide(ts_backfill(fn_def_tax_assets_liab_net_q, 252), assets), sector), 0.5)) +signed_power(ts_delta(ts_backfill(fscore_total, 250, 1), 30), 2) -multiply(ts_rank(divide(ts_backfill(fn_liab_fair_val_a, 252), assets), 126), subtract(group_rank(divide(ts_backfill(fn_liab_fair_val_a, 252), assets), sector), 0.5)) +inverse(ts_mean(ts_backfill(fn_liab_fair_val_l2_q, 250, 1), 60)) -multiply(ts_rank(divide(ts_backfill(multi_factor_acceleration_score_derivative, 252), assets), 126), subtract(group_rank(divide(ts_backfill(multi_factor_acceleration_score_derivative, 252), assets), sector), 0.5)) \ No newline at end of file +ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1) + +divide(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), ts_mean(fnd6_newa2v1300_oiadp, 60)) + +ts_delta(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), 5) + +ts_rank(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), 60) + +ts_zscore(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), 30) + +group_mean(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), sector, industry) + +group_neutralize(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), industry) + +group_scale(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), sector) + +group_zscore(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), industry) + +ts_decay_linear(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), 10) + +ts_corr(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), ts_delay(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), 1), 20) + +ts_quantile(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), 60, driver="gaussian") + +ts_scale(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), 30) + +ts_std_dev(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), 20) + +ts_sum(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), 10) + +ts_av_diff(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), 20) + +ts_arg_max(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), 30) + +ts_arg_min(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), 30) + +ts_regression(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), ts_delay(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), 1), 20, rettype=0) + +group_backfill(ts_backfill(fnd6_newa2v1300_oiadp, lookback=20, k=1), industry, 20, std=4) \ No newline at end of file