cnhkmcp 2.1.3__py3-none-any.whl → 2.1.5__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- cnhkmcp/__init__.py +126 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/README.md +38 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/ace.log +0 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/config.json +6 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/get_knowledgeBase_tool/ace_lib.py +1514 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/get_knowledgeBase_tool/fetch_all_datasets.py +157 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/get_knowledgeBase_tool/fetch_all_documentation.py +132 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/get_knowledgeBase_tool/fetch_all_operators.py +99 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/get_knowledgeBase_tool/helpful_functions.py +180 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/icon.ico +0 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/icon.png +0 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/001_10_Steps_to_Start_on_BRAIN_documentation.json +14 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/001_Intermediate_Pack_-_Improve_your_Alpha_2_2_documentation.json +174 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/001_Intermediate_Pack_-_Understand_Results_1_2_documentation.json +167 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/001_Introduction_to_Alphas_documentation.json +145 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/001_Introduction_to_BRAIN_Expression_Language_documentation.json +107 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/001_WorldQuant_Challenge_documentation.json +56 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/001__Read_this_First_-_Starter_Pack_documentation.json +404 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/002_How_to_choose_the_Simulation_Settings_documentation.json +268 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/002_Simulate_your_first_Alpha_documentation.json +88 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/002__Alpha_Examples_for_Beginners_documentation.json +254 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/002__Alpha_Examples_for_Bronze_Users_documentation.json +114 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/002__Alpha_Examples_for_Silver_Users_documentation.json +79 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/002__How_BRAIN_works_documentation.json +184 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/003_Clear_these_tests_before_submitting_an_Alpha_documentation.json +388 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/003_Parameters_in_the_Simulation_results_documentation.json +243 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/004_Group_Data_Fields_documentation.json +69 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/004_How_to_use_the_Data_Explorer_documentation.json +142 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/004_Model77_dataset_documentation.json +14 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/004_Sentiment1_dataset_documentation.json +14 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/004_Understanding_Data_in_BRAIN_Key_Concepts_and_Tips_documentation.json +182 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/004_Vector_Data_Fields_documentation.json +30 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/005_Crowding_Risk-Neutralized_Alphas_documentation.json +64 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/005_D0_documentation.json +66 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/005_Double_Neutralization_documentation.json +53 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/005_Fast_D1_Documentation_documentation.json +304 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/005_Investability_Constrained_Metrics_documentation.json +129 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/005_Must-read_posts_How_to_improve_your_Alphas_documentation.json +14 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/005_Neutralization_documentation.json +29 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/005_RAM_Risk-Neutralized_Alphas_documentation.json +64 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/005_Risk_Neutralization_Default_setting_documentation.json +75 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/005_Risk_Neutralized_Alphas_documentation.json +171 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/005_Statistical_Risk-Neutralized_Alphas_documentation.json +51 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/006_EUR_TOP2500_Universe_documentation.json +35 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/006_GLB_TOPDIV3000_Universe_documentation.json +48 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/006_Getting_Started_China_Research_for_Consultants_Gold_documentation.json +142 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/006_Getting_started_on_Illiquid_Universes_Gold_documentation.json +46 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/006_Getting_started_with_USA_TOPSP500_universe_Gold_documentation.json +62 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/006_Global_Alphas_Gold_documentation.json +66 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/006_India_Alphas_documentation.json +35 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/007_Consultant_Dos_and_Don_ts_documentation.json +35 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/007_Consultant_Features_documentation.json +239 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/007_Consultant_Simulation_Features_documentation.json +149 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/007_Consultant_Submission_Tests_documentation.json +363 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/007_Finding_Consultant_Alphas_documentation.json +333 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/007_Power_Pool_Alphas_documentation.json +14 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/007_Research_Advisory_Program_documentation.json +35 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/007_Starting_Guide_for_Research_Consultants_documentation.json +14 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/007_Visualization_Tool_documentation.json +99 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/007_Your_Advisor_-_Kunqi_Jiang_documentation.json +53 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/007__Brain_Genius_documentation.json +288 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/007__Single_Dataset_Alphas_documentation.json +41 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/008_Advisory_Theme_Calendar_documentation.json +14 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/008_Multiplier_Rules_documentation.json +14 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/008_Overview_of_Themes_documentation.json +14 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/008_Theme_Calendar_documentation.json +14 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/009_Combo_Expression_documentation.json +272 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/009_Global_SuperAlphas_documentation.json +14 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/009_Helpful_Tips_documentation.json +58 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/009_Selection_Expression_documentation.json +1546 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/009_SuperAlpha_Operators_documentation.json +890 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/009_SuperAlpha_Results_documentation.json +83 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/009_What_is_a_SuperAlpha_documentation.json +261 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/010_BRAIN_API_documentation.json +515 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/010_Documentation_for_ACE_API_Library_Gold_documentation.json +27 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/010__Understanding_simulation_limits_documentation.json +210 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/arithmetic_operators.json +209 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/cross_sectional_operators.json +98 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/group_operators.json +121 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/logical_operators.json +145 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/reduce_operators.json +156 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/special_operators.json +35 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/test.txt +1 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/time_series_operators.json +386 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/transformational_operators.json +61 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/vector_operators.json +38 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/main.py +576 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/process_knowledge_base.py +281 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/rag_engine.py +408 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/requirements.txt +7 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/run.bat +3 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/vector_db/_manifest.json +302 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/vector_db/_meta.json +1 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/vector_db/chroma.sqlite3 +0 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242//321/211/320/266/320/246/321/206/320/274/320/261/321/210/342/224/220/320/240/321/210/320/261/320/234/321/206/320/231/320/243/321/205/342/225/235/320/220/321/206/320/230/320/241.py +265 -0
- cnhkmcp/untracked/APP/.gitignore +32 -0
- cnhkmcp/untracked/APP/MODULAR_STRUCTURE.md +112 -0
- cnhkmcp/untracked/APP/README.md +309 -0
- cnhkmcp/untracked/APP/Tranformer/Transformer.py +4989 -0
- cnhkmcp/untracked/APP/Tranformer/ace.log +0 -0
- cnhkmcp/untracked/APP/Tranformer/ace_lib.py +1514 -0
- cnhkmcp/untracked/APP/Tranformer/helpful_functions.py +180 -0
- cnhkmcp/untracked/APP/Tranformer/output/Alpha_candidates.json +7187 -0
- cnhkmcp/untracked/APP/Tranformer/output/Alpha_candidates_/321/207/320/264/342/225/221/321/204/342/225/233/320/233.json +654 -0
- cnhkmcp/untracked/APP/Tranformer/output/Alpha_generated_expressions_error.json +1 -0
- cnhkmcp/untracked/APP/Tranformer/output/Alpha_generated_expressions_success.json +47312 -0
- cnhkmcp/untracked/APP/Tranformer/output/Alpha_generated_expressions_/321/207/320/264/342/225/221/321/204/342/225/233/320/233/321/205/320/237/320/277/321/207/320/253/342/224/244/321/206/320/236/320/265/321/210/342/225/234/342/225/234/321/205/320/225/320/265Machine_lib.json +22 -0
- cnhkmcp/untracked/APP/Tranformer/parsetab.py +60 -0
- cnhkmcp/untracked/APP/Tranformer/template_summary.txt +3182 -0
- cnhkmcp/untracked/APP/Tranformer/transformer_config.json +7 -0
- cnhkmcp/untracked/APP/Tranformer/validator.py +889 -0
- cnhkmcp/untracked/APP/ace.log +69 -0
- cnhkmcp/untracked/APP/ace_lib.py +1514 -0
- cnhkmcp/untracked/APP/blueprints/__init__.py +6 -0
- cnhkmcp/untracked/APP/blueprints/feature_engineering.py +347 -0
- cnhkmcp/untracked/APP/blueprints/idea_house.py +221 -0
- cnhkmcp/untracked/APP/blueprints/inspiration_house.py +432 -0
- cnhkmcp/untracked/APP/blueprints/paper_analysis.py +570 -0
- cnhkmcp/untracked/APP/custom_templates/templates.json +1257 -0
- cnhkmcp/untracked/APP/give_me_idea/BRAIN_Alpha_Template_Expert_SystemPrompt.md +400 -0
- cnhkmcp/untracked/APP/give_me_idea/ace_lib.py +1514 -0
- cnhkmcp/untracked/APP/give_me_idea/alpha_data_specific_template_master.py +252 -0
- cnhkmcp/untracked/APP/give_me_idea/fetch_all_datasets.py +157 -0
- cnhkmcp/untracked/APP/give_me_idea/fetch_all_operators.py +99 -0
- cnhkmcp/untracked/APP/give_me_idea/helpful_functions.py +180 -0
- cnhkmcp/untracked/APP/give_me_idea/what_is_Alpha_template.md +11 -0
- cnhkmcp/untracked/APP/helpful_functions.py +180 -0
- cnhkmcp/untracked/APP/hkSimulator/ace_lib.py +1501 -0
- cnhkmcp/untracked/APP/hkSimulator/autosimulator.py +447 -0
- cnhkmcp/untracked/APP/hkSimulator/helpful_functions.py +180 -0
- cnhkmcp/untracked/APP/mirror_config.txt +20 -0
- cnhkmcp/untracked/APP/operaters.csv +129 -0
- cnhkmcp/untracked/APP/requirements.txt +53 -0
- cnhkmcp/untracked/APP/run_app.bat +28 -0
- cnhkmcp/untracked/APP/run_app.sh +34 -0
- cnhkmcp/untracked/APP/setup_tsinghua.bat +39 -0
- cnhkmcp/untracked/APP/setup_tsinghua.sh +43 -0
- cnhkmcp/untracked/APP/simulator/alpha_submitter.py +404 -0
- cnhkmcp/untracked/APP/simulator/simulator_wqb.py +618 -0
- cnhkmcp/untracked/APP/ssrn-3332513.pdf +109188 -19
- cnhkmcp/untracked/APP/static/brain.js +589 -0
- cnhkmcp/untracked/APP/static/decoder.js +1540 -0
- cnhkmcp/untracked/APP/static/feature_engineering.js +1729 -0
- cnhkmcp/untracked/APP/static/idea_house.js +937 -0
- cnhkmcp/untracked/APP/static/inspiration.js +465 -0
- cnhkmcp/untracked/APP/static/inspiration_house.js +868 -0
- cnhkmcp/untracked/APP/static/paper_analysis.js +390 -0
- cnhkmcp/untracked/APP/static/script.js +3082 -0
- cnhkmcp/untracked/APP/static/simulator.js +597 -0
- cnhkmcp/untracked/APP/static/styles.css +3127 -0
- cnhkmcp/untracked/APP/static/usage_widget.js +508 -0
- cnhkmcp/untracked/APP/templates/alpha_inspector.html +511 -0
- cnhkmcp/untracked/APP/templates/feature_engineering.html +960 -0
- cnhkmcp/untracked/APP/templates/idea_house.html +564 -0
- cnhkmcp/untracked/APP/templates/index.html +932 -0
- cnhkmcp/untracked/APP/templates/inspiration_house.html +861 -0
- cnhkmcp/untracked/APP/templates/paper_analysis.html +91 -0
- cnhkmcp/untracked/APP/templates/simulator.html +343 -0
- cnhkmcp/untracked/APP/templates/transformer_web.html +580 -0
- cnhkmcp/untracked/APP/usage.md +351 -0
- cnhkmcp/untracked/APP//321/207/342/225/235/320/250/321/205/320/230/320/226/321/204/342/225/225/320/220/321/211/320/221/320/243/321/206/320/261/320/265/ace_lib.py +1514 -0
- cnhkmcp/untracked/APP//321/207/342/225/235/320/250/321/205/320/230/320/226/321/204/342/225/225/320/220/321/211/320/221/320/243/321/206/320/261/320/265/brain_alpha_inspector.py +712 -0
- cnhkmcp/untracked/APP//321/207/342/225/235/320/250/321/205/320/230/320/226/321/204/342/225/225/320/220/321/211/320/221/320/243/321/206/320/261/320/265/helpful_functions.py +180 -0
- cnhkmcp/untracked/APP//321/210/342/224/220/320/240/321/210/320/261/320/234/321/206/320/231/320/243/321/205/342/225/235/320/220/321/206/320/230/320/241.py +2460 -0
- cnhkmcp/untracked/__init__.py +0 -0
- cnhkmcp/untracked/arXiv_API_Tool_Manual.md +490 -0
- cnhkmcp/untracked/arxiv_api.py +229 -0
- cnhkmcp/untracked/back_up/forum_functions.py +998 -0
- cnhkmcp/untracked/back_up/platform_functions.py +2886 -0
- cnhkmcp/untracked/brain-consultant.md +31 -0
- cnhkmcp/untracked/forum_functions.py +407 -0
- cnhkmcp/untracked/mcp/321/206/320/246/320/227/321/204/342/225/227/342/225/242/321/210/320/276/342/225/221/321/205/320/255/320/253/321/207/320/231/320/2302_/321/205/320/266/320/222/321/206/320/256/320/254/321/205/320/236/320/257/321/207/320/231/320/230/321/205/320/240/320/277/321/205/320/232/320/270/321/204/342/225/225/320/235/321/204/342/225/221/320/226/321/206/342/225/241/320/237/321/210/320/267/320/230/321/205/320/251/320/270/321/205/342/226/221/342/226/222/321/210/320/277/320/245/321/210/342/224/220/320/251/321/204/342/225/225/320/272/forum_functions.py +407 -0
- cnhkmcp/untracked/mcp/321/206/320/246/320/227/321/204/342/225/227/342/225/242/321/210/320/276/342/225/221/321/205/320/255/320/253/321/207/320/231/320/2302_/321/205/320/266/320/222/321/206/320/256/320/254/321/205/320/236/320/257/321/207/320/231/320/230/321/205/320/240/320/277/321/205/320/232/320/270/321/204/342/225/225/320/235/321/204/342/225/221/320/226/321/206/342/225/241/320/237/321/210/320/267/320/230/321/205/320/251/320/270/321/205/342/226/221/342/226/222/321/210/320/277/320/245/321/210/342/224/220/320/251/321/204/342/225/225/320/272/platform_functions.py +2601 -0
- cnhkmcp/untracked/mcp/321/206/320/246/320/227/321/204/342/225/227/342/225/242/321/210/320/276/342/225/221/321/205/320/255/320/253/321/207/320/231/320/2302_/321/205/320/266/320/222/321/206/320/256/320/254/321/205/320/236/320/257/321/207/320/231/320/230/321/205/320/240/320/277/321/205/320/232/320/270/321/204/342/225/225/320/235/321/204/342/225/221/320/226/321/206/342/225/241/320/237/321/210/320/267/320/230/321/205/320/251/320/270/321/205/342/226/221/342/226/222/321/210/320/277/320/245/321/210/342/224/220/320/251/321/204/342/225/225/320/272/user_config.json +31 -0
- cnhkmcp/untracked/mcp/321/206/320/246/320/227/321/204/342/225/227/342/225/242/321/210/320/276/342/225/221/321/205/320/255/320/253/321/207/320/231/320/2302_/321/205/320/266/320/222/321/206/320/256/320/254/321/205/320/236/320/257/321/207/320/231/320/230/321/205/320/240/320/277/321/205/320/232/320/270/321/204/342/225/225/320/235/321/204/342/225/221/320/226/321/206/342/225/241/320/237/321/210/320/267/320/230/321/205/320/251/320/270/321/205/342/226/221/342/226/222/321/210/320/277/320/245/321/210/342/224/220/320/251/321/204/342/225/225/320/272//321/210/320/276/320/271AI/321/210/320/277/342/225/227/321/210/342/224/220/320/251/321/204/342/225/225/320/272/321/206/320/246/320/227/321/206/320/261/320/263/321/206/320/255/320/265/321/205/320/275/320/266/321/204/342/225/235/320/252/321/204/342/225/225/320/233/321/210/342/225/234/342/225/234/321/206/342/225/241/320/237/321/210/320/267/320/230/321/205/320/251/320/270.md +101 -0
- cnhkmcp/untracked/mcp/321/206/320/246/320/227/321/204/342/225/227/342/225/242/321/210/320/276/342/225/221/321/205/320/255/320/253/321/207/320/231/320/2302_/321/205/320/266/320/222/321/206/320/256/320/254/321/205/320/236/320/257/321/207/320/231/320/230/321/205/320/240/320/277/321/205/320/232/320/270/321/204/342/225/225/320/235/321/204/342/225/221/320/226/321/206/342/225/241/320/237/321/210/320/267/320/230/321/205/320/251/320/270/321/205/342/226/221/342/226/222/321/210/320/277/320/245/321/210/342/224/220/320/251/321/204/342/225/225/320/272//321/211/320/225/320/235/321/207/342/225/234/320/276/321/205/320/231/320/235/321/210/342/224/220/320/240/321/210/320/261/320/234/321/206/320/230/320/241_/321/205/320/276/320/231/321/210/320/263/320/225/321/205/342/224/220/320/225/321/210/320/266/320/221/321/204/342/225/233/320/255/321/210/342/225/241/320/246/321/205/320/234/320/225.py +190 -0
- cnhkmcp/untracked/platform_functions.py +2601 -0
- cnhkmcp/untracked/sample_mcp_config.json +11 -0
- cnhkmcp/untracked/user_config.json +31 -0
- cnhkmcp/untracked//321/207/320/264/342/225/221/321/204/342/225/233/320/233/321/205/320/237/320/222/321/210/320/220/320/223/321/206/320/246/320/227/321/206/320/261/320/263_BRAIN_Alpha_Test_Requirements_and_Tips.md +202 -0
- cnhkmcp/untracked//321/207/320/264/342/225/221/321/204/342/225/233/320/233/321/205/342/225/226/320/265/321/204/342/225/234/320/254/321/206/342/225/241/320/221_Alpha_explaination_workflow.md +56 -0
- cnhkmcp/untracked//321/207/320/264/342/225/221/321/204/342/225/233/320/233/321/205/342/225/226/320/265/321/204/342/225/234/320/254/321/206/342/225/241/320/221_BRAIN_6_Tips_Datafield_Exploration_Guide.md +194 -0
- cnhkmcp/untracked//321/207/320/264/342/225/221/321/204/342/225/233/320/233/321/205/342/225/226/320/265/321/204/342/225/234/320/254/321/206/342/225/241/320/221_BRAIN_Alpha_Improvement_Workflow.md +101 -0
- cnhkmcp/untracked//321/207/320/264/342/225/221/321/204/342/225/233/320/233/321/205/342/225/226/320/265/321/204/342/225/234/320/254/321/206/342/225/241/320/221_Dataset_Exploration_Expert_Manual.md +436 -0
- cnhkmcp/untracked//321/207/320/264/342/225/221/321/204/342/225/233/320/233/321/205/342/225/226/320/265/321/204/342/225/234/320/254/321/206/342/225/241/320/221_daily_report_workflow.md +128 -0
- cnhkmcp/untracked//321/211/320/225/320/235/321/207/342/225/234/320/276/321/205/320/231/320/235/321/210/342/224/220/320/240/321/210/320/261/320/234/321/206/320/230/320/241_/321/205/320/276/320/231/321/210/320/263/320/225/321/205/342/224/220/320/225/321/210/320/266/320/221/321/204/342/225/233/320/255/321/210/342/225/241/320/246/321/205/320/234/320/225.py +192 -0
- {cnhkmcp-2.1.3.dist-info → cnhkmcp-2.1.5.dist-info}/METADATA +1 -1
- cnhkmcp-2.1.5.dist-info/RECORD +192 -0
- cnhkmcp-2.1.5.dist-info/top_level.txt +1 -0
- cnhkmcp-2.1.3.dist-info/RECORD +0 -6
- cnhkmcp-2.1.3.dist-info/top_level.txt +0 -1
- {cnhkmcp-2.1.3.dist-info → cnhkmcp-2.1.5.dist-info}/WHEEL +0 -0
- {cnhkmcp-2.1.3.dist-info → cnhkmcp-2.1.5.dist-info}/entry_points.txt +0 -0
- {cnhkmcp-2.1.3.dist-info → cnhkmcp-2.1.5.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,3182 @@
|
|
|
1
|
+
# BRAIN论坛Alpha模板精华总结
|
|
2
|
+
|
|
3
|
+
本文档旨在系统性地整理和总结优秀Alpha模板,它是一种可复用的标准化框架性表达式,它承载着特定的经济逻辑,并预留出若干 “配置项”(包括数据字段、算子、分组方式、衰减规则、中性化方案等),用于生成多个候选阿尔法因子。其典型流程为:数据清洗(数据回填、缩尾处理)→ 跨时间或跨标的维度进行转换 / 对比 → 排序 / 中性化处理 →(可选步骤)衰减调整 / 换手率优化。这种模板模式能够推动系统化的因子挖掘、复用与多元化配置,同时确保每一个因子都具备清晰可追溯的经济逻辑支撑。
|
|
4
|
+
以下每个模板都附有其核心思想、变量说明、适用场景及原帖链接,方便您理解、应用和进一步探索。
|
|
5
|
+
使用时请思考如何将下列模板与有的Alpha表达式结合,创造出新的模板来捕捉和发现市场规律,找到”好“公司和”坏“公司
|
|
6
|
+
**使用前请注意:**
|
|
7
|
+
* **过拟合风险**:部分模板可能存在过拟合风险,请谨慎使用,并结合IS-Ladder测试、多市场回测等方法进行验证。
|
|
8
|
+
* **参数调整**:模板中的参数(如时间窗口、数据集字段)需要根据您的具体研究目标和数据特性进行调整。
|
|
9
|
+
* **持续学习**:最好的模板是您自己创造的。希望本文档能激发您的灵感,而不是限制您的思维。
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## From: Alpha Examples from Learn101
|
|
14
|
+
|
|
15
|
+
### Momentum after news
|
|
16
|
+
**Hypothesis**: After news is released, if a stock takes a longer time to rise, it may show strong evidence of upward momentum, and it could be beneficial to take a long position in it.
|
|
17
|
+
**Expression**: `ts_backfill(vec_avg(nws12_prez_4l),504)`
|
|
18
|
+
**Settings**: Region: USA, Universe: TOP500, Delay: 1, Decay: 0, Neutralization: INDUSTRY, Truncation: 0.08, Pasteurization: ON
|
|
19
|
+
**逻辑链深度解析**:
|
|
20
|
+
* **时序相对性 (Step 4)**: 这是一个典型的时序信号。`ts_backfill` 的使用暗示了新闻数据是稀疏的(Step 4.2.4),需要填补空白以维持信号连续性。
|
|
21
|
+
* **算子深意**: `vec_avg` 用于聚合多维新闻向量,提取核心情绪/强度;`ts_backfill` 确保在无新闻日也能维持上一次的观点,直到新消息到来。
|
|
22
|
+
**优化方向**:
|
|
23
|
+
* **去噪 (Step 0)**: 新闻情绪可能存在极端噪音,建议在 `vec_avg` 后增加 `winsorize` 或 `rank`。
|
|
24
|
+
* **从属信号 (Subordinate)**: 叠加 `Social Media Effect`。若新闻情绪好但社媒热度低(噪音少),则放大权重;若社媒过热,可能反转。
|
|
25
|
+
* **门限交易 (Step 5)**: 仅在新闻情绪显著偏离均值时交易,如 `trade_when(abs(zscore(news)) > 1.5, ...)`。
|
|
26
|
+
|
|
27
|
+
### Pretax Income
|
|
28
|
+
**Hypothesis**: Pretax income is a good measure of a company's financial health and profitability.
|
|
29
|
+
**Expression**: `quantile(ts_rank(pretax_income,250))`
|
|
30
|
+
**Settings**: Region: USA, Universe: TOP3000, Delay: 1, Decay: 4, Neutralization: MARKET, Truncation: 0.01, Pasteurization: ON
|
|
31
|
+
**逻辑链深度解析**:
|
|
32
|
+
* **时序相对性 (Step 4)**: `ts_rank(..., 250)` 比较当前收入与过去一年的水平,寻找“自身改善”而非“绝对高收入”。
|
|
33
|
+
* **分布重塑 (Step 0)**: `quantile` 强制将信号拉伸为均匀分布,避免了极值影响,只关注相对排序。
|
|
34
|
+
**优化方向**:
|
|
35
|
+
* **区间优化 (Step 2)**: 收入微弱变化可能只是噪音。可改用 `ts_zscore` 并只在 >1 或 <-1 时交易。
|
|
36
|
+
* **从属信号**: 引入 `market_cap`。大市值的收入创新高可能比小市值更稳健(质量溢价)。
|
|
37
|
+
|
|
38
|
+
### Operating Earnings Yield
|
|
39
|
+
**Hypothesis**: If the operating income of a company is currently higher than its past 1 year history, buy the company's stock and vice-versa.
|
|
40
|
+
**Expression**: `ts_rank(operating_income,252)`
|
|
41
|
+
**Settings**: Region: USA, Universe: TOP3000, Delay: 1, Decay: 0, Neutralization: SUBINDUSTRY, Truncation: 0.08, Pasteurization: ON
|
|
42
|
+
**逻辑链深度解析**:
|
|
43
|
+
* **时序相对性 (Step 4)**: 纯粹的时序动量逻辑。`ts_rank` 将当前值映射到历史分位,捕捉“业绩改善”趋势。
|
|
44
|
+
**优化方向**:
|
|
45
|
+
* **组内比较 (Step 3)**: 考虑行业周期性。先做 `group_zscore(operating_income, industry)` 再做 `ts_rank`,剔除行业景气度影响,只看个股相对行业的改善。
|
|
46
|
+
* **门限 (Step 5)**: `trade_when(ts_rank > 0.8, ...)` 只做多业绩显著改善的股票。
|
|
47
|
+
|
|
48
|
+
### Appreciation of liabilities
|
|
49
|
+
**Hypothesis**: An increase in the fair value of liabilities could indicate a higher cost than expected.
|
|
50
|
+
**Expression**: `-ts_rank(fn_liab_fair_val_l1_a,252)`
|
|
51
|
+
**Settings**: Region: USA, Universe: TOP3000, Delay: 1, Decay: 0, Neutralization: SUBINDUSTRY, Truncation: 0.08, Pasteurization: ON
|
|
52
|
+
**逻辑链深度解析**:
|
|
53
|
+
* **反向信号**: 负号 `-` 表示这是一个反向指标(负债增加是坏事)。
|
|
54
|
+
* **时序相对性**: 同样基于 `ts_rank`,关注负债相对于自身历史的增长速度。
|
|
55
|
+
**优化方向**:
|
|
56
|
+
* **去噪**: 负债数据可能存在跳变,建议先 `winsorize`。
|
|
57
|
+
* **从属信号**: 结合 `cash_flow`。若负债增加但现金流同时也大幅增加(良性杠杆),则不应做空。
|
|
58
|
+
|
|
59
|
+
### Deferred Revenue
|
|
60
|
+
**Hypothesis**: Firms with high deferred revenue will surprise the market in the future when the deferred revenue is recognized.
|
|
61
|
+
**Expression**: `ts_backfill(fnd6_drc, 252)/assets`
|
|
62
|
+
**Settings**: Region: USA, Universe: TOP3000, Delay: 1, Decay: 0, Neutralization: SECTOR, Truncation: 1, Pasteurization: ON
|
|
63
|
+
**逻辑链深度解析**:
|
|
64
|
+
* **截面比较 (Step 3)**: 除以 `assets` 是为了标准化(Size Adjustment),使其在截面上可比。
|
|
65
|
+
* **数据填补 (Step 0)**: `ts_backfill` 处理财报数据的低频更新特性。
|
|
66
|
+
**优化方向**:
|
|
67
|
+
* **行业中性 (Step 3)**: 递延收入在软件/服务业常见,在制造业少见。必须做 `group_zscore(..., sector)` 或 `neutralize`,否则只是在做多特定行业。
|
|
68
|
+
* **时序变化 (Step 4)**: 关注递延收入的 *增长率* `ts_delta`,而不仅仅是绝对值。
|
|
69
|
+
|
|
70
|
+
### Reducing debt
|
|
71
|
+
**Hypothesis**: Take a long position in companies whose debt has decreased compared to the past.
|
|
72
|
+
**Expression**: `-ts_quantile(debt, 126)`
|
|
73
|
+
**Settings**: Region: USA, Universe: TOP3000, Delay: 1, Decay: 0, Neutralization: MARKET, Truncation: 0.01, Pasteurization: ON
|
|
74
|
+
**逻辑链深度解析**:
|
|
75
|
+
* **时序相对性**: `ts_quantile` 与 `ts_rank` 类似,捕捉债务下降趋势。
|
|
76
|
+
**优化方向**:
|
|
77
|
+
* **从属信号**: 结合 `interest_coverage` (利息保障倍数)。只有在偿债能力弱的公司中,债务减少才最重要(困境反转逻辑)。
|
|
78
|
+
|
|
79
|
+
### Power of leverage
|
|
80
|
+
**Hypothesis**: Companies with high liability-to-asset ratios often leverage debt as a strategic tool.
|
|
81
|
+
**Expression**: `liabilities/assets`
|
|
82
|
+
**Settings**: Region: USA, Universe: TOP3000, Delay: 1, Decay: 0, Neutralization: MARKET, Truncation: 0.01, Pasteurization: ON
|
|
83
|
+
**逻辑链深度解析**:
|
|
84
|
+
* **截面比较 (Step 3)**: 这是一个经典的截面因子(杠杆率)。
|
|
85
|
+
**优化方向**:
|
|
86
|
+
* **非线性 (Step 1)**: 杠杆通常是倒U型关系(适度杠杆好,过高杠杆坏)。考虑使用 `bucket` 分段,或 `trade_when` 剔除极端高杠杆。
|
|
87
|
+
* **行业中性**: 银行/地产杠杆天生高,必须行业中性化。
|
|
88
|
+
|
|
89
|
+
## From: Alpha Examples from Learn102
|
|
90
|
+
|
|
91
|
+
### Social Media Effect
|
|
92
|
+
**Hypothesis**: Poorly performing stocks are discussed more in general on social media platforms.
|
|
93
|
+
**Expression**: `-scl12_buzz`
|
|
94
|
+
**Settings**: Region: USA, Universe: TOP3000, Delay: 1, Decay: 0, Neutralization: INDUSTRY, Truncation: 0.01, Pasteurization: ON
|
|
95
|
+
**逻辑链深度解析**:
|
|
96
|
+
* **反向指标**: 负号暗示“关注度高=坏事”(可能是负面新闻缠身)。
|
|
97
|
+
* **原始信号**: 直接使用 `buzz`,假设线性关系。
|
|
98
|
+
**优化方向**:
|
|
99
|
+
* **去噪 (Step 0)**: 社媒数据极值多,必须 `log` 或 `winsorize`。
|
|
100
|
+
* **从属信号**: 结合 `sentiment`。若关注度高且情感为正,可能是好事;关注度高且情感负,才是做空机会。
|
|
101
|
+
* **门限**: `trade_when(rank(buzz) > 0.9, ...)` 只在极度热门时做空。
|
|
102
|
+
|
|
103
|
+
### Valuation Disconnect Swing Short
|
|
104
|
+
**Hypothesis**: A stock with high momentum and value score correlation suggests a disconnect between the stock's price and its intrinsic value.
|
|
105
|
+
**Expression**: `-ts_corr(ts_backfill(fscore_momentum,66),ts_backfill(fscore_value,66),756)`
|
|
106
|
+
**Settings**: Region: USA, Universe: TOP200, Delay: 1, Decay: 0, Neutralization: INDUSTRY, Truncation: 0.08, Pasteurization: ON
|
|
107
|
+
**逻辑链深度解析**:
|
|
108
|
+
* **高阶统计量**: 使用 `ts_corr` 捕捉两个因子之间的动态关系,而非因子本身。
|
|
109
|
+
* **逻辑**: 动量与价值相关性高,意味着价格脱离基本面(泡沫),因此做空(负号)。
|
|
110
|
+
**优化方向**:
|
|
111
|
+
* **窗口调整**: 756天(3年)非常长,捕捉的是长期结构变化。可尝试短窗口(如126天)捕捉短期背离。
|
|
112
|
+
|
|
113
|
+
### Network Dependence
|
|
114
|
+
**Hypothesis**: Long stocks of companies whose hub score of customers are low over the past two years.
|
|
115
|
+
**Expression**: `-ts_mean(pv13_ustomergraphrank_hub_rank,504)`
|
|
116
|
+
**Settings**: Region: USA, Universe: TOP1000, Delay: 1, Decay: 0, Neutralization: INDUSTRY, Truncation: 0.08, Pasteurization: ON
|
|
117
|
+
**逻辑链深度解析**:
|
|
118
|
+
* **供应链逻辑**: 客户集中度/中心度过高可能意味着风险(依赖大客户)。
|
|
119
|
+
* **平滑 (Step 4)**: `ts_mean(..., 504)` 说明这是一个非常慢的变量,关注长期结构。
|
|
120
|
+
**优化方向**:
|
|
121
|
+
* **从属信号**: 结合 `volatility`。高依赖度+高波动 = 极度危险。
|
|
122
|
+
|
|
123
|
+
## From: Alpha Examples from Learn103
|
|
124
|
+
|
|
125
|
+
### News-driven Volatility
|
|
126
|
+
**Hypothesis**: Stocks of companies that face high differences in their prices after any news release can be subject to varying sentiments.
|
|
127
|
+
**Expression**: `(ts_arg_max(ts_backfill(news_session_range, 20), 60))`
|
|
128
|
+
**Settings**: Region: USA, Universe: TOP3000, Delay: 1, Decay: 0, Neutralization: SECTOR, Truncation: 0.08, Pasteurization: ON
|
|
129
|
+
**逻辑链深度解析**:
|
|
130
|
+
* **事件驱动 (Step 4.2.3)**: `ts_arg_max` 寻找过去60天内波动最大的那一天(新闻日)。
|
|
131
|
+
* **算子深意**: 这不是直接用波动率,而是用“最大波动发生的时间距离”作为信号。
|
|
132
|
+
**优化方向**:
|
|
133
|
+
* **衰减逻辑**: 结合 `days_from_last_change` 或 `exp_decay`,让信号随时间减弱。
|
|
134
|
+
* **从属信号**: 叠加 `IV Skew`。若波动大且 Skew 偏空,做空;若 Skew 偏多,做多。
|
|
135
|
+
|
|
136
|
+
### Implied Volatility Spread as a predictor
|
|
137
|
+
**Hypothesis**: If the Call Open interest is higher than the Put Open interest, the stock may rise based on the intensity of the implied volatility spread.
|
|
138
|
+
**Expression**: `trade_when(pcr_oi_270 < 1, (implied_volatility_call_270-implied_volatility_put_270), -1)`
|
|
139
|
+
**Settings**: Region: USA, Universe: TOP3000, Delay: 1, Decay: 4, Neutralization: MARKET, Truncation: 0.08, Pasteurization: ON
|
|
140
|
+
**逻辑链深度解析**:
|
|
141
|
+
* **门限交易 (Step 5)**: `trade_when(pcr_oi < 1, ...)` 是典型的门禁逻辑。只有在看涨持仓量大于看跌时(情绪偏多),才使用 IV Spread 信号。
|
|
142
|
+
* **条件分支**: 不满足条件时给 `-1`(做空),这是一个激进的二元策略。
|
|
143
|
+
**优化方向**:
|
|
144
|
+
* **平滑**: IV 数据跳动大,建议对 Spread 做 `ts_mean` 或 `ts_decay_linear`。
|
|
145
|
+
|
|
146
|
+
## 《151 Trading Strategies》论文精华模板
|
|
147
|
+
|
|
148
|
+
本部分总结自Zura Kakushadze与Juan Andrés Serur合著的《151 Trading Strategies》一文,重点提炼其中适用于BRAIN平台的股票类策略,并将其泛化为可复用的Alpha模板。
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
### 1. 风险调整后动量模板 (Risk-Adjusted Momentum)
|
|
153
|
+
|
|
154
|
+
* **模板表达式**: `ts_mean(ts_delay(returns, <skip_period>), <lookback_period>) / ts_std_dev(ts_delay(returns, <skip_period>), <lookback_period>)`
|
|
155
|
+
* **核心思想**: 这是对经典动量因子的改进。它计算的是过去一段时间(lookback_period)的"时序夏普比率",即收益均值除以收益波动。同时,`ts_delay`跳过了最近一段时间(skip_period,通常为21天/1个月)的数据,以规避短期反转效应的干扰。该因子旨在寻找那些"高质量"的、持续且平稳的动量。
|
|
156
|
+
* **变量说明**:
|
|
157
|
+
* `<skip_period>`: 跳过的近期交易日数,如 `21`。
|
|
158
|
+
* `<lookback_period>`: 计算动量的回看窗口,如 `252`。
|
|
159
|
+
* **适用场景**: 通用性强,适用于构建稳健的动量类Alpha。
|
|
160
|
+
* **逻辑链深度解析**:
|
|
161
|
+
* **时序标准化 (Step 4)**: 分子是收益均值,分母是波动率。本质是 Rolling Sharpe Ratio。
|
|
162
|
+
* **去噪 (Step 0)**: `ts_delay` 跳过最近一个月,剔除了短期反转(Short-term Reversal)噪音,只保留中长期动量。
|
|
163
|
+
* **优化方向**:
|
|
164
|
+
* **从属信号**: 叠加 `turnover`。在低换手率时,动量更可靠(量价配合)。
|
|
165
|
+
* **残差化**: 先对 returns 做 `regression_neut` 剔除大盘影响,计算纯特异性动量。
|
|
166
|
+
* **适配自**: Section 3.1, "Price-momentum", `Rrisk.adj`
|
|
167
|
+
|
|
168
|
+
### 2. 标准化盈利超预期模板 (SUE - Standardized Unexpected Earnings)
|
|
169
|
+
|
|
170
|
+
* **模板表达式**: `(fnd_eps_q - ts_delay(fnd_eps_q, 4)) / ts_std_dev(fnd_eps_q - ts_delay(fnd_eps_q, 4), 8)`
|
|
171
|
+
* **核心思想**: 捕捉超预期的盈利增长。它计算的是最新一季的EPS相较于去年同期的增量,并用该增量自身过去8个季度的波动性进行标准化。标准化后的值(SUE)越高,代表盈利惊喜越大,是经典的盈利动量因子。
|
|
172
|
+
* **变量说明**:
|
|
173
|
+
* `fnd_eps_q`: 季度每股收益(EPS)字段。
|
|
174
|
+
* **适用场景**: `Fundamental`(基本面)数据集,用于事件驱动型Alpha。
|
|
175
|
+
* **逻辑链深度解析**:
|
|
176
|
+
* **季节性调整**: `ts_delay(..., 4)` 比较同比季度,消除季节性影响。
|
|
177
|
+
* **波动率标准化 (Step 0)**: 除以过去8季度的波动,将“惊喜”转化为标准差单位(Z-Score),使其在不同波动率的公司间可比。
|
|
178
|
+
* **优化方向**:
|
|
179
|
+
* **事件衰减 (Step 4)**: 叠加 `days_from_last_change`,让 SUE 信号随财报发布时间衰减。
|
|
180
|
+
* **从属信号**: 叠加 `Analyst Revision`。若 SUE 高且分析师上调预期,信号更强。
|
|
181
|
+
* **适配自**: Section 3.2, "Earnings-momentum", SUE
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
### 4. 隐含波动率偏斜动量模板 (Implied Volatility Skew Momentum)
|
|
185
|
+
|
|
186
|
+
* **模板表达式**: `ts_delta(implied_volatility_call_<window>, <period>) - ts_delta(implied_volatility_put_<window>, <period>)`
|
|
187
|
+
* **核心思想**: 捕捉市场情绪的变化。看涨期权IV的上升通常与乐观情绪相关,而看跌期权IV的上升则与悲观或避险情绪相关。该模板计算Call IV的变化量与Put IV变化量之差,旨在做多情绪改善、做空情绪恶化的股票。
|
|
188
|
+
* **变量说明**:
|
|
189
|
+
* `implied_volatility_call_<window>`: 不同期限的看涨期权隐含波动率。
|
|
190
|
+
* `implied_volatility_put_<window>`: 不同期限的看跌期权隐含波动率。
|
|
191
|
+
* `<period>`: 计算IV变化的时间窗口,如 `21` (月度变化)。
|
|
192
|
+
* **适用场景**: `Option`(期权)数据集,用于捕捉短中期市场情绪变化。
|
|
193
|
+
* **逻辑链深度解析**:
|
|
194
|
+
* **时序变化 (Step 4)**: 关注的是 IV 的 *变化* (`ts_delta`) 而非绝对值。
|
|
195
|
+
* **情绪差**: Call IV 涨幅 > Put IV 涨幅 -> 情绪改善。
|
|
196
|
+
* **优化方向**:
|
|
197
|
+
* **门限**: `trade_when(abs(skew_delta) > threshold, ...)` 只在情绪剧烈变化时交易。
|
|
198
|
+
* **事件驱动**: 在财报前(IV 高企时)该策略可能失效,需用 `days_to_earnings` 过滤。
|
|
199
|
+
* **适配自**: Section 3.5, "Implied volatility"
|
|
200
|
+
|
|
201
|
+
### 5. 残差动量模板 (Residual Momentum)
|
|
202
|
+
|
|
203
|
+
* **模板表达式**: `ts_mean(regression_neut(regression_neut(regression_neut(returns, <factor_1/>), <factor_2/>), <factor_3/>), <window/>)`
|
|
204
|
+
* **核心思想**: 提纯动量信号。传统动量可能包含了市场Beta、市值、价值等多种因子的敞口。此模板通过连续的中性化(例如依次对`<factor_1/>`, `<factor_2/>`, `<factor_3/>`执行`regression_neut`)剥离可被通用因子解释的部分,然后仅对无法被解释的"残差等价物"部分计算动量。
|
|
205
|
+
* **变量说明**:
|
|
206
|
+
* `<factor_1/>`, `<factor_2/>`, `<factor_3/>`: 市场通用因子,如 `mkt_beta`, `size_factor`, `value_factor`。
|
|
207
|
+
* `<window/>`: 计算残差动量的时间窗口。
|
|
208
|
+
* **适用场景**: 通用性强,是因子提纯、构建高质量Alpha的关键步骤。
|
|
209
|
+
* **逻辑链深度解析**:
|
|
210
|
+
* **提纯 (Step 0)**: 通过连续 `regression_neut` 剥离 Beta、Size、Value 等风格暴露。
|
|
211
|
+
* **时序动量**: 对剥离后的残差求 `ts_mean`。
|
|
212
|
+
* **优化方向**:
|
|
213
|
+
* **加权**: 使用 `ts_decay_linear` 代替 `ts_mean`,给予近期残差更大权重。
|
|
214
|
+
* **组内比较**: 在残差基础上再做 `group_rank`,寻找行业内最强特异动量。
|
|
215
|
+
* **适配自**: Section 3.7, "Residual momentum"
|
|
216
|
+
|
|
217
|
+
### 6. 风险加权回归均值回归模板 (Weighted Regression Mean-Reversion)
|
|
218
|
+
|
|
219
|
+
* **模板表达式**: `reverse(regression_neut(multiply(returns, power(inverse(ts_std_dev(returns, <window/>)), 2)), <group_matrix/>))`
|
|
220
|
+
* **核心思想**: 这是对标准行业中性化均值回归的增强。在对收益率进行行业中性化时,它为不同股票赋予了不同的权重。具体来说,它给历史波动率较低的股票更高的权重,认为这些股票的收益率数据更"可靠",在计算行业均值时应占更大比重。
|
|
221
|
+
* **变量说明**:
|
|
222
|
+
* `<group_matrix>`: 行业或分组的哑变量矩阵。
|
|
223
|
+
* `weights`: 回归权重,通常是可靠性的度量,如 `1/variance`。
|
|
224
|
+
* `<window>`: 计算波动率的时间窗口。
|
|
225
|
+
* **适用场景**: 适用于任何需要进行组内中性化或回归剥离的场景,尤其是当组内成员的信号质量或波动性差异较大时。
|
|
226
|
+
* **逻辑链深度解析**:
|
|
227
|
+
* **加权最小二乘 (WLS)**: 使用 `1/variance` 作为权重,认为低波动的股票信息更可靠。
|
|
228
|
+
* **均值回归**: `reverse` 捕捉残差的反转。
|
|
229
|
+
* **优化方向**:
|
|
230
|
+
* **从属信号**: 引入 `liquidity` 权重。流动性好的股票回归更快。
|
|
231
|
+
* **适配自**: Section 3.10, "Mean-reversion – weighted regression"
|
|
232
|
+
|
|
233
|
+
### 7. 移动平均线交叉模板 (Moving Average Crossover)
|
|
234
|
+
|
|
235
|
+
* **模板表达式**: `sign(ts_mean(<price/>, <short_window>) - ts_mean(<price/>, <long_window>))`
|
|
236
|
+
* **核心思想**: 经典的趋势跟踪策略。当短期均线上穿长期均线("金叉")时,表明短期趋势走强,产生买入信号。当短期均线下穿长期均线("死叉")时,表明趋势走弱,产生卖出信号。
|
|
237
|
+
* **变量说明**:
|
|
238
|
+
* `<price/>`: `close`, `vwap` 等价格字段。
|
|
239
|
+
* `<short_window>`: 短期均线窗口,如 `10`, `20`。
|
|
240
|
+
* `<long_window>`: 长期均线窗口,如 `50`, `100`。
|
|
241
|
+
* **适用场景**: 适用于趋势性较强的市场或资产。
|
|
242
|
+
* **逻辑链深度解析**:
|
|
243
|
+
* **低通滤波**: MA 本质是滤除高频噪音。
|
|
244
|
+
* **二元信号**: `sign` 输出 +1/-1,不包含强度信息。
|
|
245
|
+
* **优化方向**:
|
|
246
|
+
* **连续化 (Step 1)**: 去掉 `sign`,直接使用差值并标准化 (`zscore`),保留强度信息。
|
|
247
|
+
* **从属信号**: 结合 `ADX` (趋势强度指标)。只有在趋势强时才使用 MA 交叉。
|
|
248
|
+
* **适配自**: Section 3.12, "Two moving averages"
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
### 9. 渠道突破模板 (Channel Breakout)
|
|
253
|
+
|
|
254
|
+
* **模板表达式**: `alpha = if_else(greater(close, ts_max(high, <window/>)), 1, if_else(less(close, ts_min(low, <window/>)), -1, 0)); reverse(alpha)`
|
|
255
|
+
* **核心思想**: 这是一个经典的反转策略。它定义了一个由过去N日最高价和最低价构成的价格渠道(Channel)。当价格向上突破渠道上轨时,认为市场过热,产生卖出信号(-1);当价格向下突破渠道下轨时,认为市场超卖,产生买入信号(+1)。
|
|
256
|
+
* **变量说明**:
|
|
257
|
+
* `<window>`: 定义渠道的时间窗口,如 `20`。
|
|
258
|
+
* **适用场景**: 适用于有均值回归特性的市场或个股。
|
|
259
|
+
* **逻辑链深度解析**:
|
|
260
|
+
* **区间突破 (Step 2)**: 典型的“只在尾部交易”逻辑。中间区间为 0。
|
|
261
|
+
* **反转逻辑**: `reverse` 赌突破是假突破(False Breakout)。
|
|
262
|
+
* **优化方向**:
|
|
263
|
+
* **顺势/逆势切换**: 结合 `volatility`。低波时做反转(假突破),高波时做顺势(真突破)。
|
|
264
|
+
* **适配自**: Section 3.15, "Channel"
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
### 11. 价值因子基础模板 (Value Factor)
|
|
268
|
+
|
|
269
|
+
* **模板表达式**: `group_rank(<book_value/> / <market_cap/>)`
|
|
270
|
+
* **核心思想**: 经典的价值投资策略。它旨在买入账面价值相对于市场价值被低估的"价值股",并卖出被高估的"成长股"。最核心的衡量指标是账面市值比(Book-to-Price / Book-to-Market Ratio)。
|
|
271
|
+
* **变量说明**:
|
|
272
|
+
* `<book_value/>`: 公司账面价值或每股净资产字段。
|
|
273
|
+
* `<market_cap/>`: 公司市值或收盘价字段。
|
|
274
|
+
* **适用场景**: `Fundamental` (基本面) 数据集,作为构建多因子模型的基础因子之一。
|
|
275
|
+
* **逻辑链深度解析**:
|
|
276
|
+
* **组内比较 (Step 3)**: 价值因子在不同行业间不可比(如科技 vs 银行),必须用 `group_rank`。
|
|
277
|
+
* **优化方向**:
|
|
278
|
+
* **去噪**: 先 `winsorize` 再 `group_rank`。
|
|
279
|
+
* **从属信号**: 叠加 `Quality` (ROE)。避免买入“价值陷阱”(便宜但烂的公司)。
|
|
280
|
+
* **适配自**: Section 3.3, "Value"
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
### 13. 配对交易均值回归框架 (Pairs Trading)
|
|
285
|
+
|
|
286
|
+
* **模板表达式**: `signal_A = (close_A - close_B) - ts_mean(close_A - close_B, <window>); reverse(signal_A)`
|
|
287
|
+
* **核心思想**: 寻找历史上高度相关的两只股票(一个"配对"),当它们的价差(spread)偏离历史均值时进行套利。如果价差过大,则做空价高的股票、做多价低的股票,赌价差会回归。这是一个经典的统计套利和均值回归策略。
|
|
288
|
+
* **变量说明**:
|
|
289
|
+
* `close_A`, `close_B`: 配对股票A和B的价格序列。
|
|
290
|
+
* `<window>`: 计算历史价差均值的时间窗口。
|
|
291
|
+
* **适用场景**: 适用于同一行业内业务高度相似的公司,是构建市场中性策略的基础。
|
|
292
|
+
* **逻辑链深度解析**:
|
|
293
|
+
* **协整关系**: 构造平稳序列 `Spread`。
|
|
294
|
+
* **均值回归**: 赌 Spread 回归均值。
|
|
295
|
+
* **优化方向**:
|
|
296
|
+
* **动态阈值**: 使用 `ts_std_dev(Spread)` 设定动态开仓线(如 2倍标准差)。
|
|
297
|
+
* **止损**: 增加 `trade_when(abs(Spread) > 4*std, 0, ...)` 防止协整破裂。
|
|
298
|
+
* **适配自**: Section 3.8, "Pairs trading"
|
|
299
|
+
|
|
300
|
+
---
|
|
301
|
+
|
|
302
|
+
## 补充模板
|
|
303
|
+
|
|
304
|
+
### A. Analyst交叉分组打底(模板名:示例)
|
|
305
|
+
* **核心结构**: `financial_data = ts_backfill(<vec_func/>(<analyst_metric/>), 60); gp = group_cartesian_product(country, industry); <ts_operator/>(<group_operator/>(financial_data, gp), <window/>)`
|
|
306
|
+
* **思想**: 先对分析师字段做向量聚合(`vec_avg`、`vec_kurtosis`、`vec_ir`等),用`group_cartesian_product`构建国家×行业组合,再做组内标准化/中性化+时序处理,形成稳定的截面信号。
|
|
307
|
+
* **变量要点**: `analyst_metric`覆盖`mdl26_*`、`star_arm_*`等Analyst/SmartEstimate场景;`vec_func`选择聚合方式;`group_operator`用于行业/国家组内的scale或neutralize;`ts_operator`用于时间平滑(`ts_mean`、`ts_zscore`等);`window`在20/60/90/200之间取值。
|
|
308
|
+
* **适用场景**: 适合Analyst情感、预期修正类主题,想要跨国+行业分组的稳健截面信号。
|
|
309
|
+
* **逻辑链深度解析**:
|
|
310
|
+
* **数据填补 (Step 0)**: 分析师数据稀疏,必须 `ts_backfill`。
|
|
311
|
+
* **精细分组 (Step 3)**: `group_cartesian_product` 实现了“国家x行业”的精细化中性化,适合全球策略。
|
|
312
|
+
* **优化方向**:
|
|
313
|
+
* **算子选择**: `vec_ir` (信息比率) 比 `vec_avg` 更能体现分析师的一致性。
|
|
314
|
+
|
|
315
|
+
### B. 双重中性化(模板名:双重中性化:以Analyst15为例)
|
|
316
|
+
* **核心结构**: 与上类似,先`ts_backfill(vec_func(Analyst15字段), 60)`,再按国家×行业分组,做组内中性化与时序处理。
|
|
317
|
+
* **思想**: 针对`anl15_*`增长/估值/分红等字段,在截面层面做两次中性化(向量聚合后+组内处理),用于剥离共性行业/国家暴露。
|
|
318
|
+
* **变量要点**: 数据集中`anl15_*`覆盖多期增长率、PE、估值、分红等;`vec_func`与`ts_operator`选择决定信号平滑度;窗口建议60–200以保证填补稳定。
|
|
319
|
+
* **适用场景**: Analyst15预期修正、估值再定价类信号,需要同时消化国家+行业噪音的场景。
|
|
320
|
+
* **逻辑链深度解析**:
|
|
321
|
+
* **多重剥离**: 彻底消除风格暴露,追求纯 Alpha。
|
|
322
|
+
* **优化方向**:
|
|
323
|
+
* **顺序**: 先做行业中性,再做国家中性,通常更符合基本面逻辑。
|
|
324
|
+
|
|
325
|
+
### C. 组间比较(模板名:组间比较_GLB_topdiv)
|
|
326
|
+
* **核心结构**: 先在`country × <group1/>`分组内对回填后的向量聚合结果做`ts_zscore`和`group_zscore`,再计算组均值/极值(`group_min/median/max/sum/count`),用`resid = <compare/>(alpha, alpha_gpm)`求组间残差,最后再做组内+时序处理。
|
|
327
|
+
* **思想**: 对同一层级(如行业/子行业/交易所)之间的相对强弱做剥离,得到“相对组均值”的残差信号,适合跨组对比的Alpha挖掘。
|
|
328
|
+
* **变量要点**: `analyst_field`来源于`fnd8_*`基本面/现金流字段;`vec_op`可选`vec_max/avg/min`;`compare`可用`regression_neut`或`signed_power`提取残差;`t_window`取20/60/200/600,控制平滑与稳定性。
|
|
329
|
+
* **适用场景**: GLB区域的分红/现金流因子(topdiv)在国家+行业框架下的相对价值比较,关注跨组差异的策略。
|
|
330
|
+
* **逻辑链深度解析**:
|
|
331
|
+
* **相对价值**: 关注的是“我在我的组里是否优秀”,而不是“我绝对值多少”。
|
|
332
|
+
* **优化方向**:
|
|
333
|
+
* **非线性**: 使用 `rank` 代替原始值计算残差,对异常值更鲁棒。
|
|
334
|
+
|
|
335
|
+
### D. 组间比较(Analyst15版,模板名:组间比较_glb_topdiv_anl15)
|
|
336
|
+
* **核心结构**: 与上一模板相同,但`analyst_field`替换为`anl15_*`系列的增长/估值/分红字段。
|
|
337
|
+
* **思想**: 通过对Analyst15增长与估值预期的组间残差建模,捕捉行业/国家层面的相对高低估与预期修正。
|
|
338
|
+
* **变量要点**: `group1`可选industry/subindustry/sector/exchange;`compare`与`group_stats`同上;`ts_op`和`group_op`用于残差后再标准化和时序平滑。
|
|
339
|
+
* **适用场景**: 全球范围GLB,基于Analyst15预期数据的组间相对价值或动量信号。
|
|
340
|
+
* **逻辑链深度解析**:
|
|
341
|
+
* **预期差**: 寻找行业内被分析师低估/高估的股票。
|
|
342
|
+
* **优化方向**:
|
|
343
|
+
* **时序叠加**: 结合 `ts_delta`,寻找“行业内预期提升最快”的股票。
|
|
344
|
+
|
|
345
|
+
### E. 顾问分析示例(模板名:顾问分析示例)
|
|
346
|
+
* **核心结构**: `financial_data = ts_backfill(<mixdata/>, 90); gp = industry; <ts_operator/>(<group_operator/>(financial_data, gp), <window/>)`
|
|
347
|
+
* **思想**: 直接对`anl69_*`多字段做90日回填,行业组内标准化后再做时序平滑,生成简洁的行业中性信号。
|
|
348
|
+
* **变量要点**: `mixdata`覆盖`anl69_*`的EPS/EBIT/现金分红/目标价/报告日期等;`ts_operator`可用`ts_zscore`、`ts_scale`、`ts_rank`等;`window`提供60/120/220/600可调节频率。
|
|
349
|
+
* **适用场景**: Analyst69数据驱动的行业内预期跟踪、财报节奏/指引变化监控。
|
|
350
|
+
* **逻辑链深度解析**:
|
|
351
|
+
* **标准流程**: 填补 -> 截面标准化 -> 时序平滑。这是构建稳健因子的标准三板斧。
|
|
352
|
+
* **优化方向**:
|
|
353
|
+
* **事件驱动**: 在财报日前后缩短 `ts_mean` 的窗口,提高灵敏度。
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
## 新增模板(CAPM與估值、分析師期限、期權、搜尋優化)
|
|
358
|
+
|
|
359
|
+
### 1. CAPM殘差模板(市場/行業中性收益)
|
|
360
|
+
* **表達式**: `ts_regression(returns, group_mean(returns, log(ts_mean(cap,21)), sector), 252, rettype=0)`。
|
|
361
|
+
* **核心思想**: 回歸剔除市場/行業暴露,保留超額收益殘差作為Alpha。
|
|
362
|
+
* **適用場景**: 通用起手式,回歸殘差可作後續動量或價值信號的底板。
|
|
363
|
+
* **優化**: 改`rettype=2`獲取beta斜率,用於風險排序或低/高beta組合;可加入`winsorize`、`ts_backfill`預處理。
|
|
364
|
+
|
|
365
|
+
### 2. CAPM廣義殘差(任意特徵)
|
|
366
|
+
* **表達式**: `data = winsorize(ts_backfill(<data>,63), std=4); gpm = group_mean(data, log(ts_mean(cap,21)), sector); resid = ts_regression(data, gpm, 252, rettype=0)`。
|
|
367
|
+
* **核心思想**: 將任意特徵去除組均值成分,提取行業相對的特異性部分。
|
|
368
|
+
* **適用場景**: 基本面、情緒、替代數據的組內殘差提純。
|
|
369
|
+
* **優化**: 先`group_zscore`再回歸;對`resid`再做`ts_zscore`或`ts_mean`平滑。
|
|
370
|
+
|
|
371
|
+
### 3. CAPM Beta排序模板
|
|
372
|
+
* **表達式**: `target_data = winsorize(ts_backfill(<target>,63), std=4); market_data = winsorize(ts_backfill(<market>,63), std=4); beta = ts_regression(target_data, group_mean(market_data, log(ts_mean(cap,21)), sector), 252, rettype=2)`。
|
|
373
|
+
* **核心思想**: 提取行業內相對beta,作為風險/防禦排序;低beta偏防禦,高beta偏進攻。
|
|
374
|
+
* **優化**: 行業或國家分組;可按beta分桶做長低/短高,或反向用於高波段套利。
|
|
375
|
+
|
|
376
|
+
### 4. 實際-預估差異模板(Analyst Surprise)
|
|
377
|
+
* **表達式**: `group_zscore(subtract(group_zscore(<act>, industry), group_zscore(<est>, industry)), industry)`。
|
|
378
|
+
* **核心思想**: 行業內標準化後的實際值與預估值差,捕捉超預期或低於預期的驚喜。
|
|
379
|
+
* **適用場景**: analyst7/analyst14/earnings估值類字段。
|
|
380
|
+
* **優化**: 對差分再做`ts_zscore`;門檻交易只在|z|>1.5時開倉。
|
|
381
|
+
|
|
382
|
+
### 5. 分析師期限結構模板(近遠期預估斜率)
|
|
383
|
+
* **表達式**: `group_zscore(subtract(group_zscore(anl14_mean_eps_<p1>, industry), group_zscore(anl14_mean_eps_<p2>, industry)), industry)`,`<p1>/<p2>`為fp1/fp2/fy1/fy2等。
|
|
384
|
+
* **核心思想**: 比較短期與長期預估的行業內斜率,捕捉預期加速或鈍化。
|
|
385
|
+
* **適用場景**: analyst14/15 期別字段;適用成長/拐點挖掘。
|
|
386
|
+
* **優化**: 擴展到多期間差分或`ts_delta`跟蹤斜率變化;對斜率做`rank`或`winsorize`。
|
|
387
|
+
|
|
388
|
+
### 6. 期權Greeks淨值模板
|
|
389
|
+
* **表達式**: `group_operator(<put_greek> - <call_greek>, <group>)`,Greek可選Delta/Gamma/Vega/Theta。
|
|
390
|
+
* **核心思想**: 同組內看多vs看空的期權敏感度差,反映隱含情緒或凸性差異。
|
|
391
|
+
* **適用場景**: Option數據集;行業或市值分組下的情緒/波動信號。
|
|
392
|
+
* **優化**: 多Greek加權組合;對淨值再`ts_mean`平滑;事件期(財報)可降權或過濾。
|
|
393
|
+
|
|
394
|
+
### 7. IV Skew動量擴展
|
|
395
|
+
* **表達式**: `ts_delta(implied_volatility_call_<w>, <p>) - ts_delta(implied_volatility_put_<w>, <p>)`。
|
|
396
|
+
* **核心思想**: Call與Put隱含波動變化差捕捉情緒轉折;可做多情緒改善、做空情緒惡化。
|
|
397
|
+
* **優化**: 加`trade_when(abs(skew)>thr)`門檻;財報前後縮窗;行業中性。
|
|
398
|
+
|
|
399
|
+
### 8. 殘差動量精簡版
|
|
400
|
+
* **表達式**: `res = regression_neut(returns, <common_factor_matrix>); ts_mean(res, <window>)`。
|
|
401
|
+
* **核心思想**: 先剝離市場/風格暴露,再對特異收益做動量;較原版多重回歸更輕量。
|
|
402
|
+
* **優化**: 使用`ts_decay_linear`增加近期權重;行業內`group_rank`提升截面穩定度。
|
|
403
|
+
|
|
404
|
+
### 9. 分紅/現金流組間殘差(簡版)
|
|
405
|
+
* **表達式**: `alpha = ts_zscore(ts_backfill(<cf_or_div_field>,90)); g = group_mean(alpha, <group>, <weight_opt>); resid = alpha - g; group_zscore(resid, <group>)`。
|
|
406
|
+
* **核心思想**: 先回填平滑,再对組均值做殘差,捕捉組內相對高/低分紅或現金流質量。
|
|
407
|
+
* **適用場景**: fnd8/fnd6/topdiv等分紅現金流字段;行業/國家分組。
|
|
408
|
+
* **優化**: 權重可用log(cap)或vol逆;對resid再做`ts_mean`平滑。
|
|
409
|
+
|
|
410
|
+
---
|
|
411
|
+
|
|
412
|
+
## 模板格式说明
|
|
413
|
+
|
|
414
|
+
每个模板使用以下占位符格式:
|
|
415
|
+
- `<ts_op/>` - 时间序列操作符,如 `ts_rank`, `ts_mean`, `ts_delta`, `ts_ir`, `ts_stddev`, `ts_zscore`
|
|
416
|
+
- `<group_op/>` - 分组操作符,如 `group_rank`, `group_neutralize`, `group_zscore`
|
|
417
|
+
- `<vec_op/>` - 向量操作符,如 `vec_avg`, `vec_sum`, `vec_max`, `vec_min`, `vec_stddev`
|
|
418
|
+
- `<field/>` - 数据字段占位符
|
|
419
|
+
- `<d/>` - 时间窗口参数,常用值: `{5, 22, 66, 126, 252, 504}`
|
|
420
|
+
- `<group/>` - 分组字段,如 `industry`, `sector`, `subindustry`, `market`
|
|
421
|
+
|
|
422
|
+
---
|
|
423
|
+
|
|
424
|
+
## 第一部分:基础结构模板 (TPL-001 ~ TPL-010)
|
|
425
|
+
|
|
426
|
+
### TPL-001: 基本面时序排名
|
|
427
|
+
```
|
|
428
|
+
模板: <group_op/>(<ts_op/>(<field/>, <d/>), <group/>)
|
|
429
|
+
```
|
|
430
|
+
| 占位符 | 可选值 | 说明 |
|
|
431
|
+
|--------|--------|------|
|
|
432
|
+
| `<ts_op/>` | `ts_rank`, `ts_zscore`, `ts_delta`, `ts_ir` | 时序比较操作 |
|
|
433
|
+
| `<group_op/>` | `group_rank`, `group_zscore`, `group_neutralize` | 截面比较操作 |
|
|
434
|
+
| `<field/>` | 基本面字段: `eps`, `sales`, `assets`, `roe`, `roa` | 公司财务数据 |
|
|
435
|
+
| `<d/>` | `66`, `126`, `252` | 季度/半年/年 |
|
|
436
|
+
| `<group/>` | `industry`, `sector` | 行业分组 |
|
|
437
|
+
|
|
438
|
+
**示例**:
|
|
439
|
+
```
|
|
440
|
+
group_rank(ts_rank(eps, 252), industry)
|
|
441
|
+
group_zscore(ts_ir(sales, 126), sector)
|
|
442
|
+
```
|
|
443
|
+
|
|
444
|
+
---
|
|
445
|
+
|
|
446
|
+
### TPL-002: 利润/规模比率模板
|
|
447
|
+
```
|
|
448
|
+
模板: <ts_op/>(<profit_field/>/<size_field/>, <d/>)
|
|
449
|
+
```
|
|
450
|
+
| 占位符 | 可选值 | 说明 |
|
|
451
|
+
|--------|--------|------|
|
|
452
|
+
| `<ts_op/>` | `ts_rank`, `ts_zscore`, `ts_mean`, `ts_delta` | 时序操作 |
|
|
453
|
+
| `<profit_field/>` | `net_income`, `ebitda`, `operating_income`, `gross_profit` | 利润类字段 |
|
|
454
|
+
| `<size_field/>` | `assets`, `cap`, `sales`, `equity` | 规模类字段 |
|
|
455
|
+
| `<d/>` | `66`, `126`, `252` | 中长期窗口 |
|
|
456
|
+
|
|
457
|
+
**示例**:
|
|
458
|
+
```
|
|
459
|
+
ts_rank(net_income/assets, 252)
|
|
460
|
+
ts_zscore(ebitda/cap, 126)
|
|
461
|
+
ts_rank(operating_income/cap, 252)^2
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
---
|
|
465
|
+
|
|
466
|
+
### TPL-003: 向量数据处理模板 (VECTOR字段必用)
|
|
467
|
+
```
|
|
468
|
+
模板: <ts_op/>(<vec_op/>(<vector_field/>), <d/>)
|
|
469
|
+
```
|
|
470
|
+
| 占位符 | 可选值 | 说明 |
|
|
471
|
+
|--------|--------|------|
|
|
472
|
+
| `<ts_op/>` | `ts_rank`, `ts_mean`, `ts_delta`, `ts_ir`, `ts_zscore` | 时序操作 |
|
|
473
|
+
| `<vec_op/>` | `vec_avg`, `vec_sum`, `vec_max`, `vec_min`, `vec_stddev` | 向量聚合 |
|
|
474
|
+
| `<vector_field/>` | 分析师数据: `anl4_*`, `analyst_*`, `oth41_*` | VECTOR类型字段 |
|
|
475
|
+
| `<d/>` | `22`, `66`, `126` | 短中期窗口 |
|
|
476
|
+
|
|
477
|
+
**示例**:
|
|
478
|
+
```
|
|
479
|
+
ts_delta(vec_avg(anl4_eps_mean), 22)
|
|
480
|
+
ts_rank(vec_sum(analyst_estimate), 66)
|
|
481
|
+
ts_ir(vec_avg(oth41_s_west_eps_ftm_chg_3m), 126)
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
---
|
|
485
|
+
|
|
486
|
+
### TPL-004: 双重中性化模板
|
|
487
|
+
```
|
|
488
|
+
模板:
|
|
489
|
+
a = <ts_op/>(<field/>, <d/>);
|
|
490
|
+
a1 = group_neutralize(a, bucket(rank(cap), range="<range/>"));
|
|
491
|
+
group_neutralize(a1, <group/>)
|
|
492
|
+
```
|
|
493
|
+
| 占位符 | 可选值 | 说明 |
|
|
494
|
+
|--------|--------|------|
|
|
495
|
+
| `<ts_op/>` | `ts_zscore`, `ts_rank`, `ts_ir` | 时序操作 |
|
|
496
|
+
| `<field/>` | 任意数据字段 | 主信号 |
|
|
497
|
+
| `<d/>` | `66`, `126`, `252` | 时间窗口 |
|
|
498
|
+
| `<range/>` | `"0.1,1,0.1"`, `"0,1,0.1"` | 市值分组范围 |
|
|
499
|
+
| `<group/>` | `industry`, `sector`, `subindustry` | 行业分组 |
|
|
500
|
+
|
|
501
|
+
**示例**:
|
|
502
|
+
```
|
|
503
|
+
a = ts_zscore(fnd72_s_pit_or_is_q_spe_si, 252);
|
|
504
|
+
a1 = group_neutralize(a, bucket(rank(cap), range="0.1,1,0.1"));
|
|
505
|
+
group_neutralize(a1, subindustry)
|
|
506
|
+
```
|
|
507
|
+
|
|
508
|
+
---
|
|
509
|
+
|
|
510
|
+
### TPL-005: 回归中性化模板
|
|
511
|
+
```
|
|
512
|
+
模板:
|
|
513
|
+
a = <ts_op/>(<field/>, <d/>);
|
|
514
|
+
a1 = group_neutralize(a, bucket(rank(cap), range="<range/>"));
|
|
515
|
+
a2 = group_neutralize(a1, <group/>);
|
|
516
|
+
b = ts_zscore(cap, <d/>);
|
|
517
|
+
b1 = group_neutralize(b, <group/>);
|
|
518
|
+
regression_neut(a2, b1)
|
|
519
|
+
```
|
|
520
|
+
| 占位符 | 可选值 | 说明 |
|
|
521
|
+
|--------|--------|------|
|
|
522
|
+
| `<ts_op/>` | `ts_zscore`, `ts_rank` | 时序操作 |
|
|
523
|
+
| `<field/>` | 基本面或其他字段 | 主信号 |
|
|
524
|
+
| `<d/>` | `252`, `504` | 长期窗口 |
|
|
525
|
+
| `<range/>` | `"0.1,1,0.1"` | 市值分组 |
|
|
526
|
+
| `<group/>` | `subindustry`, `sector` | 行业分组 |
|
|
527
|
+
|
|
528
|
+
---
|
|
529
|
+
|
|
530
|
+
### TPL-006: 基本面动量模板
|
|
531
|
+
```
|
|
532
|
+
模板: log(ts_mean(<field/>, <d_short/>)) - log(ts_mean(<field/>, <d_long/>))
|
|
533
|
+
```
|
|
534
|
+
| 占位符 | 可选值 | 说明 |
|
|
535
|
+
|--------|--------|------|
|
|
536
|
+
| `<field/>` | `anl4_{data}_{stats}`, 基本面字段 | 数据字段 |
|
|
537
|
+
| `<d_short/>` | `20`, `44` | 短期窗口 |
|
|
538
|
+
| `<d_long/>` | `44`, `126` | 长期窗口 |
|
|
539
|
+
|
|
540
|
+
**示例**:
|
|
541
|
+
```
|
|
542
|
+
log(ts_mean(anl4_eps_mean, 44)) - log(ts_mean(anl4_eps_mean, 20))
|
|
543
|
+
```
|
|
544
|
+
|
|
545
|
+
---
|
|
546
|
+
|
|
547
|
+
### TPL-007: 财报事件驱动模板
|
|
548
|
+
```
|
|
549
|
+
模板:
|
|
550
|
+
event = ts_delta(<fundamental_field/>, -1);
|
|
551
|
+
if_else(event != 0, <alpha/>, nan)
|
|
552
|
+
```
|
|
553
|
+
| 占位符 | 可选值 | 说明 |
|
|
554
|
+
|--------|--------|------|
|
|
555
|
+
| `<fundamental_field/>` | `assets`, `sales`, `eps` | 基本面字段 |
|
|
556
|
+
| `<alpha/>` | 主信号表达式 | 事件发生时的Alpha |
|
|
557
|
+
|
|
558
|
+
**扩展版**:
|
|
559
|
+
```
|
|
560
|
+
change = if_else(days_from_last_change(<field/>) == <days/>, ts_delta(close, <d/>), nan)
|
|
561
|
+
```
|
|
562
|
+
|
|
563
|
+
---
|
|
564
|
+
|
|
565
|
+
### TPL-008: 标准化回填模板
|
|
566
|
+
```
|
|
567
|
+
模板: <ts_op/>(winsorize(ts_backfill(<field/>, <d_backfill/>), std=<std/>), <d/>)
|
|
568
|
+
```
|
|
569
|
+
| 占位符 | 可选值 | 说明 |
|
|
570
|
+
|--------|--------|------|
|
|
571
|
+
| `<ts_op/>` | `ts_rank`, `ts_decay_linear`, `ts_zscore` | 时序操作 |
|
|
572
|
+
| `<field/>` | 低频数据字段 | 需要回填的字段 |
|
|
573
|
+
| `<d_backfill/>` | `115`, `120`, `180` | 回填窗口 |
|
|
574
|
+
| `<std/>` | `4`, `3`, `5` | winsorize标准差 |
|
|
575
|
+
| `<d/>` | `10`, `22`, `60` | 操作窗口 |
|
|
576
|
+
|
|
577
|
+
**示例**:
|
|
578
|
+
```
|
|
579
|
+
ts_decay_linear(-densify(zscore(winsorize(ts_backfill(anl4_adjusted_netincome_ft, 115), std=4))), 10)
|
|
580
|
+
ts_rank(winsorize(ts_backfill(<data>, 120), std=4), 60)
|
|
581
|
+
```
|
|
582
|
+
|
|
583
|
+
---
|
|
584
|
+
|
|
585
|
+
### TPL-009: 信号质量分组模板
|
|
586
|
+
```
|
|
587
|
+
模板:
|
|
588
|
+
signal = <ts_op/>(<field/>, <d/>);
|
|
589
|
+
credit_quality = bucket(rank(ts_delay(signal, 1), rate=0), range="<range/>");
|
|
590
|
+
group_neutralize(<decay_op/>(signal, k=<k/>), credit_quality)
|
|
591
|
+
```
|
|
592
|
+
| 占位符 | 可选值 | 说明 |
|
|
593
|
+
|--------|--------|------|
|
|
594
|
+
| `<ts_op/>` | `ts_rank`, `ts_zscore` | 信号计算 |
|
|
595
|
+
| `<field/>` | 任意数据字段 | 主字段 |
|
|
596
|
+
| `<d/>` | `60`, `120` | 窗口 |
|
|
597
|
+
| `<range/>` | `"0.2,1,0.2"` | 分组范围 |
|
|
598
|
+
| `<decay_op/>` | `ts_weighted_decay` | 衰减操作 |
|
|
599
|
+
| `<k/>` | `0.5`, `0.3` | 衰减系数 |
|
|
600
|
+
|
|
601
|
+
---
|
|
602
|
+
|
|
603
|
+
### TPL-010: 复合分组中性化
|
|
604
|
+
```
|
|
605
|
+
模板: group_neutralize(<alpha/>, densify(<group1/>)*1000 + densify(<group2/>))
|
|
606
|
+
```
|
|
607
|
+
| 占位符 | 可选值 | 说明 |
|
|
608
|
+
|--------|--------|------|
|
|
609
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
610
|
+
| `<group1/>` | `subindustry`, `sector` | 主分组 |
|
|
611
|
+
| `<group2/>` | `country`, `exchange` | 次分组 |
|
|
612
|
+
|
|
613
|
+
---
|
|
614
|
+
|
|
615
|
+
## 第二部分:量价类模板 (TPL-101 ~ TPL-120)
|
|
616
|
+
|
|
617
|
+
### TPL-101: 换手率反转
|
|
618
|
+
```
|
|
619
|
+
模板: -<ts_op/>(volume/sharesout, <d/>)
|
|
620
|
+
```
|
|
621
|
+
| 占位符 | 可选值 | 说明 |
|
|
622
|
+
|--------|--------|------|
|
|
623
|
+
| `<ts_op/>` | `ts_mean`, `ts_rank`, `ts_std_dev` | 时序统计 |
|
|
624
|
+
| `<d/>` | `5`, `22`, `66` | 短中期窗口 |
|
|
625
|
+
|
|
626
|
+
**示例**:
|
|
627
|
+
```
|
|
628
|
+
-ts_mean(volume/sharesout, 22)
|
|
629
|
+
-ts_std_dev(volume/sharesout, 22)
|
|
630
|
+
```
|
|
631
|
+
|
|
632
|
+
---
|
|
633
|
+
|
|
634
|
+
### TPL-102: 量稳换手率 (STR)
|
|
635
|
+
```
|
|
636
|
+
模板: -ts_std_dev(volume/sharesout, <d1/>)/ts_mean(volume/sharesout, <d2/>)
|
|
637
|
+
```
|
|
638
|
+
| 占位符 | 可选值 | 说明 |
|
|
639
|
+
|--------|--------|------|
|
|
640
|
+
| `<d1/>` | `20`, `22` | 波动计算窗口 |
|
|
641
|
+
| `<d2/>` | `20`, `22` | 均值计算窗口 |
|
|
642
|
+
|
|
643
|
+
**优化版**:
|
|
644
|
+
```
|
|
645
|
+
模板: -group_neutralize(ts_std_dev(volume/sharesout, <d/>)/ts_mean(volume/sharesout, <d/>), bucket(rank(cap), range="0.1,1,0.1"))
|
|
646
|
+
```
|
|
647
|
+
|
|
648
|
+
---
|
|
649
|
+
|
|
650
|
+
### TPL-103: 价格反转模板
|
|
651
|
+
```
|
|
652
|
+
模板: -<ts_op/>(<price_field/>, <d/>)
|
|
653
|
+
```
|
|
654
|
+
| 占位符 | 可选值 | 说明 |
|
|
655
|
+
|--------|--------|------|
|
|
656
|
+
| `<ts_op/>` | `ts_delta`, `ts_mean`, `ts_rank` | 时序操作 |
|
|
657
|
+
| `<price_field/>` | `close`, `returns`, `close/open-1`, `open/ts_delay(close,1)-1` | 价格/收益字段 |
|
|
658
|
+
| `<d/>` | `3`, `5`, `22` | 短期窗口 |
|
|
659
|
+
|
|
660
|
+
**示例**:
|
|
661
|
+
```
|
|
662
|
+
-ts_delta(close, 5) # 价格变化反转
|
|
663
|
+
-ts_mean(returns, 22) # 收益均值反转
|
|
664
|
+
-ts_mean(close/open-1, 22) # 日内收益反转
|
|
665
|
+
-(open/ts_delay(close,1)-1) # 隔夜收益反转
|
|
666
|
+
```
|
|
667
|
+
|
|
668
|
+
---
|
|
669
|
+
|
|
670
|
+
### TPL-104: 价格乖离率
|
|
671
|
+
```
|
|
672
|
+
模板: -(close - ts_mean(close, <d/>))/ts_mean(close, <d/>)
|
|
673
|
+
```
|
|
674
|
+
| 占位符 | 可选值 | 说明 |
|
|
675
|
+
|--------|--------|------|
|
|
676
|
+
| `<d/>` | `5`, `22`, `66` | MA周期 |
|
|
677
|
+
|
|
678
|
+
---
|
|
679
|
+
|
|
680
|
+
### TPL-105: 量价相关性
|
|
681
|
+
```
|
|
682
|
+
模板: -ts_corr(<price_field/>, <volume_field/>, <d/>)
|
|
683
|
+
```
|
|
684
|
+
| 占位符 | 可选值 | 说明 |
|
|
685
|
+
|--------|--------|------|
|
|
686
|
+
| `<price_field/>` | `close`, `returns`, `abs(returns)` | 价格类 |
|
|
687
|
+
| `<volume_field/>` | `volume`, `volume/sharesout`, `adv20` | 成交量类 |
|
|
688
|
+
| `<d/>` | `22`, `66`, `126` | 相关性窗口 |
|
|
689
|
+
|
|
690
|
+
---
|
|
691
|
+
|
|
692
|
+
### TPL-106: 跳跃因子
|
|
693
|
+
```
|
|
694
|
+
模板: -group_neutralize(ts_mean((close/open-1) - log(close/open), <d/>), bucket(rank(cap), range="0.1,1,0.1"))
|
|
695
|
+
```
|
|
696
|
+
| 占位符 | 可选值 | 说明 |
|
|
697
|
+
|--------|--------|------|
|
|
698
|
+
| `<d/>` | `22`, `30`, `66` | 平均窗口 |
|
|
699
|
+
|
|
700
|
+
**带成交量增强版**:
|
|
701
|
+
```
|
|
702
|
+
模板: -group_neutralize(ts_mean((close/open-1) - log(close/open), <d/>) * ts_rank(volume, 5), bucket(rank(cap), range="0.1,1,0.1"))
|
|
703
|
+
```
|
|
704
|
+
|
|
705
|
+
---
|
|
706
|
+
|
|
707
|
+
### TPL-107: 指数衰减动量
|
|
708
|
+
```
|
|
709
|
+
模板: -ts_decay_exp_window(<field/>, <d/>, factor=<f/>)
|
|
710
|
+
```
|
|
711
|
+
| 占位符 | 可选值 | 说明 |
|
|
712
|
+
|--------|--------|------|
|
|
713
|
+
| `<field/>` | `returns`, `returns*(volume/sharesout)`, `close/open-1` | 收益类字段 |
|
|
714
|
+
| `<d/>` | `22`, `66`, `126` | 衰减窗口 |
|
|
715
|
+
| `<f/>` | `0.04`, `0.1`, `0.5`, `0.9` | 衰减因子,越小衰减越快 |
|
|
716
|
+
|
|
717
|
+
---
|
|
718
|
+
|
|
719
|
+
### TPL-108: 成交量周期函数 (VOC)
|
|
720
|
+
```
|
|
721
|
+
模板:
|
|
722
|
+
m_minus = ts_mean(volume, <d_long/>) - ts_mean(volume, <d_short/>);
|
|
723
|
+
delta = (ts_max(m_minus, <d_short/>) - m_minus)/(ts_max(m_minus, <d_short/>) - ts_min(m_minus, <d_short/>));
|
|
724
|
+
<weight1/>*delta + <weight2/>*ts_delay(delta, 1)
|
|
725
|
+
```
|
|
726
|
+
| 占位符 | 可选值 | 说明 |
|
|
727
|
+
|--------|--------|------|
|
|
728
|
+
| `<d_long/>` | `30`, `66` | 长期均值窗口 |
|
|
729
|
+
| `<d_short/>` | `10`, `22` | 短期均值窗口 |
|
|
730
|
+
| `<weight1/>` | `0.33`, `0.5` | 当日权重 |
|
|
731
|
+
| `<weight2/>` | `0.67`, `0.5` | 前日权重 |
|
|
732
|
+
|
|
733
|
+
---
|
|
734
|
+
|
|
735
|
+
### TPL-109: 市场相关性因子
|
|
736
|
+
```
|
|
737
|
+
模板:
|
|
738
|
+
mkt_ret = group_mean(returns, 1, market);
|
|
739
|
+
pt = ts_corr(returns, mkt_ret, <d/>);
|
|
740
|
+
rank(1/(2*(1-pt)))
|
|
741
|
+
```
|
|
742
|
+
| 占位符 | 可选值 | 说明 |
|
|
743
|
+
|--------|--------|------|
|
|
744
|
+
| `<d/>` | `10`, `22`, `66` | 相关性窗口 |
|
|
745
|
+
|
|
746
|
+
---
|
|
747
|
+
|
|
748
|
+
### TPL-110: 成交量趋势模板
|
|
749
|
+
```
|
|
750
|
+
模板: ts_decay_linear(volume/ts_sum(volume, <d_long/>), <d_short/>)
|
|
751
|
+
```
|
|
752
|
+
| 占位符 | 可选值 | 说明 |
|
|
753
|
+
|--------|--------|------|
|
|
754
|
+
| `<d_long/>` | `252`, `504` | 长期总量窗口 |
|
|
755
|
+
| `<d_short/>` | `10`, `22` | 衰减窗口 |
|
|
756
|
+
|
|
757
|
+
---
|
|
758
|
+
|
|
759
|
+
### TPL-111: VWAP收益相关
|
|
760
|
+
```
|
|
761
|
+
模板:
|
|
762
|
+
returns > -<threshold/> ? (ts_ir(ts_corr(ts_returns(vwap, 1), ts_delay(group_neutralize(<field/>, market), <d1/>), <d2/>), <d2/>)) : -1
|
|
763
|
+
```
|
|
764
|
+
| 占位符 | 可选值 | 说明 |
|
|
765
|
+
|--------|--------|------|
|
|
766
|
+
| `<threshold/>` | `0.1`, `0.05` | 收益阈值 |
|
|
767
|
+
| `<field/>` | 任意数据字段 | 信号字段 |
|
|
768
|
+
| `<d1/>` | `30`, `60` | 延迟窗口 |
|
|
769
|
+
| `<d2/>` | `90`, `120` | 相关性窗口 |
|
|
770
|
+
|
|
771
|
+
---
|
|
772
|
+
|
|
773
|
+
### TPL-112: 动量因子创建
|
|
774
|
+
```
|
|
775
|
+
模板: ts_sum(winsorize(ts_backfill(<data/>, <day/>), std=4.0), <n/>*21) - ts_sum(winsorize(ts_backfill(<data/>, <day/>), std=4.0), <m/>*21)
|
|
776
|
+
```
|
|
777
|
+
| 占位符 | 可选值 | 说明 |
|
|
778
|
+
|--------|--------|------|
|
|
779
|
+
| `<data/>` | `returns`, 基本面字段 | 数据字段 |
|
|
780
|
+
| `<day/>` | `120`, `180` | 回填窗口 |
|
|
781
|
+
| `<n/>` | `6`, `12` | 长期月数 |
|
|
782
|
+
| `<m/>` | `1`, `0.1*n` | 短期月数 |
|
|
783
|
+
|
|
784
|
+
---
|
|
785
|
+
|
|
786
|
+
### TPL-113: 线性衰减排名
|
|
787
|
+
```
|
|
788
|
+
模板: -ts_rank(ts_decay_linear(<field/>, <d1/>), <d2/>)
|
|
789
|
+
```
|
|
790
|
+
| 占位符 | 可选值 | 说明 |
|
|
791
|
+
|--------|--------|------|
|
|
792
|
+
| `<field/>` | `percent`, 任意时序信号 | 输入信号 |
|
|
793
|
+
| `<d1/>` | `10`, `22`, `150` | 衰减窗口 |
|
|
794
|
+
| `<d2/>` | `50`, `126` | 排名窗口 |
|
|
795
|
+
|
|
796
|
+
---
|
|
797
|
+
|
|
798
|
+
## 第三部分:情绪/新闻类模板 (TPL-201 ~ TPL-220)
|
|
799
|
+
|
|
800
|
+
### TPL-201: 情绪差值模板
|
|
801
|
+
```
|
|
802
|
+
模板: <ts_op/>(rank(ts_backfill(<positive_sentiment/>, <d/>)) - rank(ts_backfill(<negative_sentiment/>, <d/>)), <d2/>)
|
|
803
|
+
```
|
|
804
|
+
| 占位符 | 可选值 | 说明 |
|
|
805
|
+
|--------|--------|------|
|
|
806
|
+
| `<ts_op/>` | `ts_mean`, `ts_rank`, `ts_zscore` | 时序操作 |
|
|
807
|
+
| `<positive_sentiment/>` | 正面情绪字段 | 积极信号 |
|
|
808
|
+
| `<negative_sentiment/>` | 负面情绪字段 | 消极信号 |
|
|
809
|
+
| `<d/>` | `20`, `30` | 回填窗口 |
|
|
810
|
+
| `<d2/>` | `5`, `22` | 比较窗口 |
|
|
811
|
+
|
|
812
|
+
---
|
|
813
|
+
|
|
814
|
+
### TPL-202: 新闻情绪回归残差
|
|
815
|
+
```
|
|
816
|
+
模板:
|
|
817
|
+
sentiment = ts_backfill(ts_delay(<vec_op/>(<sentiment_field/>), 1), <d1/>);
|
|
818
|
+
vhat = ts_regression(volume, sentiment, <d2/>);
|
|
819
|
+
ehat = -ts_regression(returns, vhat, <d3/>);
|
|
820
|
+
group_rank(ehat, bucket(rank(cap), range="0,1,0.1"))
|
|
821
|
+
```
|
|
822
|
+
| 占位符 | 可选值 | 说明 |
|
|
823
|
+
|--------|--------|------|
|
|
824
|
+
| `<vec_op/>` | `vec_avg`, `vec_sum` | 情绪聚合方式 |
|
|
825
|
+
| `<sentiment_field/>` | `scl12_sentiment`, `snt_buzz_ret`, `nws18_relevance` | 情绪数据 |
|
|
826
|
+
| `<d1/>` | `20`, `30` | 回填窗口 |
|
|
827
|
+
| `<d2/>` | `120`, `250` | 成交量回归窗口 |
|
|
828
|
+
| `<d3/>` | `250`, `750` | 收益回归窗口 |
|
|
829
|
+
|
|
830
|
+
---
|
|
831
|
+
|
|
832
|
+
### TPL-203: 社交媒体情绪
|
|
833
|
+
```
|
|
834
|
+
模板: rank(<vec_op/>(scl12_alltype_buzzvec) * <vec_op/>(scl12_sentiment))
|
|
835
|
+
```
|
|
836
|
+
| 占位符 | 可选值 | 说明 |
|
|
837
|
+
|--------|--------|------|
|
|
838
|
+
| `<vec_op/>` | `vec_sum`, `vec_avg` | 向量聚合 |
|
|
839
|
+
|
|
840
|
+
**带条件版**:
|
|
841
|
+
```
|
|
842
|
+
模板:
|
|
843
|
+
sent_vol = vec_sum(scl12_alltype_buzzvec);
|
|
844
|
+
trade_when(rank(sent_vol) > 0.95, -zscore(scl12_buzz)*sent_vol, -1)
|
|
845
|
+
```
|
|
846
|
+
|
|
847
|
+
---
|
|
848
|
+
|
|
849
|
+
### TPL-204: 条件情绪过滤
|
|
850
|
+
```
|
|
851
|
+
模板:
|
|
852
|
+
group_rank(
|
|
853
|
+
sigmoid(if_else(ts_zscore(<sentiment_field/>, <d/>) > <threshold/>, ts_zscore(<sentiment_field/>, <d/>), 0)),
|
|
854
|
+
<group/>
|
|
855
|
+
)
|
|
856
|
+
```
|
|
857
|
+
| 占位符 | 可选值 | 说明 |
|
|
858
|
+
|--------|--------|------|
|
|
859
|
+
| `<sentiment_field/>` | 情绪字段 | 情绪数据 |
|
|
860
|
+
| `<d/>` | `22`, `30`, `66` | zscore窗口 |
|
|
861
|
+
| `<threshold/>` | `1`, `1.5`, `2` | z-score阈值 |
|
|
862
|
+
| `<group/>` | `industry`, `sector` | 分组字段 |
|
|
863
|
+
|
|
864
|
+
---
|
|
865
|
+
|
|
866
|
+
### TPL-205: 情绪+波动率复合
|
|
867
|
+
```
|
|
868
|
+
模板: log(1 + sigmoid(ts_zscore(<sentiment_field/>, <d1/>)) * sigmoid(ts_zscore(<volatility_field/>, <d2/>)))
|
|
869
|
+
```
|
|
870
|
+
| 占位符 | 可选值 | 说明 |
|
|
871
|
+
|--------|--------|------|
|
|
872
|
+
| `<sentiment_field/>` | 情绪字段 | 情绪数据 |
|
|
873
|
+
| `<volatility_field/>` | `option8_*`, 波动率字段 | 波动率数据 |
|
|
874
|
+
| `<d1/>` | `30`, `66` | 情绪窗口 |
|
|
875
|
+
| `<d2/>` | `30`, `66` | 波动率窗口 |
|
|
876
|
+
|
|
877
|
+
---
|
|
878
|
+
|
|
879
|
+
### TPL-206: 指数衰减情绪
|
|
880
|
+
```
|
|
881
|
+
模板: ts_decay_exp_window(vec_avg(<sentiment_field/>), <d/>, <factor/>)
|
|
882
|
+
```
|
|
883
|
+
| 占位符 | 可选值 | 说明 |
|
|
884
|
+
|--------|--------|------|
|
|
885
|
+
| `<sentiment_field/>` | `mws85_sentiment`, `nws18_ber` | 情绪向量字段 |
|
|
886
|
+
| `<d/>` | `10`, `22` | 衰减窗口 |
|
|
887
|
+
| `<factor/>` | `0.9`, `0.7` | 衰减因子 |
|
|
888
|
+
|
|
889
|
+
**双情绪组合**:
|
|
890
|
+
```
|
|
891
|
+
decayed_sentiment_1 = ts_decay_exp_window(vec_avg(mws85_sentiment), 10, 0.9);
|
|
892
|
+
decayed_sentiment_2 = ts_decay_exp_window(vec_avg(nws18_ber), 10, 0.9);
|
|
893
|
+
decayed_sentiment_1 + decayed_sentiment_2
|
|
894
|
+
```
|
|
895
|
+
|
|
896
|
+
---
|
|
897
|
+
|
|
898
|
+
### TPL-207: 新闻结果排名
|
|
899
|
+
```
|
|
900
|
+
模板:
|
|
901
|
+
percent = ts_rank(vec_stddev(<news_field/>), <d1/>);
|
|
902
|
+
-ts_rank(ts_decay_linear(percent, <d2/>), <d1/>)
|
|
903
|
+
```
|
|
904
|
+
| 占位符 | 可选值 | 说明 |
|
|
905
|
+
|--------|--------|------|
|
|
906
|
+
| `<news_field/>` | `nws12_prez_result2` | 新闻数据 |
|
|
907
|
+
| `<d1/>` | `50`, `66` | 排名窗口 |
|
|
908
|
+
| `<d2/>` | `150`, `252` | 衰减窗口 |
|
|
909
|
+
|
|
910
|
+
---
|
|
911
|
+
|
|
912
|
+
### TPL-208: 分组行业提取情绪
|
|
913
|
+
```
|
|
914
|
+
模板: scale(group_extra(ts_sum(sigmoid(ts_backfill(<data/>, <d1/>)), <d2/>) - ts_sum(sigmoid(ts_backfill(<data/>, <d1/>)), <d2/>), 0.5, densify(industry)))
|
|
915
|
+
```
|
|
916
|
+
| 占位符 | 可选值 | 说明 |
|
|
917
|
+
|--------|--------|------|
|
|
918
|
+
| `<data/>` | 情绪或基本面字段 | 数据字段 |
|
|
919
|
+
| `<d1/>` | `180`, `252` | 回填窗口 |
|
|
920
|
+
| `<d2/>` | `3`, `5` | 求和窗口 |
|
|
921
|
+
|
|
922
|
+
---
|
|
923
|
+
|
|
924
|
+
## 第四部分:期权类模板 (TPL-301 ~ TPL-320)
|
|
925
|
+
|
|
926
|
+
### TPL-301: 期权希腊字母差值
|
|
927
|
+
```
|
|
928
|
+
模板: <group_op/>(<put_greek/> - <call_greek/>, <group/>)
|
|
929
|
+
```
|
|
930
|
+
| 占位符 | 可选值 | 说明 |
|
|
931
|
+
|--------|--------|------|
|
|
932
|
+
| `<group_op/>` | `group_rank`, `group_neutralize`, `group_zscore` | 分组操作 |
|
|
933
|
+
| `<put_greek/>` | `put_delta`, `put_gamma`, `put_theta`, `put_vega` | Put希腊字母 |
|
|
934
|
+
| `<call_greek/>` | `call_delta`, `call_gamma`, `call_theta`, `call_vega` | Call希腊字母 |
|
|
935
|
+
| `<group/>` | `industry`, `sector` | 分组字段 |
|
|
936
|
+
|
|
937
|
+
---
|
|
938
|
+
|
|
939
|
+
### TPL-302: 期权价格信号
|
|
940
|
+
```
|
|
941
|
+
模板: group_rank(<ts_op/>(<vec_op/>(<option_price_field/>)/close, <d/>), <group/>)
|
|
942
|
+
```
|
|
943
|
+
| 占位符 | 可选值 | 说明 |
|
|
944
|
+
|--------|--------|------|
|
|
945
|
+
| `<ts_op/>` | `ts_scale`, `ts_rank`, `ts_zscore` | 时序操作 |
|
|
946
|
+
| `<vec_op/>` | `vec_max`, `vec_avg` | 向量操作 |
|
|
947
|
+
| `<option_price_field/>` | 期权价格字段 | 期权数据 |
|
|
948
|
+
| `<d/>` | `66`, `120`, `252` | 时间窗口 |
|
|
949
|
+
| `<group/>` | `industry`, `sector` | 分组字段 |
|
|
950
|
+
|
|
951
|
+
---
|
|
952
|
+
|
|
953
|
+
### TPL-303: 期权波动率信号
|
|
954
|
+
```
|
|
955
|
+
模板: sigmoid(<ts_op/>(<opt_high/> - <opt_close/>, <d/>))
|
|
956
|
+
```
|
|
957
|
+
| 占位符 | 可选值 | 说明 |
|
|
958
|
+
|--------|--------|------|
|
|
959
|
+
| `<ts_op/>` | `ts_ir`, `ts_stddev`, `ts_zscore`, `ts_mean` | 波动性操作 |
|
|
960
|
+
| `<opt_high/>` | 期权高价字段 | 期权最高价 |
|
|
961
|
+
| `<opt_close/>` | 期权收盘价字段 | 期权收盘价 |
|
|
962
|
+
| `<d/>` | `120`, `250`, `504` | 长期窗口 |
|
|
963
|
+
|
|
964
|
+
**说明**: 期权波动类因子通常需要较长窗口(120-504天)来捕捉稳定信号
|
|
965
|
+
|
|
966
|
+
---
|
|
967
|
+
|
|
968
|
+
### TPL-304: 隐含波动率比率
|
|
969
|
+
```
|
|
970
|
+
模板: <ts_op/>(implied_volatility_call_<tenor/>/parkinson_volatility_<tenor/>, <d/>)
|
|
971
|
+
```
|
|
972
|
+
| 占位符 | 可选值 | 说明 |
|
|
973
|
+
|--------|--------|------|
|
|
974
|
+
| `<ts_op/>` | `ts_rank`, `ts_zscore`, `ts_delta` | 时序操作 |
|
|
975
|
+
| `<tenor/>` | `120`, `270` | 期权期限 |
|
|
976
|
+
| `<d/>` | `66`, `126`, `252` | 窗口 |
|
|
977
|
+
|
|
978
|
+
---
|
|
979
|
+
|
|
980
|
+
### TPL-305: Put-Call成交量比
|
|
981
|
+
```
|
|
982
|
+
模板: <ts_op/>(pcr_vol_<tenor/>, <d/>)
|
|
983
|
+
```
|
|
984
|
+
| 占位符 | 可选值 | 说明 |
|
|
985
|
+
|--------|--------|------|
|
|
986
|
+
| `<ts_op/>` | `ts_rank`, `ts_delta`, `ts_zscore` | 时序操作 |
|
|
987
|
+
| `<tenor/>` | `10`, `30`, `60` | 期限 |
|
|
988
|
+
| `<d/>` | `22`, `66`, `126` | 窗口 |
|
|
989
|
+
|
|
990
|
+
---
|
|
991
|
+
|
|
992
|
+
### TPL-306: 期权盈亏平衡点
|
|
993
|
+
```
|
|
994
|
+
模板: group_rank(ts_zscore(<breakeven_field/>/close, <d/>), <group/>)
|
|
995
|
+
```
|
|
996
|
+
| 占位符 | 可选值 | 说明 |
|
|
997
|
+
|--------|--------|------|
|
|
998
|
+
| `<breakeven_field/>` | `call_breakeven_10`, `put_breakeven_10` | 盈亏平衡字段 |
|
|
999
|
+
| `<d/>` | `66`, `126`, `252` | 窗口 |
|
|
1000
|
+
| `<group/>` | `sector`, `industry` | 分组 |
|
|
1001
|
+
|
|
1002
|
+
---
|
|
1003
|
+
|
|
1004
|
+
## 第五部分:分析师类模板 (TPL-401 ~ TPL-420)
|
|
1005
|
+
|
|
1006
|
+
### TPL-401: 分析师预期变化
|
|
1007
|
+
```
|
|
1008
|
+
模板: <vec_op/>(tail(tail(<analyst_change_field/>, lower=<low/>, upper=<high/>, newval=<low/>), lower=-<high/>, upper=-<low/>, newval=-<low/>))
|
|
1009
|
+
```
|
|
1010
|
+
| 占位符 | 可选值 | 说明 |
|
|
1011
|
+
|--------|--------|------|
|
|
1012
|
+
| `<vec_op/>` | `vec_avg`, `vec_sum` | 向量聚合 |
|
|
1013
|
+
| `<analyst_change_field/>` | `oth41_s_west_eps_ftm_chg_3m`, `anl4_eps_chg` | 预期变化字段 |
|
|
1014
|
+
| `<low/>` | `0.25`, `0.1` | 下截断值 |
|
|
1015
|
+
| `<high/>` | `1000`, `100` | 上截断值 |
|
|
1016
|
+
|
|
1017
|
+
---
|
|
1018
|
+
|
|
1019
|
+
### TPL-402: 剥离动量的分析师因子
|
|
1020
|
+
```
|
|
1021
|
+
模板:
|
|
1022
|
+
afr = <vec_op/>(<analyst_field/>);
|
|
1023
|
+
short_mom = ts_mean(returns - group_mean(returns, 1, market), <d_short/>);
|
|
1024
|
+
long_mom = ts_delay(ts_mean(returns - group_mean(returns, 1, market), <d_long/>), <d_long/>);
|
|
1025
|
+
regression_neut(regression_neut(afr, short_mom), long_mom)
|
|
1026
|
+
```
|
|
1027
|
+
| 占位符 | 可选值 | 说明 |
|
|
1028
|
+
|--------|--------|------|
|
|
1029
|
+
| `<vec_op/>` | `vec_avg`, `vec_sum` | 向量聚合 |
|
|
1030
|
+
| `<analyst_field/>` | 分析师数据字段 | 一致预期等 |
|
|
1031
|
+
| `<d_short/>` | `5`, `10` | 短期动量窗口 |
|
|
1032
|
+
| `<d_long/>` | `20`, `22` | 长期动量窗口 |
|
|
1033
|
+
|
|
1034
|
+
---
|
|
1035
|
+
|
|
1036
|
+
### TPL-403: 分析师覆盖度过滤
|
|
1037
|
+
```
|
|
1038
|
+
模板:
|
|
1039
|
+
coverage_filter = ts_sum(<vec_op/>(<analyst_field/>), <d/>) > <min_count/>;
|
|
1040
|
+
if_else(coverage_filter, <alpha/>, nan)
|
|
1041
|
+
```
|
|
1042
|
+
| 占位符 | 可选值 | 说明 |
|
|
1043
|
+
|--------|--------|------|
|
|
1044
|
+
| `<vec_op/>` | `vec_count` | 统计分析师数量 |
|
|
1045
|
+
| `<analyst_field/>` | 分析师向量字段 | 分析师数据 |
|
|
1046
|
+
| `<d/>` | `66`, `90`, `126` | 统计窗口 |
|
|
1047
|
+
| `<min_count/>` | `2`, `3`, `5` | 最小覆盖数量 |
|
|
1048
|
+
| `<alpha/>` | 主信号表达式 | 待过滤的Alpha |
|
|
1049
|
+
|
|
1050
|
+
---
|
|
1051
|
+
|
|
1052
|
+
### TPL-404: 老虎哥回归模板
|
|
1053
|
+
```
|
|
1054
|
+
模板: group_rank(ts_regression(ts_zscore(<field1/>, <d/>), ts_zscore(vec_sum(<field2/>), <d/>), <d/>), densify(sector))
|
|
1055
|
+
```
|
|
1056
|
+
| 占位符 | 可选值 | 说明 |
|
|
1057
|
+
|--------|--------|------|
|
|
1058
|
+
| `<field1/>` | 任意MATRIX字段 | Y变量 |
|
|
1059
|
+
| `<field2/>` | 任意VECTOR字段 | X变量 |
|
|
1060
|
+
| `<d/>` | `252`, `504` | 回归窗口 |
|
|
1061
|
+
|
|
1062
|
+
**说明**: 经典回归模板,适用于基本面与分析师数据组合
|
|
1063
|
+
|
|
1064
|
+
---
|
|
1065
|
+
|
|
1066
|
+
### TPL-405: 分析师预期时序变化
|
|
1067
|
+
```
|
|
1068
|
+
模板: ts_mean(vec_avg(<analyst_field/>), <d_short/>) - ts_mean(vec_avg(<analyst_field/>), <d_long/>)
|
|
1069
|
+
```
|
|
1070
|
+
| 占位符 | 可选值 | 说明 |
|
|
1071
|
+
|--------|--------|------|
|
|
1072
|
+
| `<analyst_field/>` | `anl4_eps_mean`, `anl4_revenue_mean` | 分析师预测 |
|
|
1073
|
+
| `<d_short/>` | `22`, `44` | 短期窗口 |
|
|
1074
|
+
| `<d_long/>` | `66`, `126` | 长期窗口 |
|
|
1075
|
+
|
|
1076
|
+
---
|
|
1077
|
+
|
|
1078
|
+
### TPL-406: 三因子组合模板
|
|
1079
|
+
```
|
|
1080
|
+
模板:
|
|
1081
|
+
my_group = market;
|
|
1082
|
+
rank(
|
|
1083
|
+
group_rank(ts_decay_linear(volume/ts_sum(volume, 252), 10), my_group) *
|
|
1084
|
+
group_rank(ts_rank(vec_avg(<fundamental/>), <d/>), my_group) *
|
|
1085
|
+
group_rank(-ts_delta(close, 5), my_group)
|
|
1086
|
+
)
|
|
1087
|
+
```
|
|
1088
|
+
| 占位符 | 可选值 | 说明 |
|
|
1089
|
+
|--------|--------|------|
|
|
1090
|
+
| `<fundamental/>` | 基本面VECTOR字段 | 基本面数据 |
|
|
1091
|
+
| `<d/>` | `252`, `504` | 排名窗口 |
|
|
1092
|
+
|
|
1093
|
+
---
|
|
1094
|
+
|
|
1095
|
+
### TPL-407: 分析师FCF比率
|
|
1096
|
+
```
|
|
1097
|
+
模板: ts_rank(vec_avg(<fcf_field/>) / vec_avg(<profit_field/>), <d/>)
|
|
1098
|
+
```
|
|
1099
|
+
| 占位符 | 可选值 | 说明 |
|
|
1100
|
+
|--------|--------|------|
|
|
1101
|
+
| `<fcf_field/>` | `anl4_fcf_value` | 自由现金流预测 |
|
|
1102
|
+
| `<profit_field/>` | `anl4_netprofit_low`, `anl4_netprofit_mean` | 利润预测 |
|
|
1103
|
+
| `<d/>` | `66`, `126`, `252` | 排名窗口 |
|
|
1104
|
+
|
|
1105
|
+
---
|
|
1106
|
+
|
|
1107
|
+
## 第六部分:中性化技术模板 (TPL-501 ~ TPL-515)
|
|
1108
|
+
|
|
1109
|
+
### TPL-501: 市值分组中性化
|
|
1110
|
+
```
|
|
1111
|
+
模板: group_neutralize(<alpha/>, bucket(rank(cap), range="<range/>"))
|
|
1112
|
+
```
|
|
1113
|
+
| 占位符 | 可选值 | 说明 |
|
|
1114
|
+
|--------|--------|------|
|
|
1115
|
+
| `<alpha/>` | 主信号表达式 | 待中性化的Alpha |
|
|
1116
|
+
| `<range/>` | `"0.1,1,0.1"`, `"0,1,0.1"` | 分组范围 |
|
|
1117
|
+
|
|
1118
|
+
---
|
|
1119
|
+
|
|
1120
|
+
### TPL-502: 双重中性化 (行业+市值)
|
|
1121
|
+
```
|
|
1122
|
+
模板:
|
|
1123
|
+
a1 = group_neutralize(<alpha/>, bucket(rank(cap), range="<range/>"));
|
|
1124
|
+
group_neutralize(a1, <group/>)
|
|
1125
|
+
```
|
|
1126
|
+
| 占位符 | 可选值 | 说明 |
|
|
1127
|
+
|--------|--------|------|
|
|
1128
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1129
|
+
| `<range/>` | `"0.1,1,0.1"` | 市值分组 |
|
|
1130
|
+
| `<group/>` | `industry`, `sector`, `subindustry` | 行业分组 |
|
|
1131
|
+
|
|
1132
|
+
---
|
|
1133
|
+
|
|
1134
|
+
### TPL-503: 回归中性化
|
|
1135
|
+
```
|
|
1136
|
+
模板: regression_neut(<alpha/>, <factor/>)
|
|
1137
|
+
```
|
|
1138
|
+
| 占位符 | 可选值 | 说明 |
|
|
1139
|
+
|--------|--------|------|
|
|
1140
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1141
|
+
| `<factor/>` | `log(cap)`, `ts_ir(returns, 126)`, `ts_std_dev(returns, 22)` | 待剥离因子 |
|
|
1142
|
+
|
|
1143
|
+
**多层回归中性化**:
|
|
1144
|
+
```
|
|
1145
|
+
模板: regression_neut(regression_neut(<alpha/>, <factor1/>), <factor2/>)
|
|
1146
|
+
```
|
|
1147
|
+
|
|
1148
|
+
---
|
|
1149
|
+
|
|
1150
|
+
### TPL-504: 中性化顺序优化
|
|
1151
|
+
```
|
|
1152
|
+
模板:
|
|
1153
|
+
a = ts_zscore(<field/>, <d/>);
|
|
1154
|
+
a1 = group_neutralize(a, <group/>);
|
|
1155
|
+
a2 = group_neutralize(a1, bucket(rank(cap), range="<range/>"))
|
|
1156
|
+
```
|
|
1157
|
+
| 占位符 | 可选值 | 说明 |
|
|
1158
|
+
|--------|--------|------|
|
|
1159
|
+
| `<field/>` | 任意数据字段 | 主信号 |
|
|
1160
|
+
| `<d/>` | `252` | zscore窗口 |
|
|
1161
|
+
| `<group/>` | `industry`, `subindustry` | 行业分组 |
|
|
1162
|
+
| `<range/>` | `"0.1,1,0.1"` | 市值分组 |
|
|
1163
|
+
|
|
1164
|
+
**说明**: 先行业中性化再市值中性化,与反向顺序效果可能不同
|
|
1165
|
+
|
|
1166
|
+
---
|
|
1167
|
+
|
|
1168
|
+
### TPL-505: sta1分组中性化
|
|
1169
|
+
```
|
|
1170
|
+
模板: group_neutralize(<alpha/>, sta1_top3000c20)
|
|
1171
|
+
```
|
|
1172
|
+
**说明**: 使用预定义的sta1分组进行中性化
|
|
1173
|
+
|
|
1174
|
+
---
|
|
1175
|
+
|
|
1176
|
+
## 第七部分:条件交易模板 (TPL-601 ~ TPL-620)
|
|
1177
|
+
|
|
1178
|
+
### TPL-601: 流动性过滤
|
|
1179
|
+
```
|
|
1180
|
+
模板: trade_when(volume > adv20 * <threshold/>, <alpha/>, -1)
|
|
1181
|
+
```
|
|
1182
|
+
| 占位符 | 可选值 | 说明 |
|
|
1183
|
+
|--------|--------|------|
|
|
1184
|
+
| `<threshold/>` | `0.618`, `0.5`, `1` | 流动性阈值 |
|
|
1185
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1186
|
+
|
|
1187
|
+
**反向流动性**:
|
|
1188
|
+
```
|
|
1189
|
+
trade_when(volume < adv20, <alpha/>, -1)
|
|
1190
|
+
```
|
|
1191
|
+
|
|
1192
|
+
---
|
|
1193
|
+
|
|
1194
|
+
### TPL-602: 波动率过滤
|
|
1195
|
+
```
|
|
1196
|
+
模板: trade_when(ts_rank(ts_std_dev(returns, <d1/>), <d2/>) < <threshold/>, <alpha/>, -1)
|
|
1197
|
+
```
|
|
1198
|
+
| 占位符 | 可选值 | 说明 |
|
|
1199
|
+
|--------|--------|------|
|
|
1200
|
+
| `<d1/>` | `5`, `10`, `22` | 波动计算窗口 |
|
|
1201
|
+
| `<d2/>` | `126`, `180`, `252` | 排名窗口 |
|
|
1202
|
+
| `<threshold/>` | `0.8`, `0.9` | 波动率阈值 |
|
|
1203
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1204
|
+
|
|
1205
|
+
---
|
|
1206
|
+
|
|
1207
|
+
### TPL-603: 极端收益过滤
|
|
1208
|
+
```
|
|
1209
|
+
模板: trade_when(abs(returns) < <entry/>, <alpha/>, abs(returns) > <exit/>)
|
|
1210
|
+
```
|
|
1211
|
+
| 占位符 | 可选值 | 说明 |
|
|
1212
|
+
|--------|--------|------|
|
|
1213
|
+
| `<entry/>` | `0.075`, `0.05` | 入场阈值 |
|
|
1214
|
+
| `<exit/>` | `0.1`, `0.095` | 出场阈值 |
|
|
1215
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1216
|
+
|
|
1217
|
+
---
|
|
1218
|
+
|
|
1219
|
+
### TPL-604: 市值过滤
|
|
1220
|
+
```
|
|
1221
|
+
模板: trade_when(rank(cap) > <threshold/>, <alpha/>, -1)
|
|
1222
|
+
```
|
|
1223
|
+
| 占位符 | 可选值 | 说明 |
|
|
1224
|
+
|--------|--------|------|
|
|
1225
|
+
| `<threshold/>` | `0.3`, `0.5` | 市值排名阈值 |
|
|
1226
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1227
|
+
|
|
1228
|
+
---
|
|
1229
|
+
|
|
1230
|
+
### TPL-605: 触发条件交易
|
|
1231
|
+
```
|
|
1232
|
+
模板:
|
|
1233
|
+
triggerTradeexp = (ts_arg_max(volume, <d/>) < 1) && (volume > ts_sum(volume, <d/>)/<d/>);
|
|
1234
|
+
triggerExitexp = -1;
|
|
1235
|
+
trade_when(triggerTradeexp, <alpha/>, triggerExitexp)
|
|
1236
|
+
```
|
|
1237
|
+
| 占位符 | 可选值 | 说明 |
|
|
1238
|
+
|--------|--------|------|
|
|
1239
|
+
| `<d/>` | `5`, `10` | 判断窗口 |
|
|
1240
|
+
| `<alpha/>` | `-rank(ts_delta(close, 2))` | 主信号 |
|
|
1241
|
+
|
|
1242
|
+
---
|
|
1243
|
+
|
|
1244
|
+
### TPL-606: 组合条件交易
|
|
1245
|
+
```
|
|
1246
|
+
模板:
|
|
1247
|
+
my_group2 = bucket(rank(cap), range="0,1,0.1");
|
|
1248
|
+
trade_when(volume > adv20, group_neutralize(<alpha/>, my_group2), -1)
|
|
1249
|
+
```
|
|
1250
|
+
| 占位符 | 可选值 | 说明 |
|
|
1251
|
+
|--------|--------|------|
|
|
1252
|
+
| `<alpha/>` | 复合信号 | 主信号 |
|
|
1253
|
+
|
|
1254
|
+
---
|
|
1255
|
+
|
|
1256
|
+
### TPL-607: 条件排名交易
|
|
1257
|
+
```
|
|
1258
|
+
模板:
|
|
1259
|
+
a = <ts_op/>(<field/>, <d/>);
|
|
1260
|
+
trade_when(rank(a) > <threshold_low/>, -zscore(<field2/>)*a, <threshold_high/>-rank(a))
|
|
1261
|
+
```
|
|
1262
|
+
| 占位符 | 可选值 | 说明 |
|
|
1263
|
+
|--------|--------|------|
|
|
1264
|
+
| `<ts_op/>` | `ts_rank`, `ts_zscore` | 时序操作 |
|
|
1265
|
+
| `<field/>` | 任意字段 | 条件字段 |
|
|
1266
|
+
| `<field2/>` | 任意字段 | 信号字段 |
|
|
1267
|
+
| `<d/>` | `25`, `66` | 窗口 |
|
|
1268
|
+
| `<threshold_low/>` | `0.03`, `0.1` | 下阈值 |
|
|
1269
|
+
| `<threshold_high/>` | `0.25`, `0.5` | 上阈值 |
|
|
1270
|
+
|
|
1271
|
+
---
|
|
1272
|
+
|
|
1273
|
+
## 第八部分:复合多因子模板 (TPL-701 ~ TPL-720)
|
|
1274
|
+
|
|
1275
|
+
### TPL-701: 三因子乘积
|
|
1276
|
+
```
|
|
1277
|
+
模板:
|
|
1278
|
+
my_group = market;
|
|
1279
|
+
rank(
|
|
1280
|
+
group_rank(<ts_op1/>(<field1/>, <d1/>), my_group) *
|
|
1281
|
+
group_rank(<ts_op2/>(<field2/>, <d2/>), my_group) *
|
|
1282
|
+
group_rank(<ts_op3/>(<field3/>, <d3/>), my_group)
|
|
1283
|
+
)
|
|
1284
|
+
```
|
|
1285
|
+
| 占位符 | 可选值 | 说明 |
|
|
1286
|
+
|--------|--------|------|
|
|
1287
|
+
| `<ts_op1/>` | `ts_decay_linear`, `ts_rank` | 第一因子操作 |
|
|
1288
|
+
| `<ts_op2/>` | `ts_rank`, `ts_zscore` | 第二因子操作 |
|
|
1289
|
+
| `<ts_op3/>` | `-ts_delta` | 第三因子操作(反转) |
|
|
1290
|
+
| `<field1/>` | `volume/ts_sum(volume, 252)` | 成交量趋势 |
|
|
1291
|
+
| `<field2/>` | `vec_avg({Fundamental})` | 基本面信号 |
|
|
1292
|
+
| `<field3/>` | `close` | 价格信号 |
|
|
1293
|
+
| `<d1/>`, `<d2/>`, `<d3/>` | 各因子窗口 | 时间参数 |
|
|
1294
|
+
|
|
1295
|
+
---
|
|
1296
|
+
|
|
1297
|
+
### TPL-702: 波动率条件反转
|
|
1298
|
+
```
|
|
1299
|
+
模板:
|
|
1300
|
+
vol = ts_std_dev(<ret_field/>, <d/>);
|
|
1301
|
+
vol_mean = group_mean(vol, 1, market);
|
|
1302
|
+
flip_ret = if_else(vol < vol_mean, -<ret_field/>, <ret_field/>);
|
|
1303
|
+
-ts_mean(flip_ret, <d/>)
|
|
1304
|
+
```
|
|
1305
|
+
| 占位符 | 可选值 | 说明 |
|
|
1306
|
+
|--------|--------|------|
|
|
1307
|
+
| `<ret_field/>` | `returns`, `close/open-1` | 收益字段 |
|
|
1308
|
+
| `<d/>` | `20`, `22` | 窗口参数 |
|
|
1309
|
+
|
|
1310
|
+
**说明**: 低波动环境做反转,高波动环境做动量
|
|
1311
|
+
|
|
1312
|
+
---
|
|
1313
|
+
|
|
1314
|
+
### TPL-703: 恐惧指标组合
|
|
1315
|
+
```
|
|
1316
|
+
模板:
|
|
1317
|
+
fear = ts_mean(
|
|
1318
|
+
abs(returns - group_mean(returns, 1, market)) /
|
|
1319
|
+
(abs(returns) + abs(group_mean(returns, 1, market)) + 0.1),
|
|
1320
|
+
<d/>
|
|
1321
|
+
);
|
|
1322
|
+
-group_neutralize(fear * <signal/>, bucket(rank(cap), range="0.1,1,0.1"))
|
|
1323
|
+
```
|
|
1324
|
+
| 占位符 | 可选值 | 说明 |
|
|
1325
|
+
|--------|--------|------|
|
|
1326
|
+
| `<d/>` | `20`, `22` | 恐惧指标窗口 |
|
|
1327
|
+
| `<signal/>` | 主信号表达式 | 待组合信号 |
|
|
1328
|
+
|
|
1329
|
+
---
|
|
1330
|
+
|
|
1331
|
+
### TPL-704: 债务杠杆相关性
|
|
1332
|
+
```
|
|
1333
|
+
模板: group_neutralize(ts_zscore(<leverage_field/>, <d1/>) * ts_corr(<leverage_field/>, returns, <d2/>), sector)
|
|
1334
|
+
```
|
|
1335
|
+
| 占位符 | 可选值 | 说明 |
|
|
1336
|
+
|--------|--------|------|
|
|
1337
|
+
| `<leverage_field/>` | `debt_to_equity`, `debt/assets` | 杠杆字段 |
|
|
1338
|
+
| `<d1/>` | `60`, `126` | zscore窗口 |
|
|
1339
|
+
| `<d2/>` | `20`, `66` | 相关性窗口 |
|
|
1340
|
+
|
|
1341
|
+
---
|
|
1342
|
+
|
|
1343
|
+
### TPL-705: 模型数据信号
|
|
1344
|
+
```
|
|
1345
|
+
模板: -<model_field/>
|
|
1346
|
+
```
|
|
1347
|
+
| 占位符 | 可选值 | 说明 |
|
|
1348
|
+
|--------|--------|------|
|
|
1349
|
+
| `<model_field/>` | `mdl175_01dtsv`, `mdl175_01icc` | 模型字段 |
|
|
1350
|
+
|
|
1351
|
+
**带排名版**:
|
|
1352
|
+
```
|
|
1353
|
+
rank(group_rank(ts_rank(ts_backfill(<model_field/>, 5), 5), sta1_top3000c20))
|
|
1354
|
+
```
|
|
1355
|
+
|
|
1356
|
+
---
|
|
1357
|
+
|
|
1358
|
+
### TPL-706: 回归zscore模板
|
|
1359
|
+
```
|
|
1360
|
+
模板: ts_regression(ts_zscore(<field1/>, <d/>), ts_zscore(<field2/>, <d/>), <d/>)
|
|
1361
|
+
```
|
|
1362
|
+
| 占位符 | 可选值 | 说明 |
|
|
1363
|
+
|--------|--------|------|
|
|
1364
|
+
| `<field1/>` | MATRIX字段 | Y变量 |
|
|
1365
|
+
| `<field2/>` | MATRIX字段或vec_sum(VECTOR) | X变量 |
|
|
1366
|
+
| `<d/>` | `252`, `500`, `504` | 回归窗口 |
|
|
1367
|
+
|
|
1368
|
+
---
|
|
1369
|
+
|
|
1370
|
+
### TPL-707: 分组Delta模板
|
|
1371
|
+
```
|
|
1372
|
+
模板: group_neutralize(ts_delta(<field/>, <d/>), sector)
|
|
1373
|
+
```
|
|
1374
|
+
| 占位符 | 可选值 | 说明 |
|
|
1375
|
+
|--------|--------|------|
|
|
1376
|
+
| `<field/>` | 任意数据字段 | 主字段 |
|
|
1377
|
+
| `<d/>` | `22`, `66`, `126` | 差分窗口 |
|
|
1378
|
+
|
|
1379
|
+
---
|
|
1380
|
+
|
|
1381
|
+
## 第九部分:数据预处理模板 (TPL-801 ~ TPL-815)
|
|
1382
|
+
|
|
1383
|
+
### TPL-801: Winsorize截断
|
|
1384
|
+
```
|
|
1385
|
+
模板: winsorize(<field/>, std=<std/>)
|
|
1386
|
+
```
|
|
1387
|
+
| 占位符 | 可选值 | 说明 |
|
|
1388
|
+
|--------|--------|------|
|
|
1389
|
+
| `<field/>` | 任意字段 | 原始数据 |
|
|
1390
|
+
| `<std/>` | `3`, `4`, `5` | 截断标准差 |
|
|
1391
|
+
|
|
1392
|
+
---
|
|
1393
|
+
|
|
1394
|
+
### TPL-802: Sigmoid归一化
|
|
1395
|
+
```
|
|
1396
|
+
模板: sigmoid(<ts_op/>(<field/>, <d/>))
|
|
1397
|
+
```
|
|
1398
|
+
| 占位符 | 可选值 | 说明 |
|
|
1399
|
+
|--------|--------|------|
|
|
1400
|
+
| `<ts_op/>` | `ts_zscore`, `ts_ir`, `ts_rank` | 时序操作 |
|
|
1401
|
+
| `<field/>` | 任意字段 | 原始数据 |
|
|
1402
|
+
| `<d/>` | `22`, `66`, `252` | 窗口 |
|
|
1403
|
+
|
|
1404
|
+
---
|
|
1405
|
+
|
|
1406
|
+
### TPL-803: 数据回填
|
|
1407
|
+
```
|
|
1408
|
+
模板: ts_backfill(<field/>, <d/>)
|
|
1409
|
+
```
|
|
1410
|
+
| 占位符 | 可选值 | 说明 |
|
|
1411
|
+
|--------|--------|------|
|
|
1412
|
+
| `<field/>` | 低频数据字段 | 需要回填的字段 |
|
|
1413
|
+
| `<d/>` | `115`, `120`, `180`, `252` | 回填窗口 |
|
|
1414
|
+
|
|
1415
|
+
---
|
|
1416
|
+
|
|
1417
|
+
### TPL-804: 条件替换
|
|
1418
|
+
```
|
|
1419
|
+
模板: if_else(is_not_nan(<field/>), <field/>, <alternative/>)
|
|
1420
|
+
```
|
|
1421
|
+
| 占位符 | 可选值 | 说明 |
|
|
1422
|
+
|--------|--------|------|
|
|
1423
|
+
| `<field/>` | 主字段 | 可能有NaN的字段 |
|
|
1424
|
+
| `<alternative/>` | 替代字段或值 | NaN时的替代 |
|
|
1425
|
+
|
|
1426
|
+
---
|
|
1427
|
+
|
|
1428
|
+
### TPL-805: 极端值替换
|
|
1429
|
+
```
|
|
1430
|
+
模板: tail(tail(<field/>, lower=<low/>, upper=<high/>, newval=<low/>), lower=-<high/>, upper=-<low/>, newval=-<low/>)
|
|
1431
|
+
```
|
|
1432
|
+
| 占位符 | 可选值 | 说明 |
|
|
1433
|
+
|--------|--------|------|
|
|
1434
|
+
| `<field/>` | 任意字段 | 原始数据 |
|
|
1435
|
+
| `<low/>` | `0.25`, `0.1` | 下界 |
|
|
1436
|
+
| `<high/>` | `100`, `1000` | 上界 |
|
|
1437
|
+
|
|
1438
|
+
---
|
|
1439
|
+
|
|
1440
|
+
### TPL-806: 组合预处理
|
|
1441
|
+
```
|
|
1442
|
+
模板: <ts_op/>(winsorize(ts_backfill(<field/>, <d_backfill/>), std=<std/>), <d/>)
|
|
1443
|
+
```
|
|
1444
|
+
| 占位符 | 可选值 | 说明 |
|
|
1445
|
+
|--------|--------|------|
|
|
1446
|
+
| `<ts_op/>` | `ts_rank`, `ts_zscore`, `ts_mean` | 时序操作 |
|
|
1447
|
+
| `<field/>` | 低频字段 | 需要处理的字段 |
|
|
1448
|
+
| `<d_backfill/>` | `120`, `180` | 回填窗口 |
|
|
1449
|
+
| `<std/>` | `4` | winsorize参数 |
|
|
1450
|
+
| `<d/>` | `22`, `66` | 操作窗口 |
|
|
1451
|
+
|
|
1452
|
+
---
|
|
1453
|
+
|
|
1454
|
+
### TPL-807: ts_min/ts_max替代
|
|
1455
|
+
```
|
|
1456
|
+
模板: ts_backfill(if_else(ts_arg_min(<field/>, <d/>) == 0, <field/>, nan), 120)
|
|
1457
|
+
```
|
|
1458
|
+
| 占位符 | 可选值 | 说明 |
|
|
1459
|
+
|--------|--------|------|
|
|
1460
|
+
| `<field/>` | 任意字段 | 原始数据 |
|
|
1461
|
+
| `<d/>` | `22`, `66`, `126` | 窗口 |
|
|
1462
|
+
|
|
1463
|
+
**说明**: 当ts_min/ts_max不可用时的替代方案
|
|
1464
|
+
|
|
1465
|
+
---
|
|
1466
|
+
|
|
1467
|
+
## 第十部分:高级统计模板 (TPL-901 ~ TPL-920)
|
|
1468
|
+
|
|
1469
|
+
### TPL-901: 高阶矩模板 (ts_moment)
|
|
1470
|
+
```
|
|
1471
|
+
模板: <ts_op/>(<group_op/>(ts_moment(<field/>, <d/>, k=<k/>), <group/>))
|
|
1472
|
+
```
|
|
1473
|
+
| 占位符 | 可选值 | 说明 |
|
|
1474
|
+
|--------|--------|------|
|
|
1475
|
+
| `<ts_op/>` | `rank`, `zscore`, `sigmoid` | 标准化操作 |
|
|
1476
|
+
| `<group_op/>` | `group_rank`, `group_zscore` | 分组操作 |
|
|
1477
|
+
| `<field/>` | 任意MATRIX字段 | 数据字段 |
|
|
1478
|
+
| `<d/>` | `22`, `66`, `126` | 窗口 |
|
|
1479
|
+
| `<k/>` | `2`, `3`, `4` | k=2方差, k=3偏度, k=4峰度 |
|
|
1480
|
+
|
|
1481
|
+
**说明**: ts_moment(x, d, k)计算k阶中心矩
|
|
1482
|
+
|
|
1483
|
+
---
|
|
1484
|
+
|
|
1485
|
+
### TPL-902: 协偏度/协峰度模板
|
|
1486
|
+
```
|
|
1487
|
+
模板: <group_op/>(ts_co_skewness(<field1/>, <field2/>, <d/>), <group/>)
|
|
1488
|
+
```
|
|
1489
|
+
| 占位符 | 可选值 | 说明 |
|
|
1490
|
+
|--------|--------|------|
|
|
1491
|
+
| `<group_op/>` | `group_rank`, `group_zscore` | 分组操作 |
|
|
1492
|
+
| `<field1/>` | `returns`, `close` | 第一变量 |
|
|
1493
|
+
| `<field2/>` | `volume`, `vwap` | 第二变量 |
|
|
1494
|
+
| `<d/>` | `66`, `126`, `252` | 窗口 |
|
|
1495
|
+
|
|
1496
|
+
**协峰度版**:
|
|
1497
|
+
```
|
|
1498
|
+
模板: <group_op/>(ts_co_kurtosis(<field1/>, <field2/>, <d/>), <group/>)
|
|
1499
|
+
```
|
|
1500
|
+
|
|
1501
|
+
---
|
|
1502
|
+
|
|
1503
|
+
### TPL-903: 偏相关模板 (ts_partial_corr)
|
|
1504
|
+
```
|
|
1505
|
+
模板: group_rank(ts_partial_corr(<field1/>, <field2/>, <control/>, <d/>), <group/>)
|
|
1506
|
+
```
|
|
1507
|
+
| 占位符 | 可选值 | 说明 |
|
|
1508
|
+
|--------|--------|------|
|
|
1509
|
+
| `<field1/>` | `returns`, 收益相关 | Y变量 |
|
|
1510
|
+
| `<field2/>` | 任意字段 | X变量 |
|
|
1511
|
+
| `<control/>` | `group_mean(returns, 1, market)` | 控制变量(市场收益) |
|
|
1512
|
+
| `<d/>` | `60`, `126`, `252` | 窗口 |
|
|
1513
|
+
| `<group/>` | `sector`, `industry` | 分组 |
|
|
1514
|
+
|
|
1515
|
+
**说明**: 计算两变量偏相关,控制第三变量影响
|
|
1516
|
+
|
|
1517
|
+
---
|
|
1518
|
+
|
|
1519
|
+
### TPL-904: 三元相关模板 (ts_triple_corr)
|
|
1520
|
+
```
|
|
1521
|
+
模板: group_rank(ts_triple_corr(<field1/>, <field2/>, <field3/>, <d/>), <group/>)
|
|
1522
|
+
```
|
|
1523
|
+
| 占位符 | 可选值 | 说明 |
|
|
1524
|
+
|--------|--------|------|
|
|
1525
|
+
| `<field1/>` | `returns` | 第一变量 |
|
|
1526
|
+
| `<field2/>` | `volume` | 第二变量 |
|
|
1527
|
+
| `<field3/>` | 基本面字段 | 第三变量 |
|
|
1528
|
+
| `<d/>` | `60`, `126` | 窗口 |
|
|
1529
|
+
| `<group/>` | `sector`, `industry` | 分组 |
|
|
1530
|
+
|
|
1531
|
+
---
|
|
1532
|
+
|
|
1533
|
+
### TPL-905: Theil-Sen回归模板
|
|
1534
|
+
```
|
|
1535
|
+
模板: group_rank(ts_theilsen(<field1/>, <field2/>, <d/>), <group/>)
|
|
1536
|
+
```
|
|
1537
|
+
| 占位符 | 可选值 | 说明 |
|
|
1538
|
+
|--------|--------|------|
|
|
1539
|
+
| `<field1/>` | 任意MATRIX字段 | Y变量 |
|
|
1540
|
+
| `<field2/>` | 任意MATRIX字段或`ts_step(1)` | X变量 |
|
|
1541
|
+
| `<d/>` | `126`, `252`, `500` | 窗口 |
|
|
1542
|
+
| `<group/>` | `sector`, `industry` | 分组 |
|
|
1543
|
+
|
|
1544
|
+
**说明**: Theil-Sen回归比普通回归更鲁棒
|
|
1545
|
+
|
|
1546
|
+
---
|
|
1547
|
+
|
|
1548
|
+
### TPL-906: 多项式回归残差
|
|
1549
|
+
```
|
|
1550
|
+
模板: ts_poly_regression(<field1/>, <field2/>, <d/>, k=<k/>)
|
|
1551
|
+
```
|
|
1552
|
+
| 占位符 | 可选值 | 说明 |
|
|
1553
|
+
|--------|--------|------|
|
|
1554
|
+
| `<field1/>` | Y变量 | 被解释变量 |
|
|
1555
|
+
| `<field2/>` | X变量 | 解释变量 |
|
|
1556
|
+
| `<d/>` | `126`, `252` | 窗口 |
|
|
1557
|
+
| `<k/>` | `1`, `2`, `3` | 多项式阶数, k=2为二次回归 |
|
|
1558
|
+
|
|
1559
|
+
**说明**: 返回 y - Ey (残差)
|
|
1560
|
+
|
|
1561
|
+
---
|
|
1562
|
+
|
|
1563
|
+
### TPL-907: 向量中性化模板
|
|
1564
|
+
```
|
|
1565
|
+
模板: ts_vector_neut(<alpha/>, <risk_factor/>, <d/>)
|
|
1566
|
+
```
|
|
1567
|
+
| 占位符 | 可选值 | 说明 |
|
|
1568
|
+
|--------|--------|------|
|
|
1569
|
+
| `<alpha/>` | 主信号 | 待中性化Alpha |
|
|
1570
|
+
| `<risk_factor/>` | `returns`, `cap` | 风险因子 |
|
|
1571
|
+
| `<d/>` | `22`, `66`, `126` | 窗口(不宜过长,计算慢) |
|
|
1572
|
+
|
|
1573
|
+
**分组向量中性化**:
|
|
1574
|
+
```
|
|
1575
|
+
模板: group_vector_neut(<alpha/>, <risk_factor/>, <group/>)
|
|
1576
|
+
```
|
|
1577
|
+
|
|
1578
|
+
---
|
|
1579
|
+
|
|
1580
|
+
### TPL-908: 加权衰减模板
|
|
1581
|
+
```
|
|
1582
|
+
模板: group_neutralize(ts_weighted_decay(<alpha/>, k=<k/>), <group/>)
|
|
1583
|
+
```
|
|
1584
|
+
| 占位符 | 可选值 | 说明 |
|
|
1585
|
+
|--------|--------|------|
|
|
1586
|
+
| `<alpha/>` | 主信号 | 待衰减Alpha |
|
|
1587
|
+
| `<k/>` | `0.3`, `0.5`, `0.7` | 衰减系数 |
|
|
1588
|
+
| `<group/>` | `bucket(rank(cap), range="0.1,1,0.1")` | 分组 |
|
|
1589
|
+
|
|
1590
|
+
---
|
|
1591
|
+
|
|
1592
|
+
### TPL-909: 回归斜率模板
|
|
1593
|
+
```
|
|
1594
|
+
模板: ts_regression(ts_zscore(<field/>, <d/>), ts_step(1), <d/>, rettype=2)
|
|
1595
|
+
```
|
|
1596
|
+
| 占位符 | 可选值 | 说明 |
|
|
1597
|
+
|--------|--------|------|
|
|
1598
|
+
| `<field/>` | 任意MATRIX字段 | 数据字段 |
|
|
1599
|
+
| `<d/>` | `252`, `500` | 窗口 |
|
|
1600
|
+
|
|
1601
|
+
**说明**: rettype=2返回斜率,用于检测趋势
|
|
1602
|
+
|
|
1603
|
+
---
|
|
1604
|
+
|
|
1605
|
+
### TPL-910: 最小最大压缩模板
|
|
1606
|
+
```
|
|
1607
|
+
模板: ts_min_max_cps(<field/>, <d/>, f=<f/>)
|
|
1608
|
+
```
|
|
1609
|
+
| 占位符 | 可选值 | 说明 |
|
|
1610
|
+
|--------|--------|------|
|
|
1611
|
+
| `<field/>` | 任意字段 | 数据字段 |
|
|
1612
|
+
| `<d/>` | `22`, `66`, `126` | 窗口 |
|
|
1613
|
+
| `<f/>` | `2`, `0.5` | 压缩因子 |
|
|
1614
|
+
|
|
1615
|
+
**等价公式**: `x - f * (ts_min(x, d) + ts_max(x, d))`
|
|
1616
|
+
|
|
1617
|
+
---
|
|
1618
|
+
|
|
1619
|
+
## 第十一部分:事件驱动模板 (TPL-1001 ~ TPL-1020)
|
|
1620
|
+
|
|
1621
|
+
### TPL-1001: 数据变化天数模板
|
|
1622
|
+
```
|
|
1623
|
+
模板: if_else(days_from_last_change(<field/>) == <days/>, <alpha/>, nan)
|
|
1624
|
+
```
|
|
1625
|
+
| 占位符 | 可选值 | 说明 |
|
|
1626
|
+
|--------|--------|------|
|
|
1627
|
+
| `<field/>` | 基本面字段 | 监测变化的字段 |
|
|
1628
|
+
| `<days/>` | `1`, `2`, `5` | 距离变化的天数 |
|
|
1629
|
+
| `<alpha/>` | `ts_delta(close, 5)`, 主信号 | 事件触发时的Alpha |
|
|
1630
|
+
|
|
1631
|
+
**动态衰减版**:
|
|
1632
|
+
```
|
|
1633
|
+
模板: <alpha/> / (1 + days_from_last_change(<field/>))
|
|
1634
|
+
```
|
|
1635
|
+
|
|
1636
|
+
---
|
|
1637
|
+
|
|
1638
|
+
### TPL-1002: 最近差值模板
|
|
1639
|
+
```
|
|
1640
|
+
模板: <ts_op/>(last_diff_value(<field/>, <d/>), <d2/>)
|
|
1641
|
+
```
|
|
1642
|
+
| 占位符 | 可选值 | 说明 |
|
|
1643
|
+
|--------|--------|------|
|
|
1644
|
+
| `<ts_op/>` | `ts_rank`, `ts_zscore` | 时序操作 |
|
|
1645
|
+
| `<field/>` | 任意字段 | 数据字段 |
|
|
1646
|
+
| `<d/>` | `60`, `90`, `120` | 回溯窗口 |
|
|
1647
|
+
| `<d2/>` | `22`, `66` | 操作窗口 |
|
|
1648
|
+
|
|
1649
|
+
**说明**: 返回过去d天内最近一次不同于当前值的历史值
|
|
1650
|
+
|
|
1651
|
+
---
|
|
1652
|
+
|
|
1653
|
+
### TPL-1003: 缺失值计数模板
|
|
1654
|
+
```
|
|
1655
|
+
模板: -ts_count_nans(ts_backfill(<field/>, <d1/>), <d2/>)
|
|
1656
|
+
```
|
|
1657
|
+
| 占位符 | 可选值 | 说明 |
|
|
1658
|
+
|--------|--------|------|
|
|
1659
|
+
| `<field/>` | 分析师数据等 | 可能有缺失的字段 |
|
|
1660
|
+
| `<d1/>` | `5`, `10` | 回填窗口 |
|
|
1661
|
+
| `<d2/>` | `20`, `30` | 计数窗口 |
|
|
1662
|
+
|
|
1663
|
+
**应用**: 分析师覆盖度信号,缺失越少覆盖越好
|
|
1664
|
+
|
|
1665
|
+
---
|
|
1666
|
+
|
|
1667
|
+
### TPL-1004: 位置最大/最小模板
|
|
1668
|
+
```
|
|
1669
|
+
模板: if_else(ts_arg_max(<field/>, <d/>) == <position/>, <alpha/>, nan)
|
|
1670
|
+
```
|
|
1671
|
+
| 占位符 | 可选值 | 说明 |
|
|
1672
|
+
|--------|--------|------|
|
|
1673
|
+
| `<field/>` | `volume`, 任意字段 | 监测字段 |
|
|
1674
|
+
| `<d/>` | `5`, `10` | 窗口 |
|
|
1675
|
+
| `<position/>` | `0`, `1` | 0表示今天是最大值 |
|
|
1676
|
+
| `<alpha/>` | 主信号 | 条件满足时的Alpha |
|
|
1677
|
+
|
|
1678
|
+
**组合条件**:
|
|
1679
|
+
```
|
|
1680
|
+
模板: (ts_arg_max(<field1/>, <d/>) == ts_arg_max(<field2/>, <d/>)) * (<alpha1/> + <alpha2/>)
|
|
1681
|
+
```
|
|
1682
|
+
|
|
1683
|
+
---
|
|
1684
|
+
|
|
1685
|
+
### TPL-1005: 财报发布事件模板
|
|
1686
|
+
```
|
|
1687
|
+
模板:
|
|
1688
|
+
event_signal = if_else(ts_delta(<fundamental_field/>, 1) != 0, <alpha/>, nan);
|
|
1689
|
+
ts_decay_linear(event_signal, <decay_d/>)
|
|
1690
|
+
```
|
|
1691
|
+
| 占位符 | 可选值 | 说明 |
|
|
1692
|
+
|--------|--------|------|
|
|
1693
|
+
| `<fundamental_field/>` | `assets`, `sales`, `eps` | 基本面字段 |
|
|
1694
|
+
| `<alpha/>` | `ts_delta(close, 5)`, 主信号 | 事件Alpha |
|
|
1695
|
+
| `<decay_d/>` | `10`, `22` | 衰减窗口 |
|
|
1696
|
+
|
|
1697
|
+
---
|
|
1698
|
+
|
|
1699
|
+
### TPL-1006: 动态Decay事件驱动
|
|
1700
|
+
```
|
|
1701
|
+
模板:
|
|
1702
|
+
decay_weight = 1 / (1 + days_from_last_change(<event_field/>));
|
|
1703
|
+
<alpha/> * decay_weight
|
|
1704
|
+
```
|
|
1705
|
+
| 占位符 | 可选值 | 说明 |
|
|
1706
|
+
|--------|--------|------|
|
|
1707
|
+
| `<event_field/>` | 任意字段 | 事件触发字段 |
|
|
1708
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1709
|
+
|
|
1710
|
+
---
|
|
1711
|
+
|
|
1712
|
+
### TPL-1007: 盈利公告模板
|
|
1713
|
+
```
|
|
1714
|
+
模板:
|
|
1715
|
+
surprise = <actual_field/> - <estimate_field/>;
|
|
1716
|
+
if_else(days_from_last_change(<actual_field/>) < <window/>, surprise, nan)
|
|
1717
|
+
```
|
|
1718
|
+
| 占位符 | 可选值 | 说明 |
|
|
1719
|
+
|--------|--------|------|
|
|
1720
|
+
| `<actual_field/>` | `eps` | 实际值 |
|
|
1721
|
+
| `<estimate_field/>` | `vec_avg(anl4_eps_mean)` | 预测值 |
|
|
1722
|
+
| `<window/>` | `5`, `10` | 事件有效窗口 |
|
|
1723
|
+
|
|
1724
|
+
---
|
|
1725
|
+
|
|
1726
|
+
## 第十二部分:信号处理模板 (TPL-1101 ~ TPL-1120)
|
|
1727
|
+
|
|
1728
|
+
### TPL-1101: 黄金比例幂变换
|
|
1729
|
+
```
|
|
1730
|
+
模板: signed_power(<alpha/>, 0.618)
|
|
1731
|
+
```
|
|
1732
|
+
| 占位符 | 可选值 | 说明 |
|
|
1733
|
+
|--------|--------|------|
|
|
1734
|
+
| `<alpha/>` | 主信号表达式 | 原始Alpha |
|
|
1735
|
+
|
|
1736
|
+
**其他幂次**:
|
|
1737
|
+
```
|
|
1738
|
+
signed_power(<alpha/>, 0.5) # 平方根
|
|
1739
|
+
signed_power(<alpha/>, 2) # 平方增强
|
|
1740
|
+
```
|
|
1741
|
+
|
|
1742
|
+
---
|
|
1743
|
+
|
|
1744
|
+
### TPL-1102: 尾部截断模板
|
|
1745
|
+
```
|
|
1746
|
+
模板: right_tail(<alpha/>, minimum=<min/>)
|
|
1747
|
+
```
|
|
1748
|
+
| 占位符 | 可选值 | 说明 |
|
|
1749
|
+
|--------|--------|------|
|
|
1750
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1751
|
+
| `<min/>` | `0`, `0.1` | 最小阈值 |
|
|
1752
|
+
|
|
1753
|
+
**左尾版**:
|
|
1754
|
+
```
|
|
1755
|
+
模板: left_tail(<alpha/>, maximum=<max/>)
|
|
1756
|
+
```
|
|
1757
|
+
|
|
1758
|
+
---
|
|
1759
|
+
|
|
1760
|
+
### TPL-1103: Clamp边界限制
|
|
1761
|
+
```
|
|
1762
|
+
模板: clamp(<alpha/>, lower=<low/>, upper=<high/>)
|
|
1763
|
+
```
|
|
1764
|
+
| 占位符 | 可选值 | 说明 |
|
|
1765
|
+
|--------|--------|------|
|
|
1766
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1767
|
+
| `<low/>` | `-1`, `-0.5` | 下界 |
|
|
1768
|
+
| `<high/>` | `1`, `0.5` | 上界 |
|
|
1769
|
+
|
|
1770
|
+
---
|
|
1771
|
+
|
|
1772
|
+
### TPL-1104: 分数映射模板
|
|
1773
|
+
```
|
|
1774
|
+
模板: fraction(<alpha/>)
|
|
1775
|
+
```
|
|
1776
|
+
| 占位符 | 可选值 | 说明 |
|
|
1777
|
+
|--------|--------|------|
|
|
1778
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1779
|
+
|
|
1780
|
+
**说明**: 将连续变量映射到分布内的相对位置
|
|
1781
|
+
|
|
1782
|
+
---
|
|
1783
|
+
|
|
1784
|
+
### TPL-1105: NaN外推模板
|
|
1785
|
+
```
|
|
1786
|
+
模板: nan_out(<field/>, lower=<low/>, upper=<high/>)
|
|
1787
|
+
```
|
|
1788
|
+
| 占位符 | 可选值 | 说明 |
|
|
1789
|
+
|--------|--------|------|
|
|
1790
|
+
| `<field/>` | 任意字段 | 数据字段 |
|
|
1791
|
+
| `<low/>` | `-3`, `-5` | 下界 |
|
|
1792
|
+
| `<high/>` | `3`, `5` | 上界 |
|
|
1793
|
+
|
|
1794
|
+
**说明**: 将超出范围的值替换为NaN
|
|
1795
|
+
|
|
1796
|
+
---
|
|
1797
|
+
|
|
1798
|
+
### TPL-1106: Purify数据清洗
|
|
1799
|
+
```
|
|
1800
|
+
模板: purify(<field/>)
|
|
1801
|
+
```
|
|
1802
|
+
| 占位符 | 可选值 | 说明 |
|
|
1803
|
+
|--------|--------|------|
|
|
1804
|
+
| `<field/>` | 任意字段 | 需要清洗的数据 |
|
|
1805
|
+
|
|
1806
|
+
**说明**: 自动化数据清洗,减少噪声和异常值
|
|
1807
|
+
|
|
1808
|
+
---
|
|
1809
|
+
|
|
1810
|
+
### TPL-1107: 条件保留模板
|
|
1811
|
+
```
|
|
1812
|
+
模板: keep(<field/>, <condition/>, period=<d/>)
|
|
1813
|
+
```
|
|
1814
|
+
| 占位符 | 可选值 | 说明 |
|
|
1815
|
+
|--------|--------|------|
|
|
1816
|
+
| `<field/>` | 任意字段 | 数据字段 |
|
|
1817
|
+
| `<condition/>` | `<field/> > 0` | 保留条件 |
|
|
1818
|
+
| `<d/>` | `3`, `5`, `10` | 滚动窗口 |
|
|
1819
|
+
|
|
1820
|
+
**示例**:
|
|
1821
|
+
```
|
|
1822
|
+
keep(returns, returns > 0, period=3) # 只保留正收益
|
|
1823
|
+
```
|
|
1824
|
+
|
|
1825
|
+
---
|
|
1826
|
+
|
|
1827
|
+
### TPL-1108: 缩放降维模板
|
|
1828
|
+
```
|
|
1829
|
+
模板: -scale_down(<ts_op/>(<field/>, <d1/>), constant=<c/>)
|
|
1830
|
+
```
|
|
1831
|
+
| 占位符 | 可选值 | 说明 |
|
|
1832
|
+
|--------|--------|------|
|
|
1833
|
+
| `<ts_op/>` | `ts_mean`, `ts_rank` | 时序操作 |
|
|
1834
|
+
| `<field/>` | `returns`, 任意字段 | 数据字段 |
|
|
1835
|
+
| `<d1/>` | `2`, `5` | 窗口 |
|
|
1836
|
+
| `<c/>` | `0.1`, `0.05` | 缩放常数 |
|
|
1837
|
+
|
|
1838
|
+
---
|
|
1839
|
+
|
|
1840
|
+
### TPL-1109: Truncate截断模板
|
|
1841
|
+
```
|
|
1842
|
+
模板: truncate(<alpha/>, maxPercent=<percent/>)
|
|
1843
|
+
```
|
|
1844
|
+
| 占位符 | 可选值 | 说明 |
|
|
1845
|
+
|--------|--------|------|
|
|
1846
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1847
|
+
| `<percent/>` | `0.01`, `0.05` | 截断百分比 |
|
|
1848
|
+
|
|
1849
|
+
---
|
|
1850
|
+
|
|
1851
|
+
### TPL-1110: 组合Normalize模板
|
|
1852
|
+
```
|
|
1853
|
+
模板: group_normalize(<alpha/>, <group/>)
|
|
1854
|
+
```
|
|
1855
|
+
| 占位符 | 可选值 | 说明 |
|
|
1856
|
+
|--------|--------|------|
|
|
1857
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1858
|
+
| `<group/>` | `sector`, `industry` | 分组 |
|
|
1859
|
+
|
|
1860
|
+
**等价公式**: `alpha / group_sum(abs(alpha), group)`
|
|
1861
|
+
|
|
1862
|
+
---
|
|
1863
|
+
|
|
1864
|
+
## 第十三部分:Turnover控制模板 (TPL-1201 ~ TPL-1215)
|
|
1865
|
+
|
|
1866
|
+
### TPL-1201: 目标换手率Hump
|
|
1867
|
+
```
|
|
1868
|
+
模板: ts_target_tvr_hump(<alpha/>, lambda_min=0, lambda_max=1, target_tvr=<target/>)
|
|
1869
|
+
```
|
|
1870
|
+
| 占位符 | 可选值 | 说明 |
|
|
1871
|
+
|--------|--------|------|
|
|
1872
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1873
|
+
| `<target/>` | `0.1`, `0.15`, `0.2` | 目标换手率 |
|
|
1874
|
+
|
|
1875
|
+
---
|
|
1876
|
+
|
|
1877
|
+
### TPL-1202: Delta限制换手率
|
|
1878
|
+
```
|
|
1879
|
+
模板: ts_target_tvr_delta_limit(<alpha/>, <factor/>, lambda_min=0, lambda_max=1, target_tvr=<target/>)
|
|
1880
|
+
```
|
|
1881
|
+
| 占位符 | 可选值 | 说明 |
|
|
1882
|
+
|--------|--------|------|
|
|
1883
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1884
|
+
| `<factor/>` | 辅助因子 | 限制因子 |
|
|
1885
|
+
| `<target/>` | `0.1`, `0.15` | 目标换手率 |
|
|
1886
|
+
|
|
1887
|
+
---
|
|
1888
|
+
|
|
1889
|
+
### TPL-1203: Hump衰减组合
|
|
1890
|
+
```
|
|
1891
|
+
模板: hump_decay(<alpha/>, hump=<h/>)
|
|
1892
|
+
```
|
|
1893
|
+
| 占位符 | 可选值 | 说明 |
|
|
1894
|
+
|--------|--------|------|
|
|
1895
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1896
|
+
| `<h/>` | `0.001`, `0.01` | Hump参数 |
|
|
1897
|
+
|
|
1898
|
+
**嵌套版**:
|
|
1899
|
+
```
|
|
1900
|
+
hump(hump_decay(<alpha/>, hump=0.001))
|
|
1901
|
+
```
|
|
1902
|
+
|
|
1903
|
+
---
|
|
1904
|
+
|
|
1905
|
+
### TPL-1204: 平均+Hump模板
|
|
1906
|
+
```
|
|
1907
|
+
模板: -ts_mean(ts_target_tvr_hump(group_rank(<field/>, country), lambda_min=0, lambda_max=1, target_tvr=<target/>), <d/>)
|
|
1908
|
+
```
|
|
1909
|
+
| 占位符 | 可选值 | 说明 |
|
|
1910
|
+
|--------|--------|------|
|
|
1911
|
+
| `<field/>` | 任意字段 | 数据字段 |
|
|
1912
|
+
| `<target/>` | `0.1` | 目标换手率 |
|
|
1913
|
+
| `<d/>` | `5`, `10` | 平均窗口 |
|
|
1914
|
+
|
|
1915
|
+
---
|
|
1916
|
+
|
|
1917
|
+
### TPL-1205: 简单Hump模板
|
|
1918
|
+
```
|
|
1919
|
+
模板: hump(<alpha/>, hump=<h/>)
|
|
1920
|
+
```
|
|
1921
|
+
| 占位符 | 可选值 | 说明 |
|
|
1922
|
+
|--------|--------|------|
|
|
1923
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1924
|
+
| `<h/>` | `0.01`, `0.001`, `0.0001` | Hump参数 |
|
|
1925
|
+
|
|
1926
|
+
**示例**:
|
|
1927
|
+
```
|
|
1928
|
+
hump(-ts_delta(close, 5), hump=0.01)
|
|
1929
|
+
```
|
|
1930
|
+
|
|
1931
|
+
---
|
|
1932
|
+
|
|
1933
|
+
## 第十四部分:回填与覆盖模板 (TPL-1301 ~ TPL-1315)
|
|
1934
|
+
|
|
1935
|
+
### TPL-1301: 分组回填模板
|
|
1936
|
+
```
|
|
1937
|
+
模板: group_backfill(<field/>, <group/>)
|
|
1938
|
+
```
|
|
1939
|
+
| 占位符 | 可选值 | 说明 |
|
|
1940
|
+
|--------|--------|------|
|
|
1941
|
+
| `<field/>` | 任意字段 | 需要回填的字段 |
|
|
1942
|
+
| `<group/>` | `sector`, `industry`, `market` | 分组字段 |
|
|
1943
|
+
|
|
1944
|
+
**说明**: 使用组内最近值填充NaN
|
|
1945
|
+
|
|
1946
|
+
---
|
|
1947
|
+
|
|
1948
|
+
### TPL-1302: 嵌套回填排名
|
|
1949
|
+
```
|
|
1950
|
+
模板: rank(group_backfill(<field/>, <group/>))
|
|
1951
|
+
```
|
|
1952
|
+
| 占位符 | 可选值 | 说明 |
|
|
1953
|
+
|--------|--------|------|
|
|
1954
|
+
| `<field/>` | 任意字段 | 数据字段 |
|
|
1955
|
+
| `<group/>` | `sector`, `industry` | 分组 |
|
|
1956
|
+
|
|
1957
|
+
---
|
|
1958
|
+
|
|
1959
|
+
### TPL-1303: 覆盖度过滤
|
|
1960
|
+
```
|
|
1961
|
+
模板: group_count(is_nan(<field/>), market) > <threshold/> ? <alpha/> : nan
|
|
1962
|
+
```
|
|
1963
|
+
| 占位符 | 可选值 | 说明 |
|
|
1964
|
+
|--------|--------|------|
|
|
1965
|
+
| `<field/>` | 任意字段 | 检测字段 |
|
|
1966
|
+
| `<threshold/>` | `40`, `50` | 最小覆盖数 |
|
|
1967
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1968
|
+
|
|
1969
|
+
---
|
|
1970
|
+
|
|
1971
|
+
### TPL-1304: NaN替换模板
|
|
1972
|
+
```
|
|
1973
|
+
模板: if_else(is_not_nan(<field/>), <field/>, <default/>)
|
|
1974
|
+
```
|
|
1975
|
+
| 占位符 | 可选值 | 说明 |
|
|
1976
|
+
|--------|--------|------|
|
|
1977
|
+
| `<field/>` | 任意字段 | 数据字段 |
|
|
1978
|
+
| `<default/>` | `0`, `0.5`, `nan` | 默认值 |
|
|
1979
|
+
|
|
1980
|
+
---
|
|
1981
|
+
|
|
1982
|
+
### TPL-1305: 综合数据清洗
|
|
1983
|
+
```
|
|
1984
|
+
模板: <ts_op/>(winsorize(group_backfill(ts_backfill(<field/>, <d1/>), <group/>), std=<std/>), <d2/>)
|
|
1985
|
+
```
|
|
1986
|
+
| 占位符 | 可选值 | 说明 |
|
|
1987
|
+
|--------|--------|------|
|
|
1988
|
+
| `<ts_op/>` | `ts_rank`, `ts_zscore` | 时序操作 |
|
|
1989
|
+
| `<field/>` | 低频字段 | 数据字段 |
|
|
1990
|
+
| `<d1/>` | `120`, `180` | 时序回填窗口 |
|
|
1991
|
+
| `<group/>` | `sector`, `industry` | 分组回填 |
|
|
1992
|
+
| `<std/>` | `4` | winsorize参数 |
|
|
1993
|
+
| `<d2/>` | `66`, `126` | 操作窗口 |
|
|
1994
|
+
|
|
1995
|
+
---
|
|
1996
|
+
|
|
1997
|
+
## 第十五部分:组合提取模板 (TPL-1401 ~ TPL-1415)
|
|
1998
|
+
|
|
1999
|
+
### TPL-1401: group_extra填补模板
|
|
2000
|
+
```
|
|
2001
|
+
模板: group_extra(<field/>, <weight/>, <group/>)
|
|
2002
|
+
```
|
|
2003
|
+
| 占位符 | 可选值 | 说明 |
|
|
2004
|
+
|--------|--------|------|
|
|
2005
|
+
| `<field/>` | 任意字段 | 数据字段 |
|
|
2006
|
+
| `<weight/>` | `0.5`, `1` | 权重 |
|
|
2007
|
+
| `<group/>` | `densify(industry)`, `sector` | 分组 |
|
|
2008
|
+
|
|
2009
|
+
**说明**: 用组均值填补缺失值
|
|
2010
|
+
|
|
2011
|
+
---
|
|
2012
|
+
|
|
2013
|
+
### TPL-1402: 组合提取sigmoid
|
|
2014
|
+
```
|
|
2015
|
+
模板: scale(group_extra(ts_sum(sigmoid(ts_backfill(<field/>, <d1/>)), <d2/>) - ts_sum(sigmoid(ts_backfill(<field/>, <d1/>)), <d2/>), 0.5, densify(industry)))
|
|
2016
|
+
```
|
|
2017
|
+
| 占位符 | 可选值 | 说明 |
|
|
2018
|
+
|--------|--------|------|
|
|
2019
|
+
| `<field/>` | 任意字段 | 数据字段 |
|
|
2020
|
+
| `<d1/>` | `180` | 回填窗口 |
|
|
2021
|
+
| `<d2/>` | `3` | 求和窗口 |
|
|
2022
|
+
|
|
2023
|
+
---
|
|
2024
|
+
|
|
2025
|
+
### TPL-1403: PnL反馈模板
|
|
2026
|
+
```
|
|
2027
|
+
模板: if_else(inst_pnl(<alpha/>) > <threshold/>, <alpha/>, nan)
|
|
2028
|
+
```
|
|
2029
|
+
| 占位符 | 可选值 | 说明 |
|
|
2030
|
+
|--------|--------|------|
|
|
2031
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
2032
|
+
| `<threshold/>` | `0`, `-0.05` | PnL阈值 |
|
|
2033
|
+
|
|
2034
|
+
**说明**: 基于单标的PnL进行条件交易
|
|
2035
|
+
|
|
2036
|
+
---
|
|
2037
|
+
|
|
2038
|
+
### TPL-1404: 流动性加权模板
|
|
2039
|
+
```
|
|
2040
|
+
模板: <alpha/> * log(volume)
|
|
2041
|
+
```
|
|
2042
|
+
| 占位符 | 可选值 | 说明 |
|
|
2043
|
+
|--------|--------|------|
|
|
2044
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
2045
|
+
|
|
2046
|
+
**说明**: 将仓位偏向高流动性股票
|
|
2047
|
+
|
|
2048
|
+
---
|
|
2049
|
+
|
|
2050
|
+
### TPL-1405: 市值回归中性化
|
|
2051
|
+
```
|
|
2052
|
+
模板: regression_neut(<alpha/>, log(cap))
|
|
2053
|
+
```
|
|
2054
|
+
| 占位符 | 可选值 | 说明 |
|
|
2055
|
+
|--------|--------|------|
|
|
2056
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
2057
|
+
|
|
2058
|
+
**说明**: 剥离市值因子影响
|
|
2059
|
+
|
|
2060
|
+
---
|
|
2061
|
+
|
|
2062
|
+
## 第十六部分:百分位与分位数模板 (TPL-1501 ~ TPL-1510)
|
|
2063
|
+
|
|
2064
|
+
### TPL-1501: 时序百分位模板
|
|
2065
|
+
```
|
|
2066
|
+
模板: ts_percentage(<field/>, <d/>, percentage=<p/>)
|
|
2067
|
+
```
|
|
2068
|
+
| 占位符 | 可选值 | 说明 |
|
|
2069
|
+
|--------|--------|------|
|
|
2070
|
+
| `<field/>` | 任意字段 | 数据字段 |
|
|
2071
|
+
| `<d/>` | `22`, `66`, `126` | 窗口 |
|
|
2072
|
+
| `<p/>` | `0.5`, `0.25`, `0.75` | 百分位 |
|
|
2073
|
+
|
|
2074
|
+
---
|
|
2075
|
+
|
|
2076
|
+
### TPL-1502: 分位数模板
|
|
2077
|
+
```
|
|
2078
|
+
模板: <ts_op/>(ts_quantile(<field/>, <d/>, <q/>), <d2/>)
|
|
2079
|
+
```
|
|
2080
|
+
| 占位符 | 可选值 | 说明 |
|
|
2081
|
+
|--------|--------|------|
|
|
2082
|
+
| `<ts_op/>` | `rank`, `zscore` | 标准化 |
|
|
2083
|
+
| `<field/>` | 任意字段 | 数据字段 |
|
|
2084
|
+
| `<d/>` | `66`, `126` | 窗口 |
|
|
2085
|
+
| `<q/>` | `0.25`, `0.5`, `0.75` | 分位数 |
|
|
2086
|
+
| `<d2/>` | `22` | 操作窗口 |
|
|
2087
|
+
|
|
2088
|
+
---
|
|
2089
|
+
|
|
2090
|
+
### TPL-1503: Max-Min比率模板
|
|
2091
|
+
```
|
|
2092
|
+
模板: ts_max_diff(<field/>, <d/>) / ts_av_diff(<field/>, <d/>)
|
|
2093
|
+
```
|
|
2094
|
+
| 占位符 | 可选值 | 说明 |
|
|
2095
|
+
|--------|--------|------|
|
|
2096
|
+
| `<field/>` | 任意字段 | 数据字段 |
|
|
2097
|
+
| `<d/>` | `22`, `66` | 窗口 |
|
|
2098
|
+
|
|
2099
|
+
---
|
|
2100
|
+
|
|
2101
|
+
### TPL-1504: 中位数模板
|
|
2102
|
+
```
|
|
2103
|
+
模板: <field/> - ts_median(<field/>, <d/>)
|
|
2104
|
+
```
|
|
2105
|
+
| 占位符 | 可选值 | 说明 |
|
|
2106
|
+
|--------|--------|------|
|
|
2107
|
+
| `<field/>` | 任意字段 | 数据字段 |
|
|
2108
|
+
| `<d/>` | `22`, `66`, `252` | 窗口 |
|
|
2109
|
+
|
|
2110
|
+
---
|
|
2111
|
+
|
|
2112
|
+
### TPL-1505: 累积乘积模板
|
|
2113
|
+
```
|
|
2114
|
+
模板: ts_product(1 + <ret_field/>, <d/>)
|
|
2115
|
+
```
|
|
2116
|
+
| 占位符 | 可选值 | 说明 |
|
|
2117
|
+
|--------|--------|------|
|
|
2118
|
+
| `<ret_field/>` | `returns`, 收益率字段 | 收益字段 |
|
|
2119
|
+
| `<d/>` | `5`, `22`, `66` | 窗口 |
|
|
2120
|
+
|
|
2121
|
+
**说明**: 计算累积收益
|
|
2122
|
+
|
|
2123
|
+
---
|
|
2124
|
+
|
|
2125
|
+
## 第十七部分:实战表达式模板 (TPL-1601 ~ TPL-1700)
|
|
2126
|
+
|
|
2127
|
+
**说明**: 以下模板从社区高票帖子中提取,为实际验证过的表达式格式。
|
|
2128
|
+
|
|
2129
|
+
### TPL-1601: ts_max/ts_min替代公式
|
|
2130
|
+
```
|
|
2131
|
+
模板: {data} - ts_max_diff({data}, {d}) # 等效于 ts_max
|
|
2132
|
+
模板: (({data} - ts_max_diff({data}, {d})) * ts_scale({data}, {d}) - {data}) / (ts_scale({data}, {d}) - 1) # 等效于 ts_min
|
|
2133
|
+
```
|
|
2134
|
+
| 占位符 | 可选值 | 说明 |
|
|
2135
|
+
|--------|--------|------|
|
|
2136
|
+
| `{data}` | 任意MATRIX字段 | 数据字段 |
|
|
2137
|
+
| `{d}` | `22`, `66`, `126` | 窗口 |
|
|
2138
|
+
|
|
2139
|
+
**应用**: 当平台不支持ts_max/ts_min时的替代方案
|
|
2140
|
+
|
|
2141
|
+
---
|
|
2142
|
+
|
|
2143
|
+
### TPL-1602: 线性衰减权重公式
|
|
2144
|
+
```
|
|
2145
|
+
模板: weight = {d} + ts_step(0); ts_sum({data} * weight, {d}) / ts_sum(weight, {d}) # 等效于 ts_decay_linear
|
|
2146
|
+
```
|
|
2147
|
+
| 占位符 | 可选值 | 说明 |
|
|
2148
|
+
|--------|--------|------|
|
|
2149
|
+
| `{data}` | 任意字段 | 数据字段 |
|
|
2150
|
+
| `{d}` | `10`, `22`, `66` | 衰减窗口 |
|
|
2151
|
+
|
|
2152
|
+
---
|
|
2153
|
+
|
|
2154
|
+
### TPL-1603: 组归一化公式
|
|
2155
|
+
```
|
|
2156
|
+
模板: {data} / group_sum(abs({data}), {group}) # 等效于 group_normalize
|
|
2157
|
+
```
|
|
2158
|
+
| 占位符 | 可选值 | 说明 |
|
|
2159
|
+
|--------|--------|------|
|
|
2160
|
+
| `{data}` | 任意字段 | 数据字段 |
|
|
2161
|
+
| `{group}` | `industry`, `sector` | 分组字段 |
|
|
2162
|
+
|
|
2163
|
+
---
|
|
2164
|
+
|
|
2165
|
+
### TPL-1604: IR+峰度组合模板
|
|
2166
|
+
```
|
|
2167
|
+
模板:
|
|
2168
|
+
rank_data = rank({field});
|
|
2169
|
+
ts_ir(rank_data, {d}) + ts_kurtosis(rank_data, {d})
|
|
2170
|
+
```
|
|
2171
|
+
| 占位符 | 可选值 | 说明 |
|
|
2172
|
+
|--------|--------|------|
|
|
2173
|
+
| `{field}` | `volume`, `returns`, 任意字段 | 数据字段 |
|
|
2174
|
+
| `{d}` | `22`, `66` | 窗口 |
|
|
2175
|
+
|
|
2176
|
+
**说明**: IR和峰度组合捕捉信号强度和分布特征
|
|
2177
|
+
|
|
2178
|
+
---
|
|
2179
|
+
|
|
2180
|
+
### TPL-1605: VWAP相关性信号
|
|
2181
|
+
```
|
|
2182
|
+
模板: returns > -{threshold} ? (ts_ir(ts_corr(ts_returns(vwap, 1), ts_delay(group_neutralize({field}, market), {d1}), {d2}), {d2})) : -1
|
|
2183
|
+
```
|
|
2184
|
+
| 占位符 | 可选值 | 说明 |
|
|
2185
|
+
|--------|--------|------|
|
|
2186
|
+
| `{field}` | 任意数据字段 | 信号字段 |
|
|
2187
|
+
| `{threshold}` | `0.1`, `0.05` | 收益过滤阈值 |
|
|
2188
|
+
| `{d1}` | `30`, `60` | 延迟窗口 |
|
|
2189
|
+
| `{d2}` | `90`, `120` | 相关性窗口 |
|
|
2190
|
+
|
|
2191
|
+
---
|
|
2192
|
+
|
|
2193
|
+
### TPL-1606: 球队硬币因子 (ballteam_coin)
|
|
2194
|
+
```
|
|
2195
|
+
模板:
|
|
2196
|
+
# 基础版
|
|
2197
|
+
rank(ballteam_coin)
|
|
2198
|
+
|
|
2199
|
+
# 市值中性化版
|
|
2200
|
+
group_neutralize(rank(ballteam_coin), bucket(rank(assets), range='0.1,1,0.1'))
|
|
2201
|
+
```
|
|
2202
|
+
**说明**: 经典球队vs硬币因子,用于捕捉收益持续性
|
|
2203
|
+
|
|
2204
|
+
---
|
|
2205
|
+
|
|
2206
|
+
### TPL-1607: 偏度因子模板
|
|
2207
|
+
```
|
|
2208
|
+
模板: -group_rank(ts_skewness(returns, {d}), {group})
|
|
2209
|
+
```
|
|
2210
|
+
| 占位符 | 可选值 | 说明 |
|
|
2211
|
+
|--------|--------|------|
|
|
2212
|
+
| `{d}` | `22`, `66`, `126` | 偏度计算窗口 |
|
|
2213
|
+
| `{group}` | `sector`, `industry` | 分组 |
|
|
2214
|
+
|
|
2215
|
+
**说明**: 负偏度股票往往表现更好
|
|
2216
|
+
|
|
2217
|
+
---
|
|
2218
|
+
|
|
2219
|
+
### TPL-1608: 熵信号模板
|
|
2220
|
+
```
|
|
2221
|
+
模板: ts_zscore({field}, {d1}) * ts_entropy({field}, {d2})
|
|
2222
|
+
```
|
|
2223
|
+
| 占位符 | 可选值 | 说明 |
|
|
2224
|
+
|--------|--------|------|
|
|
2225
|
+
| `{field}` | `returns`, 任意字段 | 信号字段 |
|
|
2226
|
+
| `{d1}` | `14`, `22` | zscore窗口 |
|
|
2227
|
+
| `{d2}` | `14`, `22` | 熵窗口 |
|
|
2228
|
+
|
|
2229
|
+
**说明**: 结合标准化和不确定性度量
|
|
2230
|
+
|
|
2231
|
+
---
|
|
2232
|
+
|
|
2233
|
+
### TPL-1609: 分析师动量短长差模板
|
|
2234
|
+
```
|
|
2235
|
+
模板: log(ts_mean(anl4_{data}_{stats}, {d_short})) - log(ts_mean(anl4_{data}_{stats}, {d_long}))
|
|
2236
|
+
```
|
|
2237
|
+
| 占位符 | 可选值 | 说明 |
|
|
2238
|
+
|--------|--------|------|
|
|
2239
|
+
| `{data}` | `eps`, `revenue`, `netprofit` | 分析师预测类型 |
|
|
2240
|
+
| `{stats}` | `mean`, `low`, `high` | 统计量类型 |
|
|
2241
|
+
| `{d_short}` | `20`, `44` | 短期窗口 |
|
|
2242
|
+
| `{d_long}` | `44`, `126` | 长期窗口 |
|
|
2243
|
+
|
|
2244
|
+
---
|
|
2245
|
+
|
|
2246
|
+
### TPL-1610: 目标换手率分组排名
|
|
2247
|
+
```
|
|
2248
|
+
模板: -ts_mean(ts_target_tvr_hump(group_rank({field}, country), lambda_min=0, lambda_max=1, target_tvr={target}), {d})
|
|
2249
|
+
```
|
|
2250
|
+
| 占位符 | 可选值 | 说明 |
|
|
2251
|
+
|--------|--------|------|
|
|
2252
|
+
| `{field}` | 任意字段 | 数据字段 |
|
|
2253
|
+
| `{target}` | `0.1`, `0.15` | 目标换手率 |
|
|
2254
|
+
| `{d}` | `5`, `10` | 平均窗口 |
|
|
2255
|
+
|
|
2256
|
+
---
|
|
2257
|
+
|
|
2258
|
+
### TPL-1611: 最大差/均值差比率
|
|
2259
|
+
```
|
|
2260
|
+
模板: ts_max_diff({field}, {d}) / ts_av_diff({field}, {d})
|
|
2261
|
+
```
|
|
2262
|
+
| 占位符 | 可选值 | 说明 |
|
|
2263
|
+
|--------|--------|------|
|
|
2264
|
+
| `{field}` | 任意字段 | 数据字段 |
|
|
2265
|
+
| `{d}` | `22`, `66` | 窗口 |
|
|
2266
|
+
|
|
2267
|
+
**说明**: 捕捉极端值相对于平均变化的幅度
|
|
2268
|
+
|
|
2269
|
+
---
|
|
2270
|
+
|
|
2271
|
+
### TPL-1612: 模型数据三层嵌套
|
|
2272
|
+
```
|
|
2273
|
+
模板:
|
|
2274
|
+
a = rank(group_rank(ts_rank(ts_backfill({model_field}, 5), 5), sta1_top3000c20));
|
|
2275
|
+
trade_when(rank(a) > 0.03, -zscore(ts_zscore({model_field}, 25)) * a, 0.25 - rank(a))
|
|
2276
|
+
```
|
|
2277
|
+
| 占位符 | 可选值 | 说明 |
|
|
2278
|
+
|--------|--------|------|
|
|
2279
|
+
| `{model_field}` | `mdl175_01icc`, `mdl175_01dtsv` | 模型字段 |
|
|
2280
|
+
|
|
2281
|
+
---
|
|
2282
|
+
|
|
2283
|
+
### TPL-1613: 量价触发条件交易
|
|
2284
|
+
```
|
|
2285
|
+
模板:
|
|
2286
|
+
triggerTradeexp = (ts_arg_max(volume, {d}) < 1) && (volume > ts_sum(volume, {d}) / {d});
|
|
2287
|
+
triggerExitexp = -1;
|
|
2288
|
+
alphaexp = -rank(ts_delta(close, 2));
|
|
2289
|
+
trade_when(triggerTradeexp, alphaexp, triggerExitexp)
|
|
2290
|
+
```
|
|
2291
|
+
| 占位符 | 可选值 | 说明 |
|
|
2292
|
+
|--------|--------|------|
|
|
2293
|
+
| `{d}` | `5`, `10` | 窗口 |
|
|
2294
|
+
|
|
2295
|
+
**说明**: 今日成交量为近期最大且高于均值时交易
|
|
2296
|
+
|
|
2297
|
+
---
|
|
2298
|
+
|
|
2299
|
+
### TPL-1614: 情绪成交量交易
|
|
2300
|
+
```
|
|
2301
|
+
模板:
|
|
2302
|
+
sent_vol = vec_sum(scl12_alltype_buzzvec);
|
|
2303
|
+
trade_when(rank(sent_vol) > 0.95, -zscore(scl12_buzz) * sent_vol, -1)
|
|
2304
|
+
```
|
|
2305
|
+
**说明**: 高情绪量时反向交易情绪
|
|
2306
|
+
|
|
2307
|
+
---
|
|
2308
|
+
|
|
2309
|
+
### TPL-1615: 双层中性化模板
|
|
2310
|
+
```
|
|
2311
|
+
模板:
|
|
2312
|
+
a = ts_zscore({field}, 252);
|
|
2313
|
+
a1 = group_neutralize(a, industry);
|
|
2314
|
+
a2 = group_neutralize(a1, bucket(rank(cap), range='0.1,1,0.1'))
|
|
2315
|
+
```
|
|
2316
|
+
| 占位符 | 可选值 | 说明 |
|
|
2317
|
+
|--------|--------|------|
|
|
2318
|
+
| `{field}` | 任意字段 | 数据字段 |
|
|
2319
|
+
|
|
2320
|
+
**说明**: 先行业后市值的双重中性化
|
|
2321
|
+
|
|
2322
|
+
---
|
|
2323
|
+
|
|
2324
|
+
### TPL-1616: 相关性计算公式
|
|
2325
|
+
```
|
|
2326
|
+
模板:
|
|
2327
|
+
a = {field1};
|
|
2328
|
+
b = {field2};
|
|
2329
|
+
p = {d};
|
|
2330
|
+
c = ts_mean(ts_av_diff(a, p) * ts_av_diff(b, p), p);
|
|
2331
|
+
c / ts_std_dev(a, p) / ts_std_dev(b, p) # 近似 ts_corr
|
|
2332
|
+
```
|
|
2333
|
+
| 占位符 | 可选值 | 说明 |
|
|
2334
|
+
|--------|--------|------|
|
|
2335
|
+
| `{field1}` | `close`, `returns` | 第一字段 |
|
|
2336
|
+
| `{field2}` | `volume`, `open` | 第二字段 |
|
|
2337
|
+
| `{d}` | `5`, `22` | 窗口 |
|
|
2338
|
+
|
|
2339
|
+
---
|
|
2340
|
+
|
|
2341
|
+
### TPL-1617: 回归中性化双因子
|
|
2342
|
+
```
|
|
2343
|
+
模板:
|
|
2344
|
+
afr = vec_avg({analyst_field});
|
|
2345
|
+
short_mom = ts_mean(returns - group_mean(returns, 1, market), {d_short});
|
|
2346
|
+
long_mom = ts_delay(ts_mean(returns - group_mean(returns, 1, market), {d_long}), {d_long});
|
|
2347
|
+
regression_neut(regression_neut(afr, short_mom), long_mom)
|
|
2348
|
+
```
|
|
2349
|
+
| 占位符 | 可选值 | 说明 |
|
|
2350
|
+
|--------|--------|------|
|
|
2351
|
+
| `{analyst_field}` | 分析师VECTOR字段 | 分析师数据 |
|
|
2352
|
+
| `{d_short}` | `5`, `10` | 短期动量窗口 |
|
|
2353
|
+
| `{d_long}` | `20`, `22` | 长期动量窗口 |
|
|
2354
|
+
|
|
2355
|
+
**说明**: 剥离短期和长期动量后的分析师因子
|
|
2356
|
+
|
|
2357
|
+
---
|
|
2358
|
+
|
|
2359
|
+
### TPL-1618: 回归斜率趋势检测
|
|
2360
|
+
```
|
|
2361
|
+
模板: ts_regression(ts_zscore({field}, {d}), ts_step(1), {d}, rettype=2)
|
|
2362
|
+
```
|
|
2363
|
+
| 占位符 | 可选值 | 说明 |
|
|
2364
|
+
|--------|--------|------|
|
|
2365
|
+
| `{field}` | 任意MATRIX字段 | 数据字段 |
|
|
2366
|
+
| `{d}` | `252`, `500` | 窗口 |
|
|
2367
|
+
|
|
2368
|
+
**说明**: rettype=2返回回归斜率,检测长期趋势
|
|
2369
|
+
|
|
2370
|
+
---
|
|
2371
|
+
|
|
2372
|
+
### TPL-1619: 三因子乘积组合
|
|
2373
|
+
```
|
|
2374
|
+
模板:
|
|
2375
|
+
my_group = market;
|
|
2376
|
+
rank(
|
|
2377
|
+
group_rank(ts_decay_linear(volume / ts_sum(volume, 252), 10), my_group) *
|
|
2378
|
+
group_rank(ts_rank(vec_avg({fundamental}), {d}), my_group) *
|
|
2379
|
+
group_rank(-ts_delta(close, 5), my_group)
|
|
2380
|
+
)
|
|
2381
|
+
```
|
|
2382
|
+
| 占位符 | 可选值 | 说明 |
|
|
2383
|
+
|--------|--------|------|
|
|
2384
|
+
| `{fundamental}` | 基本面VECTOR字段 | 基本面数据 |
|
|
2385
|
+
| `{d}` | `252`, `504` | 排名窗口 |
|
|
2386
|
+
|
|
2387
|
+
**说明**: 成交量趋势 × 基本面排名 × 价格反转
|
|
2388
|
+
|
|
2389
|
+
---
|
|
2390
|
+
|
|
2391
|
+
### TPL-1620: 波动率条件反转
|
|
2392
|
+
```
|
|
2393
|
+
模板:
|
|
2394
|
+
vol = ts_std_dev(returns, {d});
|
|
2395
|
+
vol_mean = group_mean(vol, 1, market);
|
|
2396
|
+
flip_ret = if_else(vol < vol_mean, -returns, returns);
|
|
2397
|
+
-ts_mean(flip_ret, {d})
|
|
2398
|
+
```
|
|
2399
|
+
| 占位符 | 可选值 | 说明 |
|
|
2400
|
+
|--------|--------|------|
|
|
2401
|
+
| `{d}` | `20`, `22` | 窗口 |
|
|
2402
|
+
|
|
2403
|
+
**说明**: 低波动做反转,高波动做动量
|
|
2404
|
+
|
|
2405
|
+
---
|
|
2406
|
+
|
|
2407
|
+
### TPL-1621: 恐惧指标复合
|
|
2408
|
+
```
|
|
2409
|
+
模板:
|
|
2410
|
+
fear = ts_mean(
|
|
2411
|
+
abs(returns - group_mean(returns, 1, market)) /
|
|
2412
|
+
(abs(returns) + abs(group_mean(returns, 1, market)) + 0.1),
|
|
2413
|
+
{d}
|
|
2414
|
+
);
|
|
2415
|
+
-group_neutralize(fear * {signal}, bucket(rank(cap), range='0.1,1,0.1'))
|
|
2416
|
+
```
|
|
2417
|
+
| 占位符 | 可选值 | 说明 |
|
|
2418
|
+
|--------|--------|------|
|
|
2419
|
+
| `{d}` | `20`, `22` | 窗口 |
|
|
2420
|
+
| `{signal}` | 主信号 | 待组合信号 |
|
|
2421
|
+
|
|
2422
|
+
---
|
|
2423
|
+
|
|
2424
|
+
### TPL-1622: 财务质量单因子
|
|
2425
|
+
```
|
|
2426
|
+
模板: group_neutralize(rank({fundamental_field}), bucket(rank(cap), range='0,1,0.1'))
|
|
2427
|
+
```
|
|
2428
|
+
| 占位符 | 可选值 | 说明 |
|
|
2429
|
+
|--------|--------|------|
|
|
2430
|
+
| `{fundamental_field}` | `roe`, `roa`, `net_income/assets` | 财务质量指标 |
|
|
2431
|
+
|
|
2432
|
+
---
|
|
2433
|
+
|
|
2434
|
+
### TPL-1623: 老虎哥回归模板
|
|
2435
|
+
```
|
|
2436
|
+
模板: group_rank(ts_regression(ts_zscore({field1}, {d}), ts_zscore(vec_sum({field2}), {d}), {d}), densify(sector))
|
|
2437
|
+
```
|
|
2438
|
+
| 占位符 | 可选值 | 说明 |
|
|
2439
|
+
|--------|--------|------|
|
|
2440
|
+
| `{field1}` | 任意MATRIX字段 | Y变量 |
|
|
2441
|
+
| `{field2}` | 任意VECTOR字段 | X变量 |
|
|
2442
|
+
| `{d}` | `252`, `504` | 回归窗口 |
|
|
2443
|
+
|
|
2444
|
+
---
|
|
2445
|
+
|
|
2446
|
+
### TPL-1624: 综合数据清洗模板
|
|
2447
|
+
```
|
|
2448
|
+
模板: ts_decay_linear(-densify(zscore(winsorize(ts_backfill({field}, 115), std=4))), 10)
|
|
2449
|
+
```
|
|
2450
|
+
| 占位符 | 可选值 | 说明 |
|
|
2451
|
+
|--------|--------|------|
|
|
2452
|
+
| `{field}` | 低频字段如 `anl4_adjusted_netincome_ft` | 需要处理的字段 |
|
|
2453
|
+
|
|
2454
|
+
---
|
|
2455
|
+
|
|
2456
|
+
### TPL-1625: 延迟最大值位置模板
|
|
2457
|
+
```
|
|
2458
|
+
模板: ts_max({field}, {d}) = ts_delay({field}, ts_arg_max({field}, {d})) # 等效公式
|
|
2459
|
+
```
|
|
2460
|
+
| 占位符 | 可选值 | 说明 |
|
|
2461
|
+
|--------|--------|------|
|
|
2462
|
+
| `{field}` | 任意字段 | 数据字段 |
|
|
2463
|
+
| `{d}` | `22`, `66` | 窗口 |
|
|
2464
|
+
|
|
2465
|
+
---
|
|
2466
|
+
|
|
2467
|
+
### TPL-1626: 数据探索通用模板
|
|
2468
|
+
```
|
|
2469
|
+
模板: zscore(ts_delta(rank(ts_zscore({field}, {d1})), {d2}))
|
|
2470
|
+
```
|
|
2471
|
+
| 占位符 | 可选值 | 说明 |
|
|
2472
|
+
|--------|--------|------|
|
|
2473
|
+
| `{field}` | 任意MATRIX字段 | 待探索数据字段 |
|
|
2474
|
+
| `{d1}` | `60`, `126`, `252` | zscore窗口 |
|
|
2475
|
+
| `{d2}` | `5`, `10`, `22` | delta窗口 |
|
|
2476
|
+
|
|
2477
|
+
**说明**: 顾问推荐的新数据探索模板,可替换op和时间参数
|
|
2478
|
+
|
|
2479
|
+
---
|
|
2480
|
+
|
|
2481
|
+
### TPL-1627: 自定义衰减权重模板
|
|
2482
|
+
```
|
|
2483
|
+
模板:
|
|
2484
|
+
weight = {d} + ts_step(0); # 线性递增权重
|
|
2485
|
+
ts_sum({data} * weight, {d}) / ts_sum(weight, {d}) # 加权平均
|
|
2486
|
+
|
|
2487
|
+
# 替代版 (ts_step递减)
|
|
2488
|
+
ts_sum({alpha} * ts_step(1), {d}) / ts_sum(ts_step(1), {d})
|
|
2489
|
+
```
|
|
2490
|
+
| 占位符 | 可选值 | 说明 |
|
|
2491
|
+
|--------|--------|------|
|
|
2492
|
+
| `{data}` | 任意字段 | 数据字段 |
|
|
2493
|
+
| `{alpha}` | 主信号 | 原始Alpha |
|
|
2494
|
+
| `{d}` | `10`, `22`, `66` | 衰减窗口 |
|
|
2495
|
+
|
|
2496
|
+
**说明**: 当没有ts_decay_linear权限时的替代方案
|
|
2497
|
+
|
|
2498
|
+
---
|
|
2499
|
+
|
|
2500
|
+
### TPL-1628: log_diff相对增长模板
|
|
2501
|
+
```
|
|
2502
|
+
模板: group_rank(log_diff({field}), {group})
|
|
2503
|
+
```
|
|
2504
|
+
| 占位符 | 可选值 | 说明 |
|
|
2505
|
+
|--------|--------|------|
|
|
2506
|
+
| `{field}` | 财务指标如 `sales`, `eps`, `assets` | 数据字段 |
|
|
2507
|
+
| `{group}` | `sector`, `industry` | 分组 |
|
|
2508
|
+
|
|
2509
|
+
**说明**: 检测相对增长率,对乘性变化更敏感
|
|
2510
|
+
|
|
2511
|
+
---
|
|
2512
|
+
|
|
2513
|
+
### TPL-1629: ts_product累积收益模板
|
|
2514
|
+
```
|
|
2515
|
+
模板: group_rank(ts_product(1 + {ret_field}, {d}), {group})
|
|
2516
|
+
```
|
|
2517
|
+
| 占位符 | 可选值 | 说明 |
|
|
2518
|
+
|--------|--------|------|
|
|
2519
|
+
| `{ret_field}` | `returns`, 收益率字段 | 收益字段 |
|
|
2520
|
+
| `{d}` | `22`, `66`, `126` | 窗口 |
|
|
2521
|
+
| `{group}` | `sector`, `industry` | 分组 |
|
|
2522
|
+
|
|
2523
|
+
**说明**: 计算累积收益排名
|
|
2524
|
+
|
|
2525
|
+
---
|
|
2526
|
+
|
|
2527
|
+
### TPL-1630: ts_percentage阈值模板
|
|
2528
|
+
```
|
|
2529
|
+
模板:
|
|
2530
|
+
high_threshold = ts_percentage({field}, {d}, percentage=0.5);
|
|
2531
|
+
low_threshold = ts_percentage({field}, {d}, percentage=0.5);
|
|
2532
|
+
{signal}
|
|
2533
|
+
```
|
|
2534
|
+
| 占位符 | 可选值 | 说明 |
|
|
2535
|
+
|--------|--------|------|
|
|
2536
|
+
| `{field}` | `close`, 价格字段 | 阈值计算字段 |
|
|
2537
|
+
| `{d}` | `22`, `66` | 窗口 |
|
|
2538
|
+
| `{signal}` | 主信号 | 条件信号 |
|
|
2539
|
+
|
|
2540
|
+
**说明**: 用于震荡带突破策略的阈值构建
|
|
2541
|
+
|
|
2542
|
+
---
|
|
2543
|
+
|
|
2544
|
+
### TPL-1631: 动量反转切换模板
|
|
2545
|
+
```
|
|
2546
|
+
模板:
|
|
2547
|
+
mom = ts_sum(returns, {d_long}) - ts_sum(returns, {d_short});
|
|
2548
|
+
reversal = -ts_delta(close, {d_short});
|
|
2549
|
+
if_else(ts_rank(ts_std_dev(returns, {d_short}), {d_long}) > 0.5, mom, reversal)
|
|
2550
|
+
```
|
|
2551
|
+
| 占位符 | 可选值 | 说明 |
|
|
2552
|
+
|--------|--------|------|
|
|
2553
|
+
| `{d_short}` | `5`, `10` | 短期窗口 |
|
|
2554
|
+
| `{d_long}` | `22`, `66` | 长期窗口 |
|
|
2555
|
+
|
|
2556
|
+
**说明**: 高波动环境用动量,低波动环境用反转
|
|
2557
|
+
|
|
2558
|
+
---
|
|
2559
|
+
|
|
2560
|
+
### TPL-1632: 市场收益率近似模板 (CHN)
|
|
2561
|
+
```
|
|
2562
|
+
模板:
|
|
2563
|
+
value = rank(cap) > 0.9 ? cap : 0;
|
|
2564
|
+
market_return = group_sum(returns * value, country) / group_sum(value, country);
|
|
2565
|
+
market_return
|
|
2566
|
+
```
|
|
2567
|
+
**说明**: 用市值加权近似沪深300指数收益率,设置neutralization=NONE, decay=0
|
|
2568
|
+
|
|
2569
|
+
---
|
|
2570
|
+
|
|
2571
|
+
### TPL-1633: Beta回归中性化模板
|
|
2572
|
+
```
|
|
2573
|
+
模板:
|
|
2574
|
+
market_return = group_mean(returns, 1, market);
|
|
2575
|
+
ts_regression({field}, market_return, {d}) # 返回残差(Y - E[Y])
|
|
2576
|
+
```
|
|
2577
|
+
| 占位符 | 可选值 | 说明 |
|
|
2578
|
+
|--------|--------|------|
|
|
2579
|
+
| `{field}` | 任意MATRIX字段 | 待中性化字段 |
|
|
2580
|
+
| `{d}` | `126`, `252` | 回归窗口 |
|
|
2581
|
+
|
|
2582
|
+
**说明**: 使用一元线性回归剥离市场因子
|
|
2583
|
+
|
|
2584
|
+
---
|
|
2585
|
+
|
|
2586
|
+
### TPL-1634: ts_moment高阶矩k值模板
|
|
2587
|
+
```
|
|
2588
|
+
模板: ts_moment({field}, {d}, k={k})
|
|
2589
|
+
|
|
2590
|
+
k=2: 方差 (等价于 ts_std_dev^2)
|
|
2591
|
+
k=3: 偏度 (等价于 ts_skewness)
|
|
2592
|
+
k=4: 峰度 (等价于 ts_kurtosis)
|
|
2593
|
+
```
|
|
2594
|
+
| 占位符 | 可选值 | 说明 |
|
|
2595
|
+
|--------|--------|------|
|
|
2596
|
+
| `{field}` | 任意MATRIX字段 | 数据字段 |
|
|
2597
|
+
| `{d}` | `22`, `66`, `126` | 窗口 |
|
|
2598
|
+
| `{k}` | `2`, `3`, `4` | 阶数 |
|
|
2599
|
+
|
|
2600
|
+
---
|
|
2601
|
+
|
|
2602
|
+
### TPL-1635: 龙头股因子增强模板
|
|
2603
|
+
```
|
|
2604
|
+
模板: sigmoid(rank(star_pm_global_rank))
|
|
2605
|
+
```
|
|
2606
|
+
**说明**: 对龙头股因子进行sigmoid增强
|
|
2607
|
+
|
|
2608
|
+
---
|
|
2609
|
+
|
|
2610
|
+
### TPL-1636: purify数据清洗嵌套模板
|
|
2611
|
+
```
|
|
2612
|
+
模板: group_rank(ts_rank(purify({field}), {d}), {group})
|
|
2613
|
+
```
|
|
2614
|
+
| 占位符 | 可选值 | 说明 |
|
|
2615
|
+
|--------|--------|------|
|
|
2616
|
+
| `{field}` | 任意字段 | 待清洗数据 |
|
|
2617
|
+
| `{d}` | `22`, `66` | 排名窗口 |
|
|
2618
|
+
| `{group}` | `sector`, `industry` | 分组 |
|
|
2619
|
+
|
|
2620
|
+
**说明**: purify自动化清洗异常值和噪声
|
|
2621
|
+
|
|
2622
|
+
---
|
|
2623
|
+
|
|
2624
|
+
### TPL-1637: 理想振幅因子模板
|
|
2625
|
+
```
|
|
2626
|
+
模板:
|
|
2627
|
+
amplitude = (high - low) / close;
|
|
2628
|
+
ideal_amp = ts_percentage(amplitude, {d}, percentage=0.5);
|
|
2629
|
+
group_rank(amplitude - ideal_amp, {group})
|
|
2630
|
+
```
|
|
2631
|
+
| 占位符 | 可选值 | 说明 |
|
|
2632
|
+
|--------|--------|------|
|
|
2633
|
+
| `{d}` | `22`, `66` | 百分位窗口 |
|
|
2634
|
+
| `{group}` | `sector`, `industry` | 分组 |
|
|
2635
|
+
|
|
2636
|
+
**说明**: 实际振幅偏离理想振幅的程度
|
|
2637
|
+
|
|
2638
|
+
---
|
|
2639
|
+
|
|
2640
|
+
### TPL-1638: 异同离差乖离率因子 (MACD风格)
|
|
2641
|
+
```
|
|
2642
|
+
模板:
|
|
2643
|
+
ema_short = ts_decay_exp_window({field}, {d_short}, 0.9);
|
|
2644
|
+
ema_long = ts_decay_exp_window({field}, {d_long}, 0.9);
|
|
2645
|
+
dif = ema_short - ema_long;
|
|
2646
|
+
ts_zscore(dif, {d_signal})
|
|
2647
|
+
```
|
|
2648
|
+
| 占位符 | 可选值 | 说明 |
|
|
2649
|
+
|--------|--------|------|
|
|
2650
|
+
| `{field}` | `close`, 价格字段 | 数据字段 |
|
|
2651
|
+
| `{d_short}` | `12`, `22` | 短期EMA窗口 |
|
|
2652
|
+
| `{d_long}` | `26`, `66` | 长期EMA窗口 |
|
|
2653
|
+
| `{d_signal}` | `9`, `22` | 信号线窗口 |
|
|
2654
|
+
|
|
2655
|
+
---
|
|
2656
|
+
|
|
2657
|
+
### TPL-1639: 收益率条件筛选反转
|
|
2658
|
+
```
|
|
2659
|
+
模板:
|
|
2660
|
+
high_ret = ts_rank(returns, {d1}) > 0.8;
|
|
2661
|
+
low_ret = ts_rank(returns, {d1}) < 0.2;
|
|
2662
|
+
if_else(high_ret, -returns, if_else(low_ret, returns, 0))
|
|
2663
|
+
```
|
|
2664
|
+
| 占位符 | 可选值 | 说明 |
|
|
2665
|
+
|--------|--------|------|
|
|
2666
|
+
| `{d1}` | `22`, `66` | 排名窗口 |
|
|
2667
|
+
|
|
2668
|
+
**说明**: 只对极端收益做反转
|
|
2669
|
+
|
|
2670
|
+
---
|
|
2671
|
+
|
|
2672
|
+
### TPL-1640: 三阶模板优化版
|
|
2673
|
+
```
|
|
2674
|
+
模板: <group_op/>(<ts_op1/>(<ts_op2/>(<field/>, <d1/>), <d2/>), <group/>)
|
|
2675
|
+
```
|
|
2676
|
+
| 占位符 | 可选值 | 说明 |
|
|
2677
|
+
|--------|--------|------|
|
|
2678
|
+
| `<group_op/>` | `group_rank`, `group_zscore` | 外层分组操作 |
|
|
2679
|
+
| `<ts_op1/>` | `ts_rank`, `ts_delta`, `ts_mean` | 中层时序操作 |
|
|
2680
|
+
| `<ts_op2/>` | `ts_zscore`, `ts_rank`, `ts_ir` | 内层时序操作 |
|
|
2681
|
+
| `<field/>` | 任意字段 | 数据字段 |
|
|
2682
|
+
| `<d1/>` | `60`, `126`, `252` | 内层窗口 |
|
|
2683
|
+
| `<d2/>` | `5`, `22`, `66` | 外层窗口 |
|
|
2684
|
+
| `<group/>` | `sector`, `industry` | 分组 |
|
|
2685
|
+
|
|
2686
|
+
**说明**: 经典三阶嵌套结构,可灵活替换各层操作符
|
|
2687
|
+
|
|
2688
|
+
---
|
|
2689
|
+
|
|
2690
|
+
### TPL-1641: ts_entropy信号检测模板
|
|
2691
|
+
```
|
|
2692
|
+
模板: ts_entropy({field}, {d})
|
|
2693
|
+
```
|
|
2694
|
+
| 占位符 | 可选值 | 说明 |
|
|
2695
|
+
|--------|--------|------|
|
|
2696
|
+
| `{field}` | `returns`, `volume`, 任意MATRIX字段 | 数据字段 |
|
|
2697
|
+
| `{d}` | `14`, `22`, `66` | 窗口 |
|
|
2698
|
+
|
|
2699
|
+
**说明**: 衡量时序数据的不确定性,高熵值表示更多随机性
|
|
2700
|
+
|
|
2701
|
+
---
|
|
2702
|
+
|
|
2703
|
+
### TPL-1642: 熵+ZScore组合模板
|
|
2704
|
+
```
|
|
2705
|
+
模板: ts_zscore({field}, {d}) * ts_entropy({field}, {d})
|
|
2706
|
+
```
|
|
2707
|
+
| 占位符 | 可选值 | 说明 |
|
|
2708
|
+
|--------|--------|------|
|
|
2709
|
+
| `{field}` | 任意MATRIX字段 | 数据字段 |
|
|
2710
|
+
| `{d}` | `14`, `22` | 窗口 |
|
|
2711
|
+
|
|
2712
|
+
**说明**: RSI超买超卖 + 熵不确定性组合,捕捉可能的修正
|
|
2713
|
+
|
|
2714
|
+
---
|
|
2715
|
+
|
|
2716
|
+
### TPL-1643: ts_ir+ts_entropy信号组合
|
|
2717
|
+
```
|
|
2718
|
+
模板:
|
|
2719
|
+
signal = ts_ir({field}, {d}) + ts_entropy({field}, {d});
|
|
2720
|
+
group_rank(signal, {group})
|
|
2721
|
+
```
|
|
2722
|
+
| 占位符 | 可选值 | 说明 |
|
|
2723
|
+
|--------|--------|------|
|
|
2724
|
+
| `{field}` | 任意MATRIX字段 | 数据字段 |
|
|
2725
|
+
| `{d}` | `22`, `66` | 窗口 |
|
|
2726
|
+
| `{group}` | `sector`, `industry` | 分组 |
|
|
2727
|
+
|
|
2728
|
+
**说明**: IR(信息比率)和Entropy组合捕捉信号稳定性和分布特征
|
|
2729
|
+
|
|
2730
|
+
---
|
|
2731
|
+
|
|
2732
|
+
### TPL-1644: trade_when市值过滤模板
|
|
2733
|
+
```
|
|
2734
|
+
模板: trade_when(rank(cap) > {threshold}, {alpha}, -1)
|
|
2735
|
+
```
|
|
2736
|
+
| 占位符 | 可选值 | 说明 |
|
|
2737
|
+
|--------|--------|------|
|
|
2738
|
+
| `{threshold}` | `0.3`, `0.5`, `0.7` | 市值排名阈值 |
|
|
2739
|
+
| `{alpha}` | 主信号 | 原始Alpha |
|
|
2740
|
+
|
|
2741
|
+
**说明**: 仅交易大市值股票,降低prod corr
|
|
2742
|
+
|
|
2743
|
+
---
|
|
2744
|
+
|
|
2745
|
+
### TPL-1645: trade_when盈利过滤模板
|
|
2746
|
+
```
|
|
2747
|
+
模板: trade_when(eps > {threshold} * est_eps, group_rank((eps - est_eps)/est_eps, industry), -1)
|
|
2748
|
+
```
|
|
2749
|
+
| 占位符 | 可选值 | 说明 |
|
|
2750
|
+
|--------|--------|------|
|
|
2751
|
+
| `{threshold}` | `1.0`, `1.1`, `1.2` | 盈利超预期比例 |
|
|
2752
|
+
|
|
2753
|
+
**说明**: 只交易盈利超预期的股票
|
|
2754
|
+
|
|
2755
|
+
---
|
|
2756
|
+
|
|
2757
|
+
### TPL-1646: trade_when量价触发模板
|
|
2758
|
+
```
|
|
2759
|
+
模板:
|
|
2760
|
+
triggerTrade = (ts_arg_max(volume, {d}) < 1) && (volume > ts_sum(volume, {d})/{d});
|
|
2761
|
+
trade_when(triggerTrade, {alpha}, -1)
|
|
2762
|
+
```
|
|
2763
|
+
| 占位符 | 可选值 | 说明 |
|
|
2764
|
+
|--------|--------|------|
|
|
2765
|
+
| `{d}` | `5`, `10` | 判断窗口 |
|
|
2766
|
+
| `{alpha}` | `-rank(ts_delta(close, 2))` | 主信号 |
|
|
2767
|
+
|
|
2768
|
+
**说明**: 量价突破触发条件交易
|
|
2769
|
+
|
|
2770
|
+
---
|
|
2771
|
+
|
|
2772
|
+
### TPL-1647: trade_when情绪量过滤模板
|
|
2773
|
+
```
|
|
2774
|
+
模板:
|
|
2775
|
+
sent_vol = vec_sum({sentiment_vec});
|
|
2776
|
+
trade_when(rank(sent_vol) > {threshold}, -zscore({sentiment_field}) * sent_vol, -1)
|
|
2777
|
+
```
|
|
2778
|
+
| 占位符 | 可选值 | 说明 |
|
|
2779
|
+
|--------|--------|------|
|
|
2780
|
+
| `{sentiment_vec}` | `scl12_alltype_buzzvec` 等VECTOR字段 | 情绪向量 |
|
|
2781
|
+
| `{sentiment_field}` | `scl12_buzz`, `scl12_sentiment` | 情绪字段 |
|
|
2782
|
+
| `{threshold}` | `0.9`, `0.95` | 情绪量阈值 |
|
|
2783
|
+
|
|
2784
|
+
**说明**: 高情绪量时反向交易情绪
|
|
2785
|
+
|
|
2786
|
+
---
|
|
2787
|
+
|
|
2788
|
+
### TPL-1648: bucket市值分组中性化模板
|
|
2789
|
+
```
|
|
2790
|
+
模板:
|
|
2791
|
+
my_group2 = bucket(rank(cap), range='{range}');
|
|
2792
|
+
group_neutralize({alpha}, my_group2)
|
|
2793
|
+
```
|
|
2794
|
+
| 占位符 | 可选值 | 说明 |
|
|
2795
|
+
|--------|--------|------|
|
|
2796
|
+
| `{range}` | `'0,1,0.1'`, `'0.1,1,0.1'` | 分桶范围 |
|
|
2797
|
+
| `{alpha}` | 主信号 | 原始Alpha |
|
|
2798
|
+
|
|
2799
|
+
**说明**: 按市值分桶进行中性化,去除规模效应
|
|
2800
|
+
|
|
2801
|
+
---
|
|
2802
|
+
|
|
2803
|
+
### TPL-1649: group_zscore时序组合模板
|
|
2804
|
+
```
|
|
2805
|
+
模板: group_zscore(ts_ir({field}, {d}), {group})
|
|
2806
|
+
```
|
|
2807
|
+
| 占位符 | 可选值 | 说明 |
|
|
2808
|
+
|--------|--------|------|
|
|
2809
|
+
| `{field}` | 任意MATRIX字段 | 数据字段 |
|
|
2810
|
+
| `{d}` | `22`, `66`, `126` | IR窗口 |
|
|
2811
|
+
| `{group}` | `sector`, `industry` | 分组 |
|
|
2812
|
+
|
|
2813
|
+
**说明**: 在分组内进行IR的Z-score标准化
|
|
2814
|
+
|
|
2815
|
+
---
|
|
2816
|
+
|
|
2817
|
+
### TPL-1650: scale+rank+ts组合模板
|
|
2818
|
+
```
|
|
2819
|
+
模板: scale(rank(ts_zscore({field}, {d})))
|
|
2820
|
+
```
|
|
2821
|
+
| 占位符 | 可选值 | 说明 |
|
|
2822
|
+
|--------|--------|------|
|
|
2823
|
+
| `{field}` | 任意MATRIX字段 | 数据字段 |
|
|
2824
|
+
| `{d}` | `66`, `126`, `252` | 窗口 |
|
|
2825
|
+
|
|
2826
|
+
**说明**: 多层标准化处理信号
|
|
2827
|
+
|
|
2828
|
+
---
|
|
2829
|
+
|
|
2830
|
+
### TPL-1651: Betting Against Beta模板
|
|
2831
|
+
```
|
|
2832
|
+
模板:
|
|
2833
|
+
market_return = group_mean(returns, 1, market);
|
|
2834
|
+
beta = ts_regression(returns, market_return, {d}, rettype=2);
|
|
2835
|
+
-group_rank(beta, industry)
|
|
2836
|
+
```
|
|
2837
|
+
| 占位符 | 可选值 | 说明 |
|
|
2838
|
+
|--------|--------|------|
|
|
2839
|
+
| `{d}` | `126`, `252` | 回归窗口 |
|
|
2840
|
+
|
|
2841
|
+
**说明**: 反Beta投注因子,做多低Beta股票
|
|
2842
|
+
|
|
2843
|
+
---
|
|
2844
|
+
|
|
2845
|
+
### TPL-1652: 跳跃因子模板
|
|
2846
|
+
```
|
|
2847
|
+
模板:
|
|
2848
|
+
jump_up = ts_count(returns > ts_std_dev(returns, {d}) * {threshold}, {d});
|
|
2849
|
+
jump_down = ts_count(returns < -ts_std_dev(returns, {d}) * {threshold}, {d});
|
|
2850
|
+
group_rank(jump_down - jump_up, {group})
|
|
2851
|
+
```
|
|
2852
|
+
| 占位符 | 可选值 | 说明 |
|
|
2853
|
+
|--------|--------|------|
|
|
2854
|
+
| `{d}` | `22`, `66` | 统计窗口 |
|
|
2855
|
+
| `{threshold}` | `2`, `2.5`, `3` | 标准差倍数 |
|
|
2856
|
+
| `{group}` | `sector`, `industry` | 分组 |
|
|
2857
|
+
|
|
2858
|
+
**说明**: 统计尾部跳跃事件的不对称性
|
|
2859
|
+
|
|
2860
|
+
---
|
|
2861
|
+
|
|
2862
|
+
### TPL-1653: 量小换手率模板
|
|
2863
|
+
```
|
|
2864
|
+
模板:
|
|
2865
|
+
turnover = volume / sharesout;
|
|
2866
|
+
low_turnover = ts_percentage(turnover, {d}, percentage=0.2);
|
|
2867
|
+
group_rank(turnover < low_turnover, {group})
|
|
2868
|
+
```
|
|
2869
|
+
| 占位符 | 可选值 | 说明 |
|
|
2870
|
+
|--------|--------|------|
|
|
2871
|
+
| `{d}` | `22`, `66` | 百分位窗口 |
|
|
2872
|
+
| `{group}` | `sector`, `industry` | 分组 |
|
|
2873
|
+
|
|
2874
|
+
**说明**: 识别低换手率状态
|
|
2875
|
+
|
|
2876
|
+
---
|
|
2877
|
+
|
|
2878
|
+
### TPL-1654: 隔夜收益因子模板
|
|
2879
|
+
```
|
|
2880
|
+
模板:
|
|
2881
|
+
overnight_ret = open / ts_delay(close, 1) - 1;
|
|
2882
|
+
group_rank(ts_mean(overnight_ret, {d}), {group})
|
|
2883
|
+
```
|
|
2884
|
+
| 占位符 | 可选值 | 说明 |
|
|
2885
|
+
|--------|--------|------|
|
|
2886
|
+
| `{d}` | `5`, `22`, `66` | 平均窗口 |
|
|
2887
|
+
| `{group}` | `sector`, `industry` | 分组 |
|
|
2888
|
+
|
|
2889
|
+
**说明**: 隔夜"拉锯战"因子
|
|
2890
|
+
|
|
2891
|
+
---
|
|
2892
|
+
|
|
2893
|
+
### TPL-1655: sta1分组三因子模板
|
|
2894
|
+
```
|
|
2895
|
+
模板:
|
|
2896
|
+
a = rank(group_rank(ts_rank(ts_backfill({field1}, {d1}), {d2}), sta1_top3000c20));
|
|
2897
|
+
trade_when(rank(a) > {threshold}, -zscore(ts_zscore({field2}, {d3})) * a, {exit_threshold} - rank(a))
|
|
2898
|
+
```
|
|
2899
|
+
| 占位符 | 可选值 | 说明 |
|
|
2900
|
+
|--------|--------|------|
|
|
2901
|
+
| `{field1}` | 任意字段 | 第一因子字段 |
|
|
2902
|
+
| `{field2}` | 模型字段如`mdl175_01dtsv` | 第二因子字段 |
|
|
2903
|
+
| `{d1}`, `{d2}`, `{d3}` | 各窗口参数 | 时间窗口 |
|
|
2904
|
+
| `{threshold}` | `0.03`, `0.1` | 入场阈值 |
|
|
2905
|
+
| `{exit_threshold}` | `0.25`, `0.5` | 出场阈值 |
|
|
2906
|
+
|
|
2907
|
+
**说明**: 使用sta1预定义分组的复合策略
|
|
2908
|
+
|
|
2909
|
+
---
|
|
2910
|
+
|
|
2911
|
+
### TPL-1656: macro泛化模板
|
|
2912
|
+
```
|
|
2913
|
+
模板: group_rank(ts_delta(ts_zscore({macro_field}, {d1}), {d2}), country)
|
|
2914
|
+
```
|
|
2915
|
+
| 占位符 | 可选值 | 说明 |
|
|
2916
|
+
|--------|--------|------|
|
|
2917
|
+
| `{macro_field}` | 宏观数据字段 | 宏观数据 |
|
|
2918
|
+
| `{d1}` | `126`, `252` | zscore窗口 |
|
|
2919
|
+
| `{d2}` | `5`, `22` | delta窗口 |
|
|
2920
|
+
|
|
2921
|
+
**说明**: 基于Labs分析macro的泛化模板
|
|
2922
|
+
|
|
2923
|
+
---
|
|
2924
|
+
|
|
2925
|
+
### TPL-1657: ASI broker模板
|
|
2926
|
+
```
|
|
2927
|
+
模板:
|
|
2928
|
+
signal = group_rank(ts_rank({broker_field}, {d}), market);
|
|
2929
|
+
trade_when(volume > adv20, signal, -1)
|
|
2930
|
+
```
|
|
2931
|
+
| 占位符 | 可选值 | 说明 |
|
|
2932
|
+
|--------|--------|------|
|
|
2933
|
+
| `{broker_field}` | broker数据字段 | 券商数据 |
|
|
2934
|
+
| `{d}` | `22`, `66` | 排名窗口 |
|
|
2935
|
+
|
|
2936
|
+
**说明**: ASI区域broker因子,需设置max_trade=ON
|
|
2937
|
+
|
|
2938
|
+
---
|
|
2939
|
+
|
|
2940
|
+
### TPL-1658: Earnings超预期模板
|
|
2941
|
+
```
|
|
2942
|
+
模板:
|
|
2943
|
+
surprise = (actual_eps - est_eps) / abs(est_eps);
|
|
2944
|
+
group_rank(ts_zscore(surprise, {d}), industry)
|
|
2945
|
+
```
|
|
2946
|
+
| 占位符 | 可选值 | 说明 |
|
|
2947
|
+
|--------|--------|------|
|
|
2948
|
+
| `{d}` | `66`, `126` | zscore窗口 |
|
|
2949
|
+
|
|
2950
|
+
**说明**: 盈利超预期因子
|
|
2951
|
+
|
|
2952
|
+
---
|
|
2953
|
+
|
|
2954
|
+
### TPL-1659: CCI技术指标模板
|
|
2955
|
+
```
|
|
2956
|
+
模板:
|
|
2957
|
+
tp = (high + low + close) / 3;
|
|
2958
|
+
cci = (tp - ts_mean(tp, {d})) / (0.015 * ts_mean(abs(tp - ts_mean(tp, {d})), {d}));
|
|
2959
|
+
group_rank(-cci, {group})
|
|
2960
|
+
```
|
|
2961
|
+
| 占位符 | 可选值 | 说明 |
|
|
2962
|
+
|--------|--------|------|
|
|
2963
|
+
| `{d}` | `14`, `20` | CCI窗口 |
|
|
2964
|
+
| `{group}` | `sector`, `industry` | 分组 |
|
|
2965
|
+
|
|
2966
|
+
**说明**: 商品通道指数(CCI)反转策略
|
|
2967
|
+
|
|
2968
|
+
---
|
|
2969
|
+
|
|
2970
|
+
### TPL-1660: 0.618黄金比例幂变换模板
|
|
2971
|
+
```
|
|
2972
|
+
模板:
|
|
2973
|
+
power_signal = signed_power({field}, 0.618);
|
|
2974
|
+
group_rank(ts_zscore(power_signal, {d}), {group})
|
|
2975
|
+
```
|
|
2976
|
+
| 占位符 | 可选值 | 说明 |
|
|
2977
|
+
|--------|--------|------|
|
|
2978
|
+
| `{field}` | 任意MATRIX字段 | 数据字段 |
|
|
2979
|
+
| `{d}` | `66`, `126` | zscore窗口 |
|
|
2980
|
+
| `{group}` | `sector`, `industry` | 分组 |
|
|
2981
|
+
|
|
2982
|
+
**说明**: 使用黄金比例0.618进行幂次变换
|
|
2983
|
+
|
|
2984
|
+
---
|
|
2985
|
+
|
|
2986
|
+
## 附录A:标准时间窗口
|
|
2987
|
+
|
|
2988
|
+
| 窗口代号 | 天数 | 含义 |
|
|
2989
|
+
|---------|------|------|
|
|
2990
|
+
| `d_week` | 5 | 一周 |
|
|
2991
|
+
| `d_month` | 22 | 一月 |
|
|
2992
|
+
| `d_quarter` | 66 | 一季度 |
|
|
2993
|
+
| `d_half` | 126 | 半年 |
|
|
2994
|
+
| `d_year` | 252 | 一年 |
|
|
2995
|
+
| `d_2year` | 504 | 两年 |
|
|
2996
|
+
|
|
2997
|
+
**使用规则**:
|
|
2998
|
+
- 反转因子: 短窗口 `{3, 5, 22}`
|
|
2999
|
+
- 动量因子: 中窗口 `{22, 66}`
|
|
3000
|
+
- 长期趋势: 长窗口 `{126, 252, 504}`
|
|
3001
|
+
- 回归/波动: 超长窗口 `{250, 500, 750}`
|
|
3002
|
+
|
|
3003
|
+
---
|
|
3004
|
+
|
|
3005
|
+
## 附录B:常用操作符分类
|
|
3006
|
+
|
|
3007
|
+
### 时序操作符 `<ts_op/>`
|
|
3008
|
+
| 操作符 | 用途 |
|
|
3009
|
+
|--------|------|
|
|
3010
|
+
| `ts_mean` | 移动平均 |
|
|
3011
|
+
| `ts_rank` | 时序排名 |
|
|
3012
|
+
| `ts_delta` | 差分 |
|
|
3013
|
+
| `ts_std_dev` | 移动标准差 |
|
|
3014
|
+
| `ts_ir` | 信息比率 |
|
|
3015
|
+
| `ts_zscore` | 时序Z-score |
|
|
3016
|
+
| `ts_corr` | 滚动相关性 |
|
|
3017
|
+
| `ts_regression` | 滚动回归 |
|
|
3018
|
+
| `ts_decay_linear` | 线性衰减 |
|
|
3019
|
+
| `ts_decay_exp_window` | 指数衰减 |
|
|
3020
|
+
| `ts_sum` | 滚动求和 |
|
|
3021
|
+
| `ts_backfill` | 数据回填 |
|
|
3022
|
+
| `ts_arg_min` | 最小值位置 |
|
|
3023
|
+
| `ts_arg_max` | 最大值位置 |
|
|
3024
|
+
| `ts_max` | 滚动最大值 |
|
|
3025
|
+
| `ts_min` | 滚动最小值 |
|
|
3026
|
+
| `ts_delay` | 延迟 |
|
|
3027
|
+
| `ts_moment` | k阶中心矩 |
|
|
3028
|
+
| `ts_co_skewness` | 协偏度 |
|
|
3029
|
+
| `ts_co_kurtosis` | 协峰度 |
|
|
3030
|
+
| `ts_partial_corr` | 偏相关 |
|
|
3031
|
+
| `ts_triple_corr` | 三元相关 |
|
|
3032
|
+
| `ts_theilsen` | Theil-Sen回归 |
|
|
3033
|
+
| `ts_poly_regression` | 多项式回归残差 |
|
|
3034
|
+
| `ts_vector_neut` | 向量中性化 |
|
|
3035
|
+
| `ts_weighted_decay` | 加权衰减 |
|
|
3036
|
+
| `ts_min_max_cps` | 最小最大压缩 |
|
|
3037
|
+
| `ts_max_diff` | 与最大值差 |
|
|
3038
|
+
| `ts_av_diff` | 与均值差 |
|
|
3039
|
+
| `ts_quantile` | 分位数 |
|
|
3040
|
+
| `ts_percentage` | 百分位 |
|
|
3041
|
+
| `ts_median` | 中位数 |
|
|
3042
|
+
| `ts_product` | 累积乘积 |
|
|
3043
|
+
| `ts_count_nans` | NaN计数 |
|
|
3044
|
+
| `ts_scale` | 时序缩放 |
|
|
3045
|
+
| `ts_target_tvr_hump` | 目标换手率Hump |
|
|
3046
|
+
| `ts_target_tvr_delta_limit` | Delta换手率限制 |
|
|
3047
|
+
|
|
3048
|
+
### 分组操作符 `<group_op/>`
|
|
3049
|
+
| 操作符 | 用途 |
|
|
3050
|
+
|--------|------|
|
|
3051
|
+
| `group_rank` | 分组排名 |
|
|
3052
|
+
| `group_neutralize` | 分组中性化 |
|
|
3053
|
+
| `group_zscore` | 分组Z-score |
|
|
3054
|
+
| `group_mean` | 分组均值 |
|
|
3055
|
+
| `group_sum` | 分组求和 |
|
|
3056
|
+
| `group_extra` | 分组提取/填补 |
|
|
3057
|
+
| `group_backfill` | 分组回填 |
|
|
3058
|
+
| `group_normalize` | 分组归一化 |
|
|
3059
|
+
| `group_vector_neut` | 分组向量中性化 |
|
|
3060
|
+
| `group_vector_proj` | 分组向量投影 |
|
|
3061
|
+
| `group_count` | 分组计数 |
|
|
3062
|
+
| `group_std_dev` | 分组标准差 |
|
|
3063
|
+
|
|
3064
|
+
### 向量操作符 `<vec_op/>`
|
|
3065
|
+
| 操作符 | 用途 |
|
|
3066
|
+
|--------|------|
|
|
3067
|
+
| `vec_avg` | 向量平均 |
|
|
3068
|
+
| `vec_sum` | 向量求和 |
|
|
3069
|
+
| `vec_max` | 向量最大 |
|
|
3070
|
+
| `vec_min` | 向量最小 |
|
|
3071
|
+
| `vec_stddev` | 向量标准差 |
|
|
3072
|
+
| `vec_count` | 向量计数 |
|
|
3073
|
+
| `vec_norm` | 向量归一化 |
|
|
3074
|
+
| `vec_zscore` | 向量Z-score |
|
|
3075
|
+
| `vec_range` | 向量范围 |
|
|
3076
|
+
|
|
3077
|
+
### 事件/时间操作符
|
|
3078
|
+
| 操作符 | 用途 |
|
|
3079
|
+
|--------|------|
|
|
3080
|
+
| `days_from_last_change` | 距离上次变化天数 |
|
|
3081
|
+
| `last_diff_value` | 最近不同值 |
|
|
3082
|
+
| `ts_step` | 时间步长 |
|
|
3083
|
+
|
|
3084
|
+
### 信号处理操作符
|
|
3085
|
+
| 操作符 | 用途 |
|
|
3086
|
+
|--------|------|
|
|
3087
|
+
| `signed_power` | 带符号幂变换 |
|
|
3088
|
+
| `clamp` | 边界限制 |
|
|
3089
|
+
| `left_tail` | 左尾截断 |
|
|
3090
|
+
| `right_tail` | 右尾截断 |
|
|
3091
|
+
| `fraction` | 分数映射 |
|
|
3092
|
+
| `nan_out` | NaN外推 |
|
|
3093
|
+
| `purify` | 数据清洗 |
|
|
3094
|
+
| `keep` | 条件保留 |
|
|
3095
|
+
| `scale_down` | 缩放降维 |
|
|
3096
|
+
| `hump` | Hump平滑 |
|
|
3097
|
+
| `hump_decay` | Hump衰减 |
|
|
3098
|
+
|
|
3099
|
+
### 其他常用操作符
|
|
3100
|
+
| 操作符 | 用途 |
|
|
3101
|
+
|--------|------|
|
|
3102
|
+
| `rank` | 截面排名 |
|
|
3103
|
+
| `zscore` | 截面Z-score |
|
|
3104
|
+
| `sigmoid` | Sigmoid归一化 |
|
|
3105
|
+
| `winsorize` | 极端值截断 |
|
|
3106
|
+
| `truncate` | 截断 |
|
|
3107
|
+
| `tail` | 尾部处理 |
|
|
3108
|
+
| `scale` | 缩放 |
|
|
3109
|
+
| `filter` | 过滤 |
|
|
3110
|
+
| `densify` | 稠密化 |
|
|
3111
|
+
| `bucket` | 分桶 |
|
|
3112
|
+
| `log` | 对数 |
|
|
3113
|
+
| `abs` | 绝对值 |
|
|
3114
|
+
| `if_else` | 条件判断 |
|
|
3115
|
+
| `trade_when` | 条件交易 |
|
|
3116
|
+
| `regression_neut` | 回归中性化 |
|
|
3117
|
+
| `regression_proj` | 回归投影 |
|
|
3118
|
+
| `is_nan` | NaN检测 |
|
|
3119
|
+
| `is_not_nan` | 非NaN检测 |
|
|
3120
|
+
| `inst_pnl` | 单标的PnL |
|
|
3121
|
+
| `convert` | 单位转换 |
|
|
3122
|
+
| `pasteurize` | 去无效值 |
|
|
3123
|
+
|
|
3124
|
+
---
|
|
3125
|
+
|
|
3126
|
+
## 附录C:数据字段分类
|
|
3127
|
+
|
|
3128
|
+
### 量价类 `<pv_field/>`
|
|
3129
|
+
```
|
|
3130
|
+
close, open, high, low, vwap
|
|
3131
|
+
returns, volume, adv20, sharesout, cap
|
|
3132
|
+
```
|
|
3133
|
+
|
|
3134
|
+
### 基本面类 `<fundamental_field/>`
|
|
3135
|
+
```
|
|
3136
|
+
assets, sales, ebitda, net_income, eps, operating_income
|
|
3137
|
+
goodwill, debt, cash, equity, gross_profit
|
|
3138
|
+
fnd6_*, fnd72_*, mdl175_*, mdl163_*
|
|
3139
|
+
debt_to_equity, roe, roa
|
|
3140
|
+
```
|
|
3141
|
+
|
|
3142
|
+
### 分析师类 `<analyst_field/>` (VECTOR)
|
|
3143
|
+
```
|
|
3144
|
+
anl4_eps_mean, anl4_eps_low, anl4_eps_high
|
|
3145
|
+
anl4_revenue_mean, anl4_fcf_value, anl4_netprofit_mean
|
|
3146
|
+
anl4_adjusted_netincome_ft, anl4_bvps_flag
|
|
3147
|
+
oth41_s_west_*, analyst_*
|
|
3148
|
+
```
|
|
3149
|
+
|
|
3150
|
+
### 情绪类 `<sentiment_field/>`
|
|
3151
|
+
```
|
|
3152
|
+
scl12_sentiment, scl12_buzz, scl12_alltype_buzzvec
|
|
3153
|
+
snt_value, snt_buzz, snt_buzz_ret, snt_buzz_bfl
|
|
3154
|
+
nws18_relevance, nws18_ber
|
|
3155
|
+
nws12_prez_result2, nws12_prez_short_interest
|
|
3156
|
+
mws85_sentiment, mws46_mcv
|
|
3157
|
+
```
|
|
3158
|
+
|
|
3159
|
+
### 期权类 `<option_field/>`
|
|
3160
|
+
```
|
|
3161
|
+
option8_*, option14_*
|
|
3162
|
+
implied_volatility_call_120, implied_volatility_call_270
|
|
3163
|
+
parkinson_volatility_120, parkinson_volatility_270
|
|
3164
|
+
pcr_vol_10, pcr_vol_30
|
|
3165
|
+
put_delta, call_delta, put_gamma, call_gamma
|
|
3166
|
+
put_theta, call_theta, put_vega, call_vega
|
|
3167
|
+
call_breakeven_10, put_breakeven_10
|
|
3168
|
+
```
|
|
3169
|
+
|
|
3170
|
+
### 模型类 `<model_field/>`
|
|
3171
|
+
```
|
|
3172
|
+
mdl175_01dtsv, mdl175_01icc
|
|
3173
|
+
mdl163_*, mdl*
|
|
3174
|
+
```
|
|
3175
|
+
|
|
3176
|
+
### 分组类 `<group/>`
|
|
3177
|
+
```
|
|
3178
|
+
industry, sector, subindustry
|
|
3179
|
+
market, country, exchange
|
|
3180
|
+
sta1_top3000c20, sta1_*
|
|
3181
|
+
pv13_*, pv27_*
|
|
3182
|
+
```
|