cnhkmcp 2.1.2__py3-none-any.whl → 2.1.4__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.
Files changed (101) hide show
  1. cnhkmcp/__init__.py +126 -125
  2. 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 +1 -1
  3. 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 +4 -0
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
  21. 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
  22. 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
  23. 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
  24. 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
  25. 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
  26. 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
  27. 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
  28. 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
  29. 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
  30. 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
  31. 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
  32. 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
  33. 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
  34. 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
  35. 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
  36. 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
  37. 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
  38. 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
  39. 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
  40. 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
  41. 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
  42. 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
  43. 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
  44. 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
  45. 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
  46. 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
  47. 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
  48. 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
  49. 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
  50. 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
  51. 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
  52. 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
  53. 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
  54. 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
  55. 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
  56. 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
  57. 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
  58. 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
  59. 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
  60. 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
  61. 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
  62. 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
  63. 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
  64. 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
  65. 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
  66. 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
  67. 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
  68. 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
  69. 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
  70. 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
  71. 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
  72. 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
  73. 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
  74. 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
  75. 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
  76. 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
  77. 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
  78. 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
  79. 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
  80. 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
  81. cnhkmcp/untracked/APP/Tranformer/Transformer.py +5 -1
  82. cnhkmcp/untracked/APP/Tranformer/ace_lib.py +4 -0
  83. cnhkmcp/untracked/APP/Tranformer/output/Alpha_candidates.json +6008 -1242
  84. cnhkmcp/untracked/APP/Tranformer/output/Alpha_generated_expressions_error.json +1 -1034
  85. cnhkmcp/untracked/APP/Tranformer/output/Alpha_generated_expressions_success.json +47310 -442
  86. cnhkmcp/untracked/APP/ace_lib.py +4 -0
  87. cnhkmcp/untracked/APP/give_me_idea/ace_lib.py +4 -0
  88. cnhkmcp/untracked/APP/hkSimulator/ace_lib.py +4 -0
  89. cnhkmcp/untracked/APP/simulator/wqb20260107015647.log +57 -0
  90. 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 +4 -0
  91. 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 +2 -2
  92. 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 +4 -0
  93. cnhkmcp/untracked/__init__.py +0 -0
  94. 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 +352 -166
  95. {cnhkmcp-2.1.2.dist-info → cnhkmcp-2.1.4.dist-info}/METADATA +1 -1
  96. cnhkmcp-2.1.4.dist-info/RECORD +190 -0
  97. cnhkmcp-2.1.2.dist-info/RECORD +0 -111
  98. {cnhkmcp-2.1.2.dist-info → cnhkmcp-2.1.4.dist-info}/WHEEL +0 -0
  99. {cnhkmcp-2.1.2.dist-info → cnhkmcp-2.1.4.dist-info}/entry_points.txt +0 -0
  100. {cnhkmcp-2.1.2.dist-info → cnhkmcp-2.1.4.dist-info}/licenses/LICENSE +0 -0
  101. {cnhkmcp-2.1.2.dist-info → cnhkmcp-2.1.4.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,53 @@
1
+ {
2
+ "id": "neut-users",
3
+ "title": "Double Neutralization",
4
+ "lastModified": "2025-10-30T01:42:01.001138-04:00",
5
+ "content": [
6
+ {
7
+ "type": "TEXT",
8
+ "value": "<p></p><p>You can apply simultaneous neutralizations by two different groups, such as country and industry with the help of \"group_cartesian_product\", in regions with many countries like EUR, ASI, and GLB. Double neutralization neutralizes Alphas within a group of stocks that share the same 'country' and 'industry' identifiers. In the USA, we can use other pairs, such as combinations from industry/subindustry/sector and another group (for example, sector, sta1_top1000c50).</p><p>If you use two \"group_neutralize\" operators sequentially, such as <b>group_neutralize(group_neutralize(Alpha, industry), country)</b>, the second neutralization partially negates the first one. The double neutralization approach differs from using two group_neutralize operators.</p>",
9
+ "id": "95371775-cc81-49e7-8c1f-015f193cf1ca"
10
+ },
11
+ {
12
+ "type": "HEADING",
13
+ "value": {
14
+ "level": "2",
15
+ "content": "ASI Example: Double neutralization by industry and country"
16
+ },
17
+ "id": "4a67c626-196e-426a-b96d-47035f75edec"
18
+ },
19
+ {
20
+ "type": "TEXT",
21
+ "value": "<p><b>Original Alpha:</b> ts_rank(eps, 252)</p><p><i>Set Neutralization=Sector:</i> In settings, set Universe=MINVOL1M</p><p></p><p><b>Double Neutralization Alpha:</b></p><p>alpha = ts_rank(eps, 252) group = densify(group_cartesian_product(industry, country)) group_neutralize(alpha, group)</p><p>Line 2 uses group_cartesian_product to merge industry and country into a new group. This ensures unique values for each pair of industry and country</p>",
22
+ "id": "a1a5eb24-c8bc-4f9f-82f5-c0b8eee2155a"
23
+ },
24
+ {
25
+ "type": "HEADING",
26
+ "value": {
27
+ "level": "2",
28
+ "content": "USA Example: Double neutralization by sector and other grouping"
29
+ },
30
+ "id": "d268a5f3-af5b-456c-9b38-489e48a0177e"
31
+ },
32
+ {
33
+ "type": "TEXT",
34
+ "value": "<p></p><p><b>Original Alpha:</b> group_rank(ts_rank(eps, 252), sector)</p><p><i>Set Neutralization=Sector:</i> In settings, set Universe=TOP1000</p><p></p><p><b>Double Neutralization Alpha:</b></p><p>group = group_cartesian_product(sector, sta1_top1000c50) alpha = group_rank(ts_rank(eps, 252), group) group_neutralize(alpha, group)</p><p>Line 1 uses group_cartesian_product to merge sta1_top1000c50 with the sector grouping. This ensures that all group operators in the Alpha consider both sector and statistical grouping.</p>",
35
+ "id": "674abc80-69e8-45f2-a6f7-3f74bd1bd462"
36
+ },
37
+ {
38
+ "type": "HEADING",
39
+ "value": {
40
+ "level": "2",
41
+ "content": "Tips for Success"
42
+ },
43
+ "id": "5d7a238e-68f1-4320-902a-ff78f3cf87a3"
44
+ },
45
+ {
46
+ "type": "TEXT",
47
+ "value": "<ul><li>Using basic grouping fields in 'double neutralization' for the multi-country region can improve an Alpha’s simulated performance.</li><li>Try using other grouping datasets for 'double neutralization' in the USA/EUR/ASI regions to improve an Alpha’s simulated performance</li></ul>",
48
+ "id": "1cb3b26a-64f7-47f3-95d9-11d0ca4ca04d"
49
+ }
50
+ ],
51
+ "sequence": 4,
52
+ "category": "Advanced Topics"
53
+ }
@@ -0,0 +1,304 @@
1
+ {
2
+ "id": "fast-d1-documentation",
3
+ "title": "Fast D1 Documentation",
4
+ "lastModified": "2025-11-28T08:19:56.060639-05:00",
5
+ "content": [
6
+ {
7
+ "type": "HEADING",
8
+ "value": {
9
+ "level": "1",
10
+ "content": "What is Fast D1?"
11
+ },
12
+ "id": "f80455af-a9a8-4697-bfa5-c53ac46a9e7c"
13
+ },
14
+ {
15
+ "type": "TEXT",
16
+ "value": "<p>Fast D1 is a framework for developing Alphas that use data available between day 0 (D0) and day 1 (D1). By leveraging the most current overnight information - such as news, earnings announcements, analyst updates, and pre-market activity - Fast D1 Alphas can capture predictive signals that deliver superior performance compared to regular D1 models.</p><p><b>Key Advantage:</b> Access to real-time overnight catalysts that traditional D1 Alphas miss.</p>",
17
+ "id": "e2918577-91c8-4cd8-a647-1a7a55397ec2"
18
+ },
19
+ {
20
+ "type": "HEADING",
21
+ "value": {
22
+ "level": "1",
23
+ "content": "How Fast D1 Works"
24
+ },
25
+ "id": "1a7df2bd-98e5-48fc-95ca-1d145c2b53e3"
26
+ },
27
+ {
28
+ "type": "TEXT",
29
+ "value": "<p></p><p><b>Data Timing Comparison</b></p><p>Understanding the critical difference in data availability:</p>",
30
+ "id": "c497324e-3595-42fb-855b-324683ae2d4a"
31
+ },
32
+ {
33
+ "type": "TABLE",
34
+ "value": {
35
+ "data": [
36
+ [
37
+ "Delay",
38
+ "Field Type",
39
+ "Data Timestamp",
40
+ "Information Captured"
41
+ ],
42
+ [
43
+ "1",
44
+ "snt_buzz",
45
+ "Yesterday's market close",
46
+ " Yesterday’s End-of-day data only"
47
+ ],
48
+ [
49
+ "1",
50
+ "snt_buzz_fast_d1",
51
+ "Today's market open",
52
+ "Overnight news, events, pre-market moves"
53
+ ],
54
+ [
55
+ "0",
56
+ "snt_buzz",
57
+ "30 minutes before today's close",
58
+ "Close to end of today – harder to execute"
59
+ ]
60
+ ],
61
+ "firstRowIsTableHeader": true,
62
+ "firstColIsHeader": false
63
+ },
64
+ "id": "99b42702-3ca2-4735-8d23-9e85bf39d70d"
65
+ },
66
+ {
67
+ "type": "TEXT",
68
+ "value": "<p></p><p><b>Fast D1 captures the overnight information gap that drives market movements at the open</b></p>",
69
+ "id": "3981c3b6-416d-4344-ad4a-c2c5d209522a"
70
+ },
71
+ {
72
+ "type": "HEADING",
73
+ "value": {
74
+ "level": "1",
75
+ "content": "Implementation Guide"
76
+ },
77
+ "id": "5179fc99-c4f5-4ac2-beed-ffaede40eb00"
78
+ },
79
+ {
80
+ "type": "HEADING",
81
+ "value": {
82
+ "level": "2",
83
+ "content": "How to Simulate Fast D1 Alphas"
84
+ },
85
+ "id": "5b5a1ac1-0d20-49f6-a5b4-8529d327ce75"
86
+ },
87
+ {
88
+ "type": "TEXT",
89
+ "value": "<p></p><p><b>Simple 2-Step Process:</b></p><ol><li><b>Select Delay-1</b> in simulation settings</li><li><b>Use fields with _fast_d1 suffix</b></li></ol><p><b>Important Notes</b></p><p>✅ <b>Every Fast D1 field has a regular D1 equivalent</b> (just without the <b>_fast_d1</b> suffix)<br/> ✅ <b>No separate delay dropdown</b> for Fast D1-it's the same Delay-1 setting<br/> ✅ <b>Currently available only in the USA region</b><br/> ✅ <b>Same submission criteria</b> as regular D1 alphas</p><p></p><p><b>Example Field Naming Convention</b></p><p>Regular D1 Field: snt_buzz</p><p>Fast D1 Field: snt_buzz_fast_d1</p>",
90
+ "id": "42245f88-267b-401a-a1fa-3c9a344967dd"
91
+ },
92
+ {
93
+ "type": "TABLE",
94
+ "value": {
95
+ "data": [
96
+ [
97
+ "Dataset Id ",
98
+ "Dataset Category",
99
+ "Field Count"
100
+ ],
101
+ [
102
+ "fundamental3",
103
+ "fundamental",
104
+ "393"
105
+ ],
106
+ [
107
+ "news21",
108
+ "news",
109
+ "83"
110
+ ],
111
+ [
112
+ "option24",
113
+ "option",
114
+ "82"
115
+ ],
116
+ [
117
+ "other696",
118
+ "other",
119
+ "66"
120
+ ],
121
+ [
122
+ "earningscall_sentiment",
123
+ "other",
124
+ "59"
125
+ ],
126
+ [
127
+ "model240",
128
+ "model",
129
+ "52"
130
+ ],
131
+ [
132
+ "model216",
133
+ "model",
134
+ "45"
135
+ ],
136
+ [
137
+ "model136",
138
+ "model",
139
+ "45"
140
+ ],
141
+ [
142
+ "other384",
143
+ "other",
144
+ "33"
145
+ ],
146
+ [
147
+ "news46",
148
+ "news",
149
+ "30"
150
+ ],
151
+ [
152
+ "earnings7",
153
+ "earnings",
154
+ "20"
155
+ ],
156
+ [
157
+ "other296",
158
+ "other",
159
+ "19"
160
+ ],
161
+ [
162
+ "news7",
163
+ "news",
164
+ "19"
165
+ ],
166
+ [
167
+ "other492",
168
+ "other",
169
+ "15"
170
+ ],
171
+ [
172
+ "news36",
173
+ "news",
174
+ "14"
175
+ ],
176
+ [
177
+ "broker24",
178
+ "broker",
179
+ "13"
180
+ ],
181
+ [
182
+ "search_interest",
183
+ "other",
184
+ "12"
185
+ ],
186
+ [
187
+ "news104",
188
+ "news",
189
+ "11"
190
+ ],
191
+ [
192
+ "news13",
193
+ "news",
194
+ "8"
195
+ ],
196
+ [
197
+ "fundamental110",
198
+ "fundamental",
199
+ "7"
200
+ ],
201
+ [
202
+ "earnings1",
203
+ "earnings",
204
+ "6"
205
+ ],
206
+ [
207
+ "socialmedia12",
208
+ "socialmedia",
209
+ "6"
210
+ ],
211
+ [
212
+ "pv90",
213
+ "pv",
214
+ "4"
215
+ ],
216
+ [
217
+ "news59",
218
+ "news",
219
+ "2"
220
+ ],
221
+ [
222
+ "news35",
223
+ "news",
224
+ "2"
225
+ ],
226
+ [
227
+ "shortinterest30",
228
+ "shortinterest",
229
+ "2"
230
+ ],
231
+ [
232
+ "other10",
233
+ "other",
234
+ "1"
235
+ ],
236
+ [
237
+ "",
238
+ "Total",
239
+ "1049"
240
+ ]
241
+ ],
242
+ "firstRowIsTableHeader": true,
243
+ "firstColIsHeader": false
244
+ },
245
+ "id": "8cb53772-5691-4ee3-8151-d33dcb4e0b3f"
246
+ },
247
+ {
248
+ "type": "TEXT",
249
+ "value": "<p></p><p>Additionally, you must use the datafield ‘<i>pv98_vwap_15m_delay_minus_1_returns_fast_d1</i>’ for using returns value and ‘<i>usa_vwap_15m_delay_minus_1_fast_d1’</i> for using the price of the stock at the FastD1 cutoff time.</p><p>You can search for the above datasets on Data Explorer and find such fields.</p><p>Besides, since all fields in Fast D1 have a suffix of ‘_fast_d1’ it would be easier to filter such fields using the Brain API using Python</p>",
250
+ "id": "32d262ad-9d81-4bf4-a154-d153f3b0a614"
251
+ },
252
+ {
253
+ "type": "HEADING",
254
+ "value": {
255
+ "level": "1",
256
+ "content": "Best Practices & Technical Considerations"
257
+ },
258
+ "id": "63a64934-300d-4149-b77c-90abb37de0cf"
259
+ },
260
+ {
261
+ "type": "TEXT",
262
+ "value": "<ul><li>Almost 50% of the Fast D1 fields available for use are vector datafields. So make sure to use appropriate vector operators for such fields to prevent errors during simulation.</li><li>Try using the winsorize operator or other outlier removal techniques incase you face weight concentration errors.</li></ul>",
263
+ "id": "2ce4f30d-f1ab-4adb-ac1d-c4d583e8af28"
264
+ },
265
+ {
266
+ "type": "HEADING",
267
+ "value": {
268
+ "level": "1",
269
+ "content": "Submission Guidelines"
270
+ },
271
+ "id": "942657d3-4a3f-486e-bc4f-230e70be576a"
272
+ },
273
+ {
274
+ "type": "TEXT",
275
+ "value": "<p></p><p><b>✅ Mandatory Performance Check</b></p><p><b>Submit Fast D1 Alphas ONLY if they outperform their D1 equivalents</b></p><p>Example:</p><p>Alpha A: Using snt_buzz_fast_d1 → Sharpe 2.8, Turnover 33%</p><p>Alpha B: Using snt_buzz (regular D1) → Sharpe 2.6, Turnover 30%</p><p>✓ Submit Alpha A only if performance is superior</p><p><b>Production Correlation</b></p><ul><li><b>Same correlation pool</b> as regular D1 alphas</li><li><b>Approach:</b> Using delta (<b>field_fast_d1 - field</b>) may help reduce production correlation</li></ul>",
276
+ "id": "ce39150a-446a-4978-a591-29434e04d39e"
277
+ },
278
+ {
279
+ "type": "HEADING",
280
+ "value": {
281
+ "level": "1",
282
+ "content": "Research Directions & Alpha Development"
283
+ },
284
+ "id": "e2196a6d-4ded-40f0-9608-09d0887bc4c2"
285
+ },
286
+ {
287
+ "type": "TEXT",
288
+ "value": "<p></p><p><b>🚀 Priority 1: Overnight Information Capture</b></p><p>Focus on datasets that provide unique overnight insights:</p><p><b>High Priority:</b></p><ul><li><b>News datasets</b> (news21, news46, news7, news36, news104)</li><li><b>Options activity</b> (option24)</li><li><b>Social media sentiment</b> (socialmedia12)</li><li><b>Earnings data</b> (earnings7, earnings1, earningscall_sentiment)</li><li><b>Short interest changes</b> (shortinterest30)</li></ul><p><b>💡 Priority 2: Delta/Change-Based Alphas</b></p><p>Capture the <b>overnight information change</b>:</p><p><i># Example: Overnight social media sentiment shift</i> : Change in snt_buzz_fast_d1 compared to snt_buzz</p><p><b>🎯 Priority 3: Event-Driven Models</b></p><p>Target specific overnight catalysts:</p><ul><li>Earnings announcements</li><li>Analyst upgrades/downgrades</li><li>News events</li><li>Pre-market price/returns discovery</li><li>Short interest information<br/></li></ul><p><b>Note: You can submit high turnover Alphas (~30%) on those Alphas that capture short lived overnight dislocations. However, ensure that you maintain a Minimum Margin &gt; 4bps in these Alphas</b></p>",
289
+ "id": "a1f6bb2f-f1e0-44a6-af1f-31a9615cb1fb"
290
+ },
291
+ {
292
+ "type": "TEXT",
293
+ "value": "<p><b>Quick Start Checklist</b></p><ul><li>Set simulation to <b>Delay-1</b></li><li>Select fields with <b>_fast_d1</b> suffix</li><li>Use <b>vector operators</b> for vector fields</li><li>Use special <b>returns and price fields</b></li><li>Apply <b>winsorize</b> if needed</li><li><b>Compare performance</b> with regular D1 version</li><li>Verify <b>margin &gt; 4 bps</b></li><li>Test for <b>production correlation</b></li><li>Submit only if <b>Fast D1 version outperforms D1 – an exception to this is if you create Alphas using delta between Fast D1 field and D1 field as then you do not have comparable D1 performance.</b></li></ul>",
294
+ "id": "4f2f3116-7f7d-4f83-950c-b7d87a1266d2"
295
+ },
296
+ {
297
+ "type": "TEXT",
298
+ "value": "<p><b>Key Takeaways</b></p><p>✨ <b>Fast D1 captures the overnight edge</b> that traditional D1 misses<br/> ✨ <b>Focus on news, options, social media, and earnings</b> datasets<br/> ✨ <b>Use delta approaches</b> (fast_d1 - regular) for unique signals<br/> ✨ <b>Submit only superior performers</b> compared to D1 equivalents<br/> ✨ <b>Target high-quality signals</b> with margin &gt; 4 bps</p>",
299
+ "id": "1016ae0c-f08e-4c44-9d68-ed37d7551b9b"
300
+ }
301
+ ],
302
+ "sequence": 1222,
303
+ "category": "Advanced Topics"
304
+ }
@@ -0,0 +1,129 @@
1
+ {
2
+ "id": "getting-started-investability-constrained-metrics",
3
+ "title": "Investability Constrained Metrics",
4
+ "lastModified": "2025-11-04T02:32:14.611009-05:00",
5
+ "content": [
6
+ {
7
+ "type": "HEADING",
8
+ "value": {
9
+ "level": "1",
10
+ "content": "Introduction"
11
+ },
12
+ "id": "5f79e957-c978-4ff0-8617-c120319a3c0c"
13
+ },
14
+ {
15
+ "type": "TEXT",
16
+ "value": "<p></p><p>When evaluating Alpha performance, various metrics can be used. One metric of them is Alpha Performance after Investability Constraint.</p><p>Investability Constraints ensure that the positions taken by an Alpha are within the liquidity limits of the instruments. This helps avoid significant market impact, which can negatively affect the Alpha's profitability. An Alpha that performs well under Investability Constraints will potentially have higher capacity and liquidity.</p><p><b>For example:</b></p><p>Consider two Alphas that allocate weights to stock X, scaled to a book size of $20 million:</p>",
17
+ "id": "95afd691-cc93-40ef-acff-c4bae33813c2"
18
+ },
19
+ {
20
+ "type": "TABLE",
21
+ "value": {
22
+ "data": [
23
+ [
24
+ "Alphas",
25
+ "Allocation (million $)",
26
+ "Average Daily Volume of Stock X (million $)"
27
+ ],
28
+ [
29
+ "A",
30
+ "5",
31
+ "50"
32
+ ],
33
+ [
34
+ "B",
35
+ "0.1",
36
+ "50"
37
+ ]
38
+ ],
39
+ "firstRowIsTableHeader": false,
40
+ "firstColIsHeader": true
41
+ },
42
+ "id": "ee911bd7-cea7-4a3c-947d-f9b303bf4104"
43
+ },
44
+ {
45
+ "type": "TEXT",
46
+ "value": "<p>Alpha A's position is harder to change because it represents 10% of the average daily volume (ADV) of stock X. In contrast, Alpha B's position has more room for adjustment. This difference can have a significant impact when considering thousands of stocks in a universe.</p>",
47
+ "id": "2078e319-efd8-4215-aa2a-a11ddec4f92c"
48
+ },
49
+ {
50
+ "type": "HEADING",
51
+ "value": {
52
+ "level": "1",
53
+ "content": "Where to find the metrics"
54
+ },
55
+ "id": "fb45a1cb-057d-4f37-82b6-8abbbd5b7063"
56
+ },
57
+ {
58
+ "type": "TEXT",
59
+ "value": "<p></p><p>You can find the Investability Constrained Metrics on the new simulation results page. The page displays the Alpha's PnL under Investability Constraint conditions.</p>",
60
+ "id": "a78d6064-a1d8-48ed-8a21-5edf2ea3e9cf"
61
+ },
62
+ {
63
+ "type": "IMAGE",
64
+ "value": {
65
+ "title": "Investability _1.png",
66
+ "width": 624,
67
+ "height": 421,
68
+ "fileSize": 51789,
69
+ "url": "https://api.worldquantbrain.com/content/images/ogx8yz2CbMhzIOjee65t2RsQPx8=/380/original/Investability__1.png"
70
+ },
71
+ "id": "624b229d-d446-40fd-932e-40c9119eb147"
72
+ },
73
+ {
74
+ "type": "TEXT",
75
+ "value": "<p></p><p>Additionally, the IS Summary now includes new aggregate data for Alpha performance after applying Investability Constraints.</p>",
76
+ "id": "37ff1cce-1e0d-495e-847d-15166c166085"
77
+ },
78
+ {
79
+ "type": "IMAGE",
80
+ "value": {
81
+ "title": "Investability _2.png",
82
+ "width": 548,
83
+ "height": 560,
84
+ "fileSize": 122374,
85
+ "url": "https://api.worldquantbrain.com/content/images/XeYvX8AWP2zvTcamIhFrpYjkaZ8=/381/original/Investability__2.png"
86
+ },
87
+ "id": "0a9766df-fcdb-4ecf-9625-4c15a5125824"
88
+ },
89
+ {
90
+ "type": "HEADING",
91
+ "value": {
92
+ "level": "1",
93
+ "content": "How to use the metric in your Alpha research"
94
+ },
95
+ "id": "d245b2b3-f73f-460d-9901-bd1c48e4ba2b"
96
+ },
97
+ {
98
+ "type": "TEXT",
99
+ "value": "<p></p><ul><li><b>Performance Consistency</b>: Ensure that Alphas do not lose too much performance under Investability Constraints compared to their base performance. Alphas that have good Investability Constraints Sharpe are likely to have good After-cost Sharpe also which will help improve your Combine Alpha Performance in Genius.</li><li><b>Optimization Metrics</b>: Consultants can leverage Investability Constrained Metrics as a metric to enhance your Alpha optimization process. Here’re some tips to create Alphas which such performance:<ul><li>An Alpha which captures signal in the liquid instruments space of the market may have higher Investability Constrained Performance. This is especially true for cases of medium to high turnover like Alphas in Price Volume, News, Options, etc. category. You should either control the liquidity profile of your signals or lower the turnover of the illiquid part of them. Please checkout some forum post about these technique in the References.</li><li>An Alpha with low turnover in general may be less impacted by these constraint for example Alphas in category Fundamental, Model, … Because it changes position in low frequency, thus its performance relies less on the liquidity of the instruments. Please checkout some forum post about creating low turnover Alphas in the References.</li></ul></li><li><b>Alpha Submissions Selection</b>: Use these metrics as a filter for selecting Alphas, especially in regions like ASI and GLB. Alphas that perform well under these constraints can possibily add significant value and may result in higher value factor and weight factor because they scale better when the booksize increases.</li><li><b>Apply Max Trade Settings to your Alpha</b>: In order to convert your Alphas into Investability Constrained Alphas, you can change the Max Trade option in Simulation Settings to ON. Please read <a href=\"https://platform.worldquantbrain.com/learn/documentation/consultant-information/consultant-features\">this documentation</a> for further information.</li></ul>",
100
+ "id": "22917336-5991-4cd2-ae06-c2f0803d8e52"
101
+ },
102
+ {
103
+ "type": "IMAGE",
104
+ "value": {
105
+ "title": "max_trade_settings.png",
106
+ "width": 624,
107
+ "height": 442,
108
+ "fileSize": 46781,
109
+ "url": "https://api.worldquantbrain.com/content/images/JwWVUWRjohnOUsF0t5joWH7bsVs=/394/original/max_trade_settings.png"
110
+ },
111
+ "id": "a50e28c0-52b4-440a-924d-6811bcffdbcc"
112
+ },
113
+ {
114
+ "type": "HEADING",
115
+ "value": {
116
+ "level": "1",
117
+ "content": "References"
118
+ },
119
+ "id": "2dc25a9e-a837-4ec1-8423-3275f0dc0d69"
120
+ },
121
+ {
122
+ "type": "TEXT",
123
+ "value": "<p></p><p>Research Papers:</p><ul><li><a href=\"https://haas.berkeley.edu/wp-content/uploads/hiddenImpact13.pdf\">The market impact of large trading orders: Correlated order flow, asymmetric liquidity and efficient prices</a></li><li><a href=\"https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2480954\">The Impact of Large Orders in Electronic Markets</a></li></ul><p>BRAIN Forum posts &amp; Articles:</p><ul><li><a href=\"https://support.worldquantbrain.com/hc/en-us/community/posts/29520890528151-Tips-for-Success-in-the-High-Capacity-Alphas-Competition\">Tips for Success in the High Capacity Alphas Competition</a></li><li><a href=\"https://support.worldquantbrain.com/hc/en-us/community/posts/29647491881623-How-to-Improve-After-Cost-Performance\">How to Improve After Cost Performance</a></li><li><a href=\"https://support.worldquantbrain.com/hc/en-us/articles/5972783716887-What-is-liquidity\">What is liquidity?</a></li><li><a href=\"https://support.worldquantbrain.com/hc/en-us/articles/25960264611351-What-s-After-cost-Sharpe-ratio\">What's After cost Sharpe ratio?</a></li><li><a href=\"https://support.worldquantbrain.com/hc/en-us/articles/5973492634903-Can-you-explain-what-decay-is\">Can you explain what decay is?</a></li><li><a href=\"https://support.worldquantbrain.com/hc/en-us/articles/5973359129239-Do-you-recommend-higher-or-lower-Decay\">Do you recommend higher or lower Decay?</a></li></ul>",
124
+ "id": "0345c7aa-ceb3-45df-8c2a-dd6aa9953301"
125
+ }
126
+ ],
127
+ "sequence": 18,
128
+ "category": "Advanced Topics"
129
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "id": "list-must-read-posts-how-improve-your-alphas-are-submitted",
3
+ "title": "Must-read posts: How to improve your Alphas🥉",
4
+ "lastModified": "2025-10-30T01:37:12.590157-04:00",
5
+ "content": [
6
+ {
7
+ "type": "TEXT",
8
+ "value": "<p></p><p>The transition you make from being a user to a consultant is not straightforward since you will work on many open-ended problems in the process of making alphas. There are no right or wrong answers in the alpha-making process since quant research is a mixture of creative and scientific thinking.</p><p>Typically, the alpha research cycle is comprised of 3 stages:</p><ol><li>Coming up with an intuitive alpha idea;</li><li>Implementing it using the available datasets and operators; and</li><li>Optimizing the parameters and neutralization settings of the alpha in order to submit it in its best form.</li></ol><p>While the alpha idea, datasets and operators keep changing, the techniques and methodologies needed to achieve the three remain largely the same. Hence, the following posts are a generic guide for your alpha research journey and will act as solid foundations for you:</p><p><a href=\"https://support.worldquantbrain.com/hc/en-us/community/posts/8123350778391-How-do-you-get-a-higher-Sharpe-\">How to get a higher Sharpe</a></p><p><a href=\"https://support.worldquantbrain.com/hc/en-us/community/posts/8833033953559--BRAIN-TIPS-5-ways-to-potentially-increase-returns-of-an-alpha\">How to potentially increase returns of an alpha</a></p><p><a href=\"https://support.worldquantbrain.com/hc/en-us/community/posts/8046468280727--BRAIN-TIPS-How-do-you-reduce-correlation-of-a-good-alpha-\">How to reduce correlation of an alpha</a></p><p><a href=\"https://support.worldquantbrain.com/hc/en-us/community/posts/8360363631127--BRAIN-TIPS-Using-trade-when-for-Event-Alphas-and-Low-Turnover-Alphas\">How to reduce turnover</a></p><p><a href=\"https://support.worldquantbrain.com/hc/en-us/articles/5969575839127-How-to-smooth-the-PnL-curve-to-minimize-sudden-fluctuations-\">How to potentially decrease PnL fluctuations</a></p><p><a href=\"https://platform.worldquantbrain.com/learn/documentation/advanced-topics/neut-cons\">How to gain intuition for Neutralization</a></p><p><a href=\"https://support.worldquantbrain.com/hc/en-us/community/posts/8209806533015-How-can-you-avoid-overfitting-\">How to avoid overfitting</a></p><p>These readings answer some of the most common problems faced during the process of making alphas. Incorporating the practices suggested above should assist you in your journey with WorldQuant Brain, and may lead to significantly better results in the long run.</p>",
9
+ "id": "ed1e04ec-f144-4621-b3c7-0c6a304a4ad1"
10
+ }
11
+ ],
12
+ "sequence": 1,
13
+ "category": "Advanced Topics"
14
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "id": "neut-cons",
3
+ "title": "Neutralization 🥉",
4
+ "lastModified": "2025-10-30T01:39:54.812033-04:00",
5
+ "content": [
6
+ {
7
+ "type": "TEXT",
8
+ "value": "<p></p><p><b>I. Basic Neutralization:</b></p><p>Neutralization is an operation in which the raw Alpha values are split into groups, and then normalized (the mean is subtracted from each value) within each group. The group can be the entire market, or the groups could be made using other classifications like industry or sub-industry.</p><p>This is done to focus on the relative returns of stocks within the group, and minimize risk exposure to the returns of the group. As a consequence of neutralization, the portfolio is half long, half short, and may guard the portfolio from market or industry shocks.</p><p></p>",
9
+ "id": "143c0e85-88a7-4b8e-89fd-8ec672b55762"
10
+ },
11
+ {
12
+ "type": "TEXT",
13
+ "value": "<iframe width=\"743\" height=\"333\" src=\"https://www.youtube.com/embed/A3RNoYAz_9U?start=193&end=262\" title=\"Long Short Neutrality\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen></iframe>",
14
+ "id": "1c3c06d5-92b5-4fce-8af5-681aebf4ece6"
15
+ },
16
+ {
17
+ "type": "TEXT",
18
+ "value": "<p>For example, while trading, we don't want to bet in the direction of market, in order to minimize \"market risk\". This is done by taking equal long and short positions, i.e. amount invested in long positions is roughly equal to that in short positions. This is called \"market neutralization\". In order to do this in BRAIN platform, we set Neutralization = market (or industry or sub-industry, as desired) in the simulation settings.</p><p>In addition to market neutralization, Sector, industry, and subindustry neutralization are present on BRAIN. Examining the hierarchy on the BRAIN, a sector is a super set of an industry, which in turn is a super set of a subindustry. For example, industrials is a sector that includes the machinery industry, within which the agricultural and farm machinery subindustry resides.</p><p>Suppose we have Alpha = -ts_delta (close, 5), where Alpha is the vector of values. Setting neutralization = market, would make the mean of the Alpha vector equal to zero, i.e. the Alpha vector would undergo the change: Alpha = Alpha - mean(Alpha).</p><p>This new vector is then normalized and scaled to booksize. The portfolio thus formed would contain equal money invested in long and short positions, and can be used to calculate that day's PnL.</p><p>When you simulate an Alpha, the platform automatically performs some operations in Setting on your submission. \"Neutralization in Simulation Settings\" neutralizes your alpha as the last step in the operations. This ensures that your Alpha is long short neutral.</p><p>“Neutralization in Simulation Settings” and ‘group_neutralize(x, group)’ use the same operation.</p><p>When to use group_neutralize: You can use group_neutralize(x, group) when you want to apply neutralization in a more granular fashion on your Alpha with different values of group.</p><p>What settings to use with group_neutralize: If you use `group_neutralize(x, group)` as the last operator, you can set “None” in Neutralization, “0” in Decay and “0” in Truncation in Simulation Settings ( value 0 will disable decay and truncation operators) . You can insert a decay/truncation operator directly in your alpha expression before group_neutralize.</p><p>Are ‘group_neutralize(x, group)’ and “Neutralization in Simulation Settings” interchangeable?</p><p>Yes, for example:</p><p>Suppose we have Alpha = -rank(ebit/capex), where Alpha is the vector of values.</p><p>alpha1 = -zscore(ebit/capex) with industry in Neutralization “0” in Decay and “0” in Truncation in Simulation Settings</p><p>alpha1 = group_neutralize(-zscore(ebit/capex),industry) “None” in Neutralization, “0” in Decay and “0” in Truncation</p><p>Tips:</p><ul><li>Always pick a value for neutralization; only leave it as None if neutralization is manually incorporated in the Alpha.</li><li>Try larger stock groups for more liquid universes that have less number of stocks since we want to have the decent number of stocks in each group</li><li>Try smaller stock groups for illiquid universes</li><li>Use ‘country’ and ‘exchange’ neutralization options for EUR, ASI regions</li></ul><p></p><p><b>Below are some of the recommended neutralization based on the dataset category. We highly recommend you to try these in your research</b></p>",
19
+ "id": "562d31f2-d1dd-4477-a714-1eba3fbe3614"
20
+ },
21
+ {
22
+ "type": "TEXT",
23
+ "value": "<table class='learn__dataset-summary'>\r\n<thead>\r\n<tr align='right'>\r\n<th class='sort-textual'>Dataset</th>\r\n<th class='sort-textual'>Market</th>\r\n<th class='sort-textual'>Sector</th>\r\n<th class='sort-textual'>Industry</th>\r\n<th class='sort-textual'>Subindustry</th>\r\n<th class='sort-textual'>Remarks</th>\r\n</tr>\r\n</thead>\r\n<tr>\r\n<td>Fundamental Datasets</td>\r\n<td></td>\r\n<td></td>\r\n<td>✔️</td>\r\n<td></td>\r\n<td>Fundamentals of a company can affect stock price in a different way depending on the industry, so an industry neutralization is recommended. </td>\r\n</tr>\r\n<tr>\r\n<td>Analysts Datasets</td>\r\n<td></td>\r\n<td></td>\r\n<td>✔️</td>\r\n<td></td>\r\n<td>Analyst datasets provide an estimate of future fundamental data, hence an industry neutralization is recommended here as well</td>\r\n</tr>\r\n<tr>\r\n<td>Model Datasets</td>\r\n<td>✔️</td>\r\n<td>✔️</td>\r\n<td>✔️</td>\r\n<td>✔️</td>\r\n<td>Model datasets can be extremely variable depending on the subcategory of the dataset available. Try experimenting with different neutralization categories based on those subcategories to find the best result. </td>\r\n</tr>\r\n<tr>\r\n<td>News Datasets</td>\r\n<td></td>\r\n<td></td>\r\n<td></td>\r\n<td>✔️</td>\r\n<td>News could have very different impact on different companies, based on their subindustry. Impact of a CEO change can be different for Twitter and Apple Inc even though both are in the broader Tech industry. Hence, try neutralizing for subindustry.</td>\r\n</tr>\r\n<tr>\r\n<td>Option Datasets</td>\r\n<td>✔️</td>\r\n<td>✔️</td>\r\n<td></td>\r\n<td></td>\r\n<td>For Options datasets, we suggest neutralizing for Market or Sector, because the impact of options on a stock price is almost similar across broader industries.</td>\r\n</tr>\r\n<tr>\r\n<td>Price Volume Datasets</td>\r\n<td>✔️</td>\r\n<td>✔️</td>\r\n<td></td>\r\n<td></td>\r\n<td>Generic ideas work well across all instruments, using Industry or Subindustry neutralization could reduce the performance. </td>\r\n</tr>\r\n<tr>\r\n<td>Social Media Datasets</td>\r\n<td></td>\r\n<td></td>\r\n<td>✔️</td>\r\n<td>✔️</td>\r\n<td>Social media impact could have different impact on different companies, based on the subindustry, so try neutralizing at the subindustry level. You can also try neutralizing at the industry level as well depending on how broadly applicable the news is.</td>\r\n</tr>\r\n<tr>\r\n<td>Institutions Datasets</td>\r\n<td></td>\r\n<td>✔️</td>\r\n<td>✔️</td>\r\n<td></td>\r\n<td>Depends on the type of institution datasets available, who provides them, and its implications. Test out neutralizations for Sector or Industry.</td>\r\n</tr>\r\n<tr>\r\n<td>Short Interest Datasets</td>\r\n<td></td>\r\n<td></td>\r\n<td>✔️</td>\r\n<td></td>\r\n<td>Industry neutralization is recommended for Short Interest datasets. Try others as well!</td>\r\n</tr>\r\n<tr>\r\n<td>Insider Datasets</td>\r\n<td></td>\r\n<td></td>\r\n<td>✔️</td>\r\n<td>✔️</td>\r\n<td>Insider news will not necessarily affect each company in a similar way, since it is based on the industry or subindustry. Hence, neutralize for those categories with these datasets. </td>\r\n</tr>\r\n<tr>\r\n<td>Sentiment Datasets</td>\r\n<td></td>\r\n<td></td>\r\n<td>✔️</td>\r\n<td>✔️</td>\r\n<td>Similar to insider/social media, sentiment could have different impact on different companies, based on the industry or subindustry, so neutralize for those categories.</td>\r\n</tr>\r\n<tr>\r\n<td>Earnings Datasets</td>\r\n<td></td>\r\n<td></td>\r\n<td>✔️</td>\r\n<td></td>\r\n<td>For Earnings datasets, Industry neutralization recommended, similar to Fundamental datasets</td>\r\n</tr>\r\n<tr>\r\n<td>Macro Datasets</td>\r\n<td>✔️</td>\r\n<td>✔️</td>\r\n<td>✔️</td>\r\n<td></td>\r\n<td>Sector/Market/Industry are macro-economic activities, so neutralizing Macro datasets for those categories will be best. There is not much difference across subindustries.</td>\r\n</tr>\r\n</table>",
24
+ "id": "da585540-e028-47a7-b30f-599e8ccbe381"
25
+ }
26
+ ],
27
+ "sequence": 3,
28
+ "category": "Advanced Topics"
29
+ }
@@ -0,0 +1,64 @@
1
+ {
2
+ "id": "getting-started-ram-risk-neutralized-alphas",
3
+ "title": "RAM Risk-Neutralized Alphas",
4
+ "lastModified": "2025-11-04T02:32:44.930831-05:00",
5
+ "content": [
6
+ {
7
+ "type": "HEADING",
8
+ "value": {
9
+ "level": "1",
10
+ "content": "What is Reversion and Momentum (RAM) Factor?"
11
+ },
12
+ "id": "0d3fc584-163e-41c5-9caf-4b9f2f9c73f3"
13
+ },
14
+ {
15
+ "type": "TEXT",
16
+ "value": "<p><b>Reversion Factor:</b><br/> The short-term reversion factor captures the phenomenon where stocks that have recently underperformed tend to generate higher returns in the near future, while stocks that have recently outperformed are more likely to experience declines. This behavior is based on the idea that markets often overreact to short-term events, causing temporary mispricing. As these inefficiencies are corrected, oversold stocks recover, and overbought stocks pull back. The reversion factor typically operates within a <b>5-day time horizon</b> and leverages mean reversion by overweighting recently underperforming stocks and underweighting recently outperforming stocks.</p><p><b>Momentum Factor:</b><br/> The momentum factor identifies stocks that exhibit consistent price trends based on recent performance. Stocks with positive excess returns in the recent past tend to continue their upward trajectory, while stocks with negative excess returns persist in their downward trend. This trend-following behavior is based on the principle that established price trends are more likely to continue than reverse. Momentum is typically calculated as the <b>cumulative excess return</b> over the last <b>12 months</b>.</p>",
17
+ "id": "7f0a0a05-08ad-4a97-b413-68491358a326"
18
+ },
19
+ {
20
+ "type": "HEADING",
21
+ "value": {
22
+ "level": "1",
23
+ "content": "Benefits of RAM Neutralization"
24
+ },
25
+ "id": "4c8d5e6b-29d8-4814-bd1f-5decc4d73038"
26
+ },
27
+ {
28
+ "type": "TEXT",
29
+ "value": "<p><b>RAM Neutralization</b> adjusts Alpha to reduce exposure to the Reversion and Momentum factors derived from stock price data.</p><ul><li><b>Neutralize Momentum Factor:</b> Reduces exposure to crowded trades during strong momentum trends, minimizing risks during market corrections.</li><li><b>Neutralize Short-Term Reversion Factor:</b> Hedges Alphas against mean-reversion signals, reducing unwanted risks.</li><li><b>Remove influence of Price: Helps eliminate the effect of price in unrelated Alphas, such as fundamental metrics like ‘eps/close.’</b></li><li><b>Improve Performance:</b> Mitigates risks during market drawdowns, improving Sharpe Ratio, reducing drawdowns, and balances turnover benefits with transaction costs for better Alpha performance.</li></ul>",
30
+ "id": "dacfb3d6-2afa-42a5-b639-0aef55bf8783"
31
+ },
32
+ {
33
+ "type": "HEADING",
34
+ "value": {
35
+ "level": "1",
36
+ "content": "How to Simulate RAM Risk-Neutralized Alphas"
37
+ },
38
+ "id": "487a6f69-90b4-4eb6-8293-586db1784c7d"
39
+ },
40
+ {
41
+ "type": "IMAGE",
42
+ "value": {
43
+ "title": "30.png",
44
+ "width": 618,
45
+ "height": 338,
46
+ "fileSize": 18513,
47
+ "url": "https://api.worldquantbrain.com/content/images/qAjglu10rPB6hjaX4KaAOZJm8Xc=/395/original/30.png"
48
+ },
49
+ "id": "261c9f30-94f2-4986-b06d-0f5754e32d27"
50
+ },
51
+ {
52
+ "type": "TEXT",
53
+ "value": "<p></p><p>Below is an example configuration for simulating RAM risk-neutralized Alphas:</p>",
54
+ "id": "055f0071-b532-4bfc-9d20-dcd5d583626e"
55
+ },
56
+ {
57
+ "type": "TEXT",
58
+ "value": "<p></p><p>{<br/> \"instrumentType\": \"EQUITY\",<br/> \"region\": \"USA\",<br/> \"universe\": \"TOP3000\",<br/> \"delay\": 1,<br/> \"decay\": 0,<br/> \"neutralization\": \"REVERSION_AND_MOMENTUM\",<br/> \"truncation\": 0.1,<br/> \"pasteurization\": \"ON\",<br/> \"unitHandling\": \"VERIFY\",<br/> \"nanHandling\": \"ON\",<br/> \"language\": \"FASTEXPR\",<br/> \"visualization\": false<br/>}</p>",
59
+ "id": "ccd33502-99a4-448f-8313-364b7f1b6f7f"
60
+ }
61
+ ],
62
+ "sequence": 16,
63
+ "category": "Advanced Topics"
64
+ }