aimoon 0.2.2__tar.gz → 0.3.0__tar.gz
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.
- aimoon-0.3.0/PKG-INFO +239 -0
- aimoon-0.3.0/README.md +193 -0
- aimoon-0.3.0/pyproject.toml +69 -0
- aimoon-0.3.0/src/aimoon.egg-info/PKG-INFO +239 -0
- aimoon-0.3.0/src/aimoon.egg-info/SOURCES.txt +40 -0
- aimoon-0.3.0/src/aimoon.egg-info/entry_points.txt +2 -0
- aimoon-0.3.0/src/aimoon.egg-info/requires.txt +27 -0
- aimoon-0.3.0/src/aimoon.egg-info/top_level.txt +1 -0
- aimoon-0.3.0/src/stock_ai_analyst/__init__.py +3 -0
- aimoon-0.3.0/src/stock_ai_analyst/ai/analyzer.py +191 -0
- aimoon-0.3.0/src/stock_ai_analyst/collectors/agent_reach_wrapper.py +120 -0
- aimoon-0.3.0/src/stock_ai_analyst/collectors/base.py +86 -0
- aimoon-0.3.0/src/stock_ai_analyst/collectors/cninfo.py +141 -0
- aimoon-0.3.0/src/stock_ai_analyst/collectors/douyin.py +138 -0
- aimoon-0.3.0/src/stock_ai_analyst/collectors/eastmoney_guba.py +125 -0
- aimoon-0.3.0/src/stock_ai_analyst/collectors/eastmoney_selenium.py +153 -0
- aimoon-0.3.0/src/stock_ai_analyst/collectors/mediacrawler_adapter.py +91 -0
- aimoon-0.3.0/src/stock_ai_analyst/collectors/mock.py +165 -0
- aimoon-0.3.0/src/stock_ai_analyst/collectors/quote.py +219 -0
- aimoon-0.3.0/src/stock_ai_analyst/collectors/toutiao.py +87 -0
- aimoon-0.3.0/src/stock_ai_analyst/collectors/wechat.py +83 -0
- aimoon-0.3.0/src/stock_ai_analyst/collectors/xiaohongshu.py +128 -0
- aimoon-0.3.0/src/stock_ai_analyst/collectors/xueqiu.py +240 -0
- aimoon-0.3.0/src/stock_ai_analyst/config/settings.py +61 -0
- aimoon-0.3.0/src/stock_ai_analyst/financial/pysnowball_adapter.py +152 -0
- aimoon-0.3.0/src/stock_ai_analyst/main.py +294 -0
- aimoon-0.3.0/src/stock_ai_analyst/models/report.py +64 -0
- aimoon-0.3.0/src/stock_ai_analyst/models/social.py +40 -0
- aimoon-0.3.0/src/stock_ai_analyst/models/stock.py +72 -0
- aimoon-0.3.0/src/stock_ai_analyst/report/__init__.py +0 -0
- aimoon-0.3.0/src/stock_ai_analyst/report/generator.py +167 -0
- aimoon-0.3.0/src/stock_ai_analyst/validation/__init__.py +0 -0
- aimoon-0.3.0/src/stock_ai_analyst/validation/cross_validator.py +84 -0
- aimoon-0.3.0/src/stock_ai_analyst/validation/format_validator.py +94 -0
- aimoon-0.3.0/src/stock_ai_analyst/validation/freshness_checker.py +100 -0
- aimoon-0.2.2/PKG-INFO +0 -834
- aimoon-0.2.2/README.md +0 -810
- aimoon-0.2.2/pyproject.toml +0 -46
- aimoon-0.2.2/src/aimoon/__init__.py +0 -2
- aimoon-0.2.2/src/aimoon/__main__.py +0 -4
- aimoon-0.2.2/src/aimoon/adaptive_strategy.py +0 -316
- aimoon-0.2.2/src/aimoon/advanced_optimizer.py +0 -504
- aimoon-0.2.2/src/aimoon/analysis.py +0 -246
- aimoon-0.2.2/src/aimoon/backtest.py +0 -602
- aimoon-0.2.2/src/aimoon/backtest_validator.py +0 -352
- aimoon-0.2.2/src/aimoon/cache.py +0 -62
- aimoon-0.2.2/src/aimoon/cache_manager.py +0 -253
- aimoon-0.2.2/src/aimoon/charts.py +0 -113
- aimoon-0.2.2/src/aimoon/cli.py +0 -714
- aimoon-0.2.2/src/aimoon/config.py +0 -141
- aimoon-0.2.2/src/aimoon/data/__init__.py +0 -20
- aimoon-0.2.2/src/aimoon/data/filters.py +0 -642
- aimoon-0.2.2/src/aimoon/data/history.py +0 -185
- aimoon-0.2.2/src/aimoon/data/mootdx_source.py +0 -90
- aimoon-0.2.2/src/aimoon/data/quality.py +0 -54
- aimoon-0.2.2/src/aimoon/data/spot.py +0 -184
- aimoon-0.2.2/src/aimoon/data/validator.py +0 -167
- aimoon-0.2.2/src/aimoon/demo.py +0 -99
- aimoon-0.2.2/src/aimoon/dependency_injection.py +0 -112
- aimoon-0.2.2/src/aimoon/engine_comparison.py +0 -240
- aimoon-0.2.2/src/aimoon/enhanced_backtest.py +0 -1651
- aimoon-0.2.2/src/aimoon/evaluate_strategy.py +0 -381
- aimoon-0.2.2/src/aimoon/factor_combination.py +0 -311
- aimoon-0.2.2/src/aimoon/factor_eval.py +0 -212
- aimoon-0.2.2/src/aimoon/factors/__init__.py +0 -41
- aimoon-0.2.2/src/aimoon/factors/base.py +0 -206
- aimoon-0.2.2/src/aimoon/factors/panel.py +0 -91
- aimoon-0.2.2/src/aimoon/factors/registry.py +0 -323
- aimoon-0.2.2/src/aimoon/factors/scorer.py +0 -152
- aimoon-0.2.2/src/aimoon/factors/zoo/academic/carhart_mom.py +0 -60
- aimoon-0.2.2/src/aimoon/factors/zoo/academic/cma.py +0 -62
- aimoon-0.2.2/src/aimoon/factors/zoo/academic/hml.py +0 -61
- aimoon-0.2.2/src/aimoon/factors/zoo/academic/mkt_rf.py +0 -54
- aimoon-0.2.2/src/aimoon/factors/zoo/academic/rmw.py +0 -55
- aimoon-0.2.2/src/aimoon/factors/zoo/academic/smb.py +0 -56
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_001.py +0 -45
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_002.py +0 -44
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_003.py +0 -41
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_004.py +0 -40
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_005.py +0 -47
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_006.py +0 -40
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_007.py +0 -78
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_008.py +0 -56
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_009.py +0 -71
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_010.py +0 -73
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_011.py +0 -45
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_012.py +0 -41
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_013.py +0 -41
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_014.py +0 -44
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_015.py +0 -47
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_016.py +0 -41
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_017.py +0 -49
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_018.py +0 -43
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_019.py +0 -58
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_020.py +0 -52
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_021.py +0 -94
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_022.py +0 -44
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_023.py +0 -74
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_024.py +0 -87
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_025.py +0 -44
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_026.py +0 -42
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_027.py +0 -82
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_028.py +0 -45
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_029.py +0 -73
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_030.py +0 -61
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_031.py +0 -55
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_032.py +0 -57
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_033.py +0 -41
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_034.py +0 -46
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_035.py +0 -47
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_036.py +0 -65
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_037.py +0 -49
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_038.py +0 -42
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_039.py +0 -53
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_040.py +0 -42
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_041.py +0 -37
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_042.py +0 -41
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_043.py +0 -44
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_044.py +0 -41
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_045.py +0 -59
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_046.py +0 -82
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_047.py +0 -67
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_048.py +0 -91
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_049.py +0 -78
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_050.py +0 -42
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_051.py +0 -78
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_052.py +0 -62
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_053.py +0 -43
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_054.py +0 -44
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_055.py +0 -47
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_056.py +0 -57
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_057.py +0 -43
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_058.py +0 -75
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_059.py +0 -76
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_060.py +0 -46
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_061.py +0 -46
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_062.py +0 -55
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_063.py +0 -89
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_064.py +0 -57
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_065.py +0 -54
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_066.py +0 -50
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_067.py +0 -84
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_068.py +0 -50
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_069.py +0 -83
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_070.py +0 -82
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_071.py +0 -55
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_072.py +0 -50
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_073.py +0 -53
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_074.py +0 -54
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_075.py +0 -47
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_076.py +0 -85
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_077.py +0 -52
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_078.py +0 -53
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_079.py +0 -84
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_080.py +0 -90
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_081.py +0 -63
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_082.py +0 -83
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_083.py +0 -61
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_084.py +0 -49
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_085.py +0 -49
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_086.py +0 -54
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_087.py +0 -85
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_088.py +0 -53
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_089.py +0 -82
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_090.py +0 -81
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_091.py +0 -84
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_092.py +0 -54
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_093.py +0 -84
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_094.py +0 -47
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_095.py +0 -58
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_096.py +0 -55
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_097.py +0 -86
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_098.py +0 -56
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_099.py +0 -52
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_100.py +0 -84
- aimoon-0.2.2/src/aimoon/factors/zoo/alpha101/alpha_101.py +0 -42
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_001.py +0 -39
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_002.py +0 -35
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_003.py +0 -39
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_004.py +0 -44
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_005.py +0 -34
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_006.py +0 -35
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_007.py +0 -38
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_008.py +0 -37
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_009.py +0 -36
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_010.py +0 -40
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_011.py +0 -35
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_012.py +0 -36
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_013.py +0 -36
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_014.py +0 -30
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_015.py +0 -33
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_016.py +0 -35
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_017.py +0 -44
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_018.py +0 -31
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_019.py +0 -45
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_020.py +0 -32
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_021.py +0 -42
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_022.py +0 -35
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_023.py +0 -39
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_024.py +0 -31
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_025.py +0 -43
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_026.py +0 -37
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_027.py +0 -34
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_028.py +0 -40
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_029.py +0 -32
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_030.py +0 -34
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_031.py +0 -33
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_032.py +0 -34
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_033.py +0 -43
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_034.py +0 -32
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_035.py +0 -41
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_036.py +0 -35
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_037.py +0 -36
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_038.py +0 -34
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_039.py +0 -43
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_040.py +0 -36
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_041.py +0 -35
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_042.py +0 -34
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_043.py +0 -30
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_044.py +0 -40
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_045.py +0 -39
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_046.py +0 -33
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_047.py +0 -38
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_048.py +0 -42
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_049.py +0 -47
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_050.py +0 -48
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_051.py +0 -47
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_052.py +0 -43
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_053.py +0 -28
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_054.py +0 -34
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_055.py +0 -48
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_056.py +0 -42
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_057.py +0 -38
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_058.py +0 -28
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_059.py +0 -39
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_060.py +0 -35
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_061.py +0 -43
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_062.py +0 -31
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_063.py +0 -36
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_064.py +0 -44
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_065.py +0 -32
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_066.py +0 -33
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_067.py +0 -36
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_068.py +0 -36
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_069.py +0 -56
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_070.py +0 -30
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_071.py +0 -33
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_072.py +0 -38
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_073.py +0 -41
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_074.py +0 -40
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_075.py +0 -43
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_076.py +0 -35
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_077.py +0 -42
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_078.py +0 -37
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_079.py +0 -34
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_080.py +0 -32
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_081.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_082.py +0 -38
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_083.py +0 -31
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_084.py +0 -30
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_085.py +0 -36
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_086.py +0 -37
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_087.py +0 -43
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_088.py +0 -32
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_089.py +0 -31
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_090.py +0 -34
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_091.py +0 -36
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_092.py +0 -45
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_093.py +0 -36
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_094.py +0 -30
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_095.py +0 -30
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_096.py +0 -36
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_097.py +0 -30
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_098.py +0 -38
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_099.py +0 -31
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_100.py +0 -30
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_101.py +0 -48
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_102.py +0 -50
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_103.py +0 -43
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_104.py +0 -48
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_105.py +0 -44
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_106.py +0 -42
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_107.py +0 -45
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_108.py +0 -60
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_109.py +0 -51
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_110.py +0 -47
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_111.py +0 -51
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_112.py +0 -45
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_113.py +0 -47
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_114.py +0 -52
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_115.py +0 -57
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_116.py +0 -53
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_117.py +0 -47
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_118.py +0 -44
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_119.py +0 -54
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_120.py +0 -46
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_121.py +0 -59
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_122.py +0 -50
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_123.py +0 -48
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_124.py +0 -48
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_125.py +0 -53
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_126.py +0 -40
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_127.py +0 -45
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_128.py +0 -50
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_129.py +0 -39
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_130.py +0 -53
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_131.py +0 -59
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_132.py +0 -42
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_133.py +0 -44
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_134.py +0 -43
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_135.py +0 -48
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_136.py +0 -48
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_137.py +0 -71
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_138.py +0 -54
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_139.py +0 -43
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_140.py +0 -60
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_141.py +0 -45
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_142.py +0 -50
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_143.py +0 -44
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_144.py +0 -48
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_145.py +0 -43
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_146.py +0 -54
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_147.py +0 -55
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_148.py +0 -48
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_149.py +0 -69
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_150.py +0 -41
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_151.py +0 -43
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_152.py +0 -51
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_153.py +0 -42
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_154.py +0 -49
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_155.py +0 -44
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_156.py +0 -60
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_157.py +0 -55
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_158.py +0 -50
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_159.py +0 -72
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_160.py +0 -48
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_161.py +0 -53
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_162.py +0 -51
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_163.py +0 -50
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_164.py +0 -60
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_165.py +0 -48
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_166.py +0 -47
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_167.py +0 -38
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_168.py +0 -43
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_169.py +0 -48
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_170.py +0 -57
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_171.py +0 -45
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_172.py +0 -63
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_173.py +0 -48
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_174.py +0 -48
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_175.py +0 -53
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_176.py +0 -52
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_177.py +0 -42
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_178.py +0 -43
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_179.py +0 -48
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_180.py +0 -50
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_181.py +0 -64
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_182.py +0 -58
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_183.py +0 -48
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_184.py +0 -46
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_185.py +0 -44
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_186.py +0 -64
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_187.py +0 -48
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_188.py +0 -50
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_189.py +0 -42
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_190.py +0 -55
- aimoon-0.2.2/src/aimoon/factors/zoo/gtja191/alpha_191.py +0 -46
- aimoon-0.2.2/src/aimoon/factors/zoo/proprietary/__init__.py +0 -21
- aimoon-0.2.2/src/aimoon/factors/zoo/proprietary/advanced_tech.py +0 -156
- aimoon-0.2.2/src/aimoon/factors/zoo/proprietary/alternative.py +0 -94
- aimoon-0.2.2/src/aimoon/factors/zoo/proprietary/microstructure.py +0 -84
- aimoon-0.2.2/src/aimoon/factors/zoo/proprietary/northbound.py +0 -81
- aimoon-0.2.2/src/aimoon/factors/zoo/proprietary/sector_rotation.py +0 -86
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/beta10.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/beta20.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/beta30.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/beta5.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/beta60.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/cntd10.py +0 -28
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/cntd20.py +0 -28
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/cntd30.py +0 -28
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/cntd5.py +0 -28
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/cntd60.py +0 -28
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/cntn10.py +0 -25
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/cntn20.py +0 -25
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/cntn30.py +0 -25
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/cntn5.py +0 -25
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/cntn60.py +0 -25
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/cntp10.py +0 -25
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/cntp20.py +0 -25
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/cntp30.py +0 -25
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/cntp5.py +0 -25
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/cntp60.py +0 -25
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/cord10.py +0 -31
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/cord20.py +0 -31
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/cord30.py +0 -31
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/cord5.py +0 -31
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/cord60.py +0 -31
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/corr10.py +0 -29
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/corr20.py +0 -29
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/corr30.py +0 -29
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/corr5.py +0 -29
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/corr60.py +0 -29
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/imax10.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/imax20.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/imax30.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/imax5.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/imax60.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/imin10.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/imin20.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/imin30.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/imin5.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/imin60.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/imxd10.py +0 -27
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/imxd20.py +0 -27
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/imxd30.py +0 -27
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/imxd5.py +0 -27
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/imxd60.py +0 -27
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/klen.py +0 -28
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/klow.py +0 -29
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/klow2.py +0 -30
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/kmid.py +0 -27
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/kmid2.py +0 -29
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/ksft.py +0 -29
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/ksft2.py +0 -29
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/kup.py +0 -29
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/kup2.py +0 -30
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/ma10.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/ma20.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/ma30.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/ma5.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/ma60.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/max10.py +0 -27
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/max20.py +0 -27
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/max30.py +0 -27
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/max5.py +0 -27
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/max60.py +0 -27
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/min10.py +0 -27
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/min20.py +0 -27
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/min30.py +0 -27
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/min5.py +0 -27
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/min60.py +0 -27
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/qtld10.py +0 -27
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/qtld20.py +0 -27
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/qtld30.py +0 -27
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/qtld5.py +0 -27
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/qtld60.py +0 -27
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/qtlu10.py +0 -27
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/qtlu20.py +0 -27
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/qtlu30.py +0 -27
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/qtlu5.py +0 -27
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/qtlu60.py +0 -27
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/rank10.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/rank20.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/rank30.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/rank5.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/rank60.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/resi10.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/resi20.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/resi30.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/resi5.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/resi60.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/roc10.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/roc20.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/roc30.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/roc5.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/roc60.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/rsqr10.py +0 -34
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/rsqr20.py +0 -34
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/rsqr30.py +0 -34
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/rsqr5.py +0 -34
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/rsqr60.py +0 -34
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/rsv10.py +0 -30
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/rsv20.py +0 -30
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/rsv30.py +0 -30
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/rsv5.py +0 -30
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/rsv60.py +0 -30
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/std10.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/std20.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/std30.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/std5.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/std60.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/sumd10.py +0 -33
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/sumd20.py +0 -33
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/sumd30.py +0 -33
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/sumd5.py +0 -33
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/sumd60.py +0 -33
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/sumn10.py +0 -31
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/sumn20.py +0 -31
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/sumn30.py +0 -31
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/sumn5.py +0 -31
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/sumn60.py +0 -31
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/sump10.py +0 -31
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/sump20.py +0 -31
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/sump30.py +0 -31
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/sump5.py +0 -31
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/sump60.py +0 -31
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/vma10.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/vma20.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/vma30.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/vma5.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/vma60.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/vstd10.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/vstd20.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/vstd30.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/vstd5.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/vstd60.py +0 -26
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/vsumd10.py +0 -33
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/vsumd20.py +0 -33
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/vsumd30.py +0 -33
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/vsumd5.py +0 -33
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/vsumd60.py +0 -33
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/vsumn10.py +0 -31
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/vsumn20.py +0 -31
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/vsumn30.py +0 -31
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/vsumn5.py +0 -31
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/vsumn60.py +0 -31
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/vsump10.py +0 -31
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/vsump20.py +0 -31
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/vsump30.py +0 -31
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/vsump5.py +0 -31
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/vsump60.py +0 -31
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/wvma10.py +0 -30
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/wvma20.py +0 -30
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/wvma30.py +0 -30
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/wvma5.py +0 -30
- aimoon-0.2.2/src/aimoon/factors/zoo/qlib158/wvma60.py +0 -30
- aimoon-0.2.2/src/aimoon/factors/zoo/vwap.py +0 -260
- aimoon-0.2.2/src/aimoon/indicators/__init__.py +0 -3
- aimoon-0.2.2/src/aimoon/indicators/technical.py +0 -463
- aimoon-0.2.2/src/aimoon/live_trading_validator.py +0 -339
- aimoon-0.2.2/src/aimoon/ml/__init__.py +0 -1
- aimoon-0.2.2/src/aimoon/ml/_training_commons.py +0 -144
- aimoon-0.2.2/src/aimoon/ml/adaptive_system.py +0 -568
- aimoon-0.2.2/src/aimoon/ml/alpha360.py +0 -131
- aimoon-0.2.2/src/aimoon/ml/data_handler.py +0 -202
- aimoon-0.2.2/src/aimoon/ml/ensemble.py +0 -387
- aimoon-0.2.2/src/aimoon/ml/factor_decay.py +0 -246
- aimoon-0.2.2/src/aimoon/ml/feature_pipeline.py +0 -322
- aimoon-0.2.2/src/aimoon/ml/icir_weighter.py +0 -224
- aimoon-0.2.2/src/aimoon/ml/label_engine.py +0 -215
- aimoon-0.2.2/src/aimoon/ml/lgbm_trainer.py +0 -283
- aimoon-0.2.2/src/aimoon/ml/model_base.py +0 -271
- aimoon-0.2.2/src/aimoon/ml/optimized_config.py +0 -150
- aimoon-0.2.2/src/aimoon/ml/predictor.py +0 -125
- aimoon-0.2.2/src/aimoon/ml/purged_tscv.py +0 -363
- aimoon-0.2.2/src/aimoon/ml/slippage_model.py +0 -390
- aimoon-0.2.2/src/aimoon/ml/trainer.py +0 -562
- aimoon-0.2.2/src/aimoon/ml/walk_forward.py +0 -283
- aimoon-0.2.2/src/aimoon/models.py +0 -75
- aimoon-0.2.2/src/aimoon/optimizer.py +0 -244
- aimoon-0.2.2/src/aimoon/output.py +0 -610
- aimoon-0.2.2/src/aimoon/paper_trading.py +0 -564
- aimoon-0.2.2/src/aimoon/paper_trading_demo.py +0 -279
- aimoon-0.2.2/src/aimoon/paper_trading_example.py +0 -204
- aimoon-0.2.2/src/aimoon/performance.py +0 -498
- aimoon-0.2.2/src/aimoon/portfolio/__init__.py +0 -17
- aimoon-0.2.2/src/aimoon/portfolio/optimizer.py +0 -325
- aimoon-0.2.2/src/aimoon/regime.py +0 -110
- aimoon-0.2.2/src/aimoon/regime_enhanced.py +0 -350
- aimoon-0.2.2/src/aimoon/regime_ml.py +0 -276
- aimoon-0.2.2/src/aimoon/research.py +0 -337
- aimoon-0.2.2/src/aimoon/result.py +0 -46
- aimoon-0.2.2/src/aimoon/risk.py +0 -101
- aimoon-0.2.2/src/aimoon/rumi_optimizer.py +0 -340
- aimoon-0.2.2/src/aimoon/rumi_strategy.py +0 -439
- aimoon-0.2.2/src/aimoon/run_paper_trading.py +0 -323
- aimoon-0.2.2/src/aimoon/scoring/__init__.py +0 -196
- aimoon-0.2.2/src/aimoon/scoring/adaptive_weight.py +0 -175
- aimoon-0.2.2/src/aimoon/scoring/bollinger.py +0 -15
- aimoon-0.2.2/src/aimoon/scoring/combiner.py +0 -166
- aimoon-0.2.2/src/aimoon/scoring/fundamentals.py +0 -55
- aimoon-0.2.2/src/aimoon/scoring/hybrid_scorer.py +0 -287
- aimoon-0.2.2/src/aimoon/scoring/kdj.py +0 -19
- aimoon-0.2.2/src/aimoon/scoring/macd.py +0 -19
- aimoon-0.2.2/src/aimoon/scoring/mean_reversion.py +0 -175
- aimoon-0.2.2/src/aimoon/scoring/momentum.py +0 -111
- aimoon-0.2.2/src/aimoon/scoring/momentum_ext.py +0 -97
- aimoon-0.2.2/src/aimoon/scoring/reversal.py +0 -98
- aimoon-0.2.2/src/aimoon/scoring/rps.py +0 -59
- aimoon-0.2.2/src/aimoon/scoring/rsi.py +0 -36
- aimoon-0.2.2/src/aimoon/scoring/sector.py +0 -21
- aimoon-0.2.2/src/aimoon/scoring/service.py +0 -155
- aimoon-0.2.2/src/aimoon/scoring/trend.py +0 -20
- aimoon-0.2.2/src/aimoon/scoring/trend_ext.py +0 -113
- aimoon-0.2.2/src/aimoon/scoring/volume.py +0 -18
- aimoon-0.2.2/src/aimoon/screener.py +0 -378
- aimoon-0.2.2/src/aimoon/self_learning.py +0 -161
- aimoon-0.2.2/src/aimoon/start_paper_trading.py +0 -132
- aimoon-0.2.2/src/aimoon/validation.py +0 -348
- aimoon-0.2.2/src/aimoon/watchlist.py +0 -159
- aimoon-0.2.2/src/aimoon/zipline_adapter.py +0 -245
- aimoon-0.2.2/src/aimoon/zipline_data.py +0 -176
- aimoon-0.2.2/src/aimoon/zipline_runner.py +0 -213
- aimoon-0.2.2/src/aimoon.egg-info/PKG-INFO +0 -834
- aimoon-0.2.2/src/aimoon.egg-info/SOURCES.txt +0 -594
- aimoon-0.2.2/src/aimoon.egg-info/entry_points.txt +0 -2
- aimoon-0.2.2/src/aimoon.egg-info/requires.txt +0 -13
- aimoon-0.2.2/src/aimoon.egg-info/top_level.txt +0 -1
- aimoon-0.2.2/tests/test_alpha360.py +0 -67
- aimoon-0.2.2/tests/test_backtest.py +0 -35
- aimoon-0.2.2/tests/test_backtest_position.py +0 -354
- aimoon-0.2.2/tests/test_charts.py +0 -59
- aimoon-0.2.2/tests/test_cli.py +0 -30
- aimoon-0.2.2/tests/test_enhanced_backtest.py +0 -60
- aimoon-0.2.2/tests/test_ensemble.py +0 -52
- aimoon-0.2.2/tests/test_filters.py +0 -47
- aimoon-0.2.2/tests/test_formatter.py +0 -54
- aimoon-0.2.2/tests/test_fundamentals.py +0 -65
- aimoon-0.2.2/tests/test_lgbm_trainer.py +0 -30
- aimoon-0.2.2/tests/test_ml_features.py +0 -56
- aimoon-0.2.2/tests/test_ml_labels.py +0 -59
- aimoon-0.2.2/tests/test_ml_predictor.py +0 -54
- aimoon-0.2.2/tests/test_ml_trainer.py +0 -82
- aimoon-0.2.2/tests/test_models.py +0 -65
- aimoon-0.2.2/tests/test_momentum_ext.py +0 -45
- aimoon-0.2.2/tests/test_optimizer.py +0 -87
- aimoon-0.2.2/tests/test_portfolio_backtest.py +0 -52
- aimoon-0.2.2/tests/test_regime.py +0 -59
- aimoon-0.2.2/tests/test_risk.py +0 -95
- aimoon-0.2.2/tests/test_rps.py +0 -32
- aimoon-0.2.2/tests/test_score_rsi.py +0 -53
- aimoon-0.2.2/tests/test_screener.py +0 -40
- aimoon-0.2.2/tests/test_trend_ext.py +0 -34
- {aimoon-0.2.2 → aimoon-0.3.0}/setup.cfg +0 -0
- {aimoon-0.2.2 → aimoon-0.3.0}/src/aimoon.egg-info/dependency_links.txt +0 -0
- {aimoon-0.2.2/src/aimoon/factors/zoo → aimoon-0.3.0/src/stock_ai_analyst/ai}/__init__.py +0 -0
- {aimoon-0.2.2/src/aimoon/factors/zoo/academic → aimoon-0.3.0/src/stock_ai_analyst/collectors}/__init__.py +0 -0
- {aimoon-0.2.2/src/aimoon/factors/zoo/alpha101 → aimoon-0.3.0/src/stock_ai_analyst/config}/__init__.py +0 -0
- {aimoon-0.2.2/src/aimoon/factors/zoo/gtja191 → aimoon-0.3.0/src/stock_ai_analyst/financial}/__init__.py +0 -0
- {aimoon-0.2.2/src/aimoon/factors/zoo/qlib158 → aimoon-0.3.0/src/stock_ai_analyst/models}/__init__.py +0 -0
aimoon-0.3.0/PKG-INFO
ADDED
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: aimoon
|
|
3
|
+
Version: 0.3.0
|
|
4
|
+
Summary: AI-powered A-share stock analysis with multi-platform data collection
|
|
5
|
+
Author-email: aimoon <aimoon@users.noreply.github.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/aimoon/aimoon
|
|
8
|
+
Project-URL: Repository, https://github.com/aimoon/aimoon
|
|
9
|
+
Classifier: Development Status :: 3 - Alpha
|
|
10
|
+
Classifier: Environment :: Console
|
|
11
|
+
Classifier: Intended Audience :: Financial and Insurance Industry
|
|
12
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
13
|
+
Classifier: Natural Language :: Chinese (Simplified)
|
|
14
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
15
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
16
|
+
Classifier: Operating System :: MacOS
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Classifier: Topic :: Office/Business :: Financial :: Investment
|
|
20
|
+
Requires-Python: >=3.12
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
Requires-Dist: httpx>=0.28.0
|
|
23
|
+
Requires-Dist: pydantic>=2.10.0
|
|
24
|
+
Requires-Dist: pydantic-settings>=2.7.0
|
|
25
|
+
Requires-Dist: jinja2>=3.1.4
|
|
26
|
+
Requires-Dist: akshare>=1.16.0
|
|
27
|
+
Requires-Dist: pysnowball>=0.1.0
|
|
28
|
+
Requires-Dist: openai>=1.60.0
|
|
29
|
+
Requires-Dist: python-dotenv>=1.0.1
|
|
30
|
+
Requires-Dist: rich>=13.9.0
|
|
31
|
+
Requires-Dist: orjson>=3.10.0
|
|
32
|
+
Requires-Dist: tenacity>=9.0.0
|
|
33
|
+
Requires-Dist: selenium>=4.45.0
|
|
34
|
+
Requires-Dist: playwright>=1.60.0
|
|
35
|
+
Requires-Dist: markdown>=3.10.2
|
|
36
|
+
Provides-Extra: dev
|
|
37
|
+
Requires-Dist: pytest>=8.3.0; extra == "dev"
|
|
38
|
+
Requires-Dist: pytest-asyncio>=0.24.0; extra == "dev"
|
|
39
|
+
Requires-Dist: pytest-cov>=6.0.0; extra == "dev"
|
|
40
|
+
Requires-Dist: ruff>=0.8.0; extra == "dev"
|
|
41
|
+
Provides-Extra: selenium
|
|
42
|
+
Requires-Dist: selenium>=4.45.0; extra == "selenium"
|
|
43
|
+
Provides-Extra: all
|
|
44
|
+
Requires-Dist: selenium; extra == "all"
|
|
45
|
+
Requires-Dist: playwright; extra == "all"
|
|
46
|
+
|
|
47
|
+
# Aimoon — AI A股分析工具
|
|
48
|
+
|
|
49
|
+
输入股票代码,自动完成 **采集 → 整合 → AI分析 → 可视化报告** 四步流程。
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# 安装
|
|
53
|
+
cd aimoon
|
|
54
|
+
uv tool install --editable .
|
|
55
|
+
|
|
56
|
+
# 配置(编辑 .env 填入 API Key)
|
|
57
|
+
cp .env.example .env
|
|
58
|
+
|
|
59
|
+
# 分析任何A股
|
|
60
|
+
aimoon 600519 # 贵州茅台(真实数据)
|
|
61
|
+
aimoon 600519 --mock # Mock模式
|
|
62
|
+
aimoon 000001 # 平安银行
|
|
63
|
+
aimoon 000858 -o ./reports # 五粮液,指定输出目录
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## 数据采集覆盖
|
|
69
|
+
|
|
70
|
+
| 数据源 | 采集方式 | 数据量 | 状态 |
|
|
71
|
+
|--------|----------|--------|------|
|
|
72
|
+
| 实时行情(含PE) | 雪球 stock.xueqiu.com API | — | ✅ |
|
|
73
|
+
| 财务数据 | pysnowball (资产负债表/利润表/现金流) | — | ✅ |
|
|
74
|
+
| 雪球热帖 | HTTP API (hot list + stock search) | 10条 | ✅ |
|
|
75
|
+
| 东方财富股吧 | Selenium (优先) → akshare (兜底) | 10条 | ✅ |
|
|
76
|
+
| 巨潮资讯·公司公告 | 官方API + secCode二次过滤 | 20条 | ✅ |
|
|
77
|
+
| 微信公众号 | 搜狗微信搜索 | 10条 | ✅ |
|
|
78
|
+
| 今日头条 | Playwright 搜索 | 7-10条 | ✅ |
|
|
79
|
+
| 小红书 | Playwright + 登录态 | 7-10条 | ✅ |
|
|
80
|
+
| 抖音 | Playwright(反爬严格) | — | ⚠️ 待调试 |
|
|
81
|
+
|
|
82
|
+
> ✅ = 开箱即用   ⚠️ = 需手动配置   🚧 = 开发中
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## 安装指南
|
|
87
|
+
|
|
88
|
+
### 前置依赖
|
|
89
|
+
|
|
90
|
+
- **Python ≥ 3.12**
|
|
91
|
+
- **uv**(Python包管理器): `powershell -c "irm https://astral.sh/uv/install.ps1 | iex"`
|
|
92
|
+
- **Chrome 浏览器** (Selenium/Playwright 需要)
|
|
93
|
+
|
|
94
|
+
### 基础安装
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
# 1. 进入项目目录
|
|
98
|
+
cd aimoon
|
|
99
|
+
|
|
100
|
+
# 2. 安装依赖
|
|
101
|
+
uv sync
|
|
102
|
+
|
|
103
|
+
# 3. 首次安装 CLI 工具(全局可用)
|
|
104
|
+
uv tool install --editable .
|
|
105
|
+
|
|
106
|
+
# 4. Playwright 浏览器
|
|
107
|
+
uv run playwright install chromium
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### 配置文件 (.env)
|
|
111
|
+
|
|
112
|
+
```ini
|
|
113
|
+
# === 必配 ===
|
|
114
|
+
DEEPSEEK_API_KEY=sk-xxx # DeepSeek API Key
|
|
115
|
+
|
|
116
|
+
# === 雪球(推荐配置,可获取含PE的实时行情 + 财报 + 雪球热帖)===
|
|
117
|
+
XUEQIU_TOKEN=xq_a_token=xxx; u=xxx
|
|
118
|
+
XUEQIU_COOKIE=xq_a_token=xxx; u=xxx
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
> 雪球 Cookie 获取: 浏览器登录 [xueqiu.com](https://xueqiu.com) → F12 → Application → Cookies → 复制 `xq_a_token` 和 `u`
|
|
122
|
+
|
|
123
|
+
### 小红书/抖音登录(可选)
|
|
124
|
+
|
|
125
|
+
```python
|
|
126
|
+
# 运行一次,会弹出浏览器窗口,扫码登录后按回车即可
|
|
127
|
+
uv run python -c "
|
|
128
|
+
from stock_ai_analyst.collectors.xiaohongshu import XiaohongshuCollector
|
|
129
|
+
XiaohongshuCollector.login()
|
|
130
|
+
"
|
|
131
|
+
# 抖音同理
|
|
132
|
+
uv run python -c "
|
|
133
|
+
from stock_ai_analyst.collectors.douyin import DouyinCollector
|
|
134
|
+
DouyinCollector.login()
|
|
135
|
+
"
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
> 登录态会保存到 `~/.stock-ai-analyst/`,后续自动复用。
|
|
139
|
+
|
|
140
|
+
### 扩展工具(可选)
|
|
141
|
+
|
|
142
|
+
| 工具 | 用途 | 安装 |
|
|
143
|
+
|------|------|------|
|
|
144
|
+
| **Agent Reach** | 小红书/多平台接入 | `pip install agent-reach @ https://github.com/Panniantong/agent-reach/archive/main.zip` |
|
|
145
|
+
| **MediaCrawler** | 抖音/小红书专业采集 | `git clone https://github.com/NanmiCoder/MediaCrawler ~/.mediacrawler` |
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## 架构
|
|
150
|
+
|
|
151
|
+
```
|
|
152
|
+
用户输入股票代码 (600519)
|
|
153
|
+
│
|
|
154
|
+
▼
|
|
155
|
+
┌─ ① 数据采集 ─────────────────────────────────────────────┐
|
|
156
|
+
│ │
|
|
157
|
+
│ 行情 → 雪球(含PE) → 新浪 → 腾讯 (三级兜底) │
|
|
158
|
+
│ 财报 → pysnowball │
|
|
159
|
+
│ 雪球 → HTTP热帖API + stock search │
|
|
160
|
+
│ 股吧 → Selenium → akshare │
|
|
161
|
+
│ 公告 → 巨潮资讯 API (searchkey + secCode) │
|
|
162
|
+
│ 微信 → 搜狗搜索 │
|
|
163
|
+
│ 头条 → Playwright │
|
|
164
|
+
│ 小红书 → Playwright + 登录态 │
|
|
165
|
+
│ │
|
|
166
|
+
└───────────────────────┬───────────────────────────────────┘
|
|
167
|
+
▼
|
|
168
|
+
┌─ ② 数据整合 ─────────────────────────────────────────────┐
|
|
169
|
+
│ - 9个采集器并发/串行执行 │
|
|
170
|
+
│ - 格式校验 + 跨源交叉验证 + 时效性检查 │
|
|
171
|
+
│ - 单个采集器失败不影响全局 │
|
|
172
|
+
└───────────────────────┬───────────────────────────────────┘
|
|
173
|
+
▼
|
|
174
|
+
┌─ ③ AI 分析 (DeepSeek) ───────────────────────────────────┐
|
|
175
|
+
│ 6维度: 情绪25% + 技术15% + 基本面20% │
|
|
176
|
+
│ 资金15% + 新闻15% + 综合10% │
|
|
177
|
+
└───────────────────────┬───────────────────────────────────┘
|
|
178
|
+
▼
|
|
179
|
+
┌─ ④ HTML 报告 (Jinja2) ───────────────────────────────────┐
|
|
180
|
+
│ 深蓝暗色 · 响应式Grid · 红涨绿跌 │
|
|
181
|
+
│ SVG图表 · 评分环形图 · 情感堆叠条 │
|
|
182
|
+
│ 纯静态HTML,无外部依赖,可离线查看 │
|
|
183
|
+
└─────────────────────────────────────────────────────────────┘
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
## 项目结构
|
|
187
|
+
|
|
188
|
+
```
|
|
189
|
+
src/stock_ai_analyst/
|
|
190
|
+
├── main.py # CLI 入口 + 四步流程编排
|
|
191
|
+
├── config/settings.py # 配置管理 (Pydantic + .env)
|
|
192
|
+
├── models/ # 数据模型
|
|
193
|
+
│ ├── stock.py # StockQuote, FinancialData
|
|
194
|
+
│ ├── social.py # SocialPost, CollectResult
|
|
195
|
+
│ └── report.py # AnalysisReport, DimensionScore
|
|
196
|
+
├── collectors/ # 10个采集器
|
|
197
|
+
│ ├── quote.py # 行情(雪球→新浪→腾讯)
|
|
198
|
+
│ ├── xueqiu.py # 雪球热帖 + 含PE行情
|
|
199
|
+
│ ├── eastmoney_guba.py # 东方财富股吧 (akshare)
|
|
200
|
+
│ ├── eastmoney_selenium.py # 东方财富股吧 (Selenium)
|
|
201
|
+
│ ├── cninfo.py # 巨潮资讯·公司公告
|
|
202
|
+
│ ├── wechat.py # 微信公众号(搜狗搜索)
|
|
203
|
+
│ ├── toutiao.py # 今日头条(Playwright)
|
|
204
|
+
│ ├── douyin.py # 抖音(Playwright)
|
|
205
|
+
│ ├── xiaohongshu.py # 小红书(Playwright)
|
|
206
|
+
│ ├── agent_reach_wrapper.py # AgentReach 接口
|
|
207
|
+
│ └── mediacrawler_adapter.py # MediaCrawler 适配器
|
|
208
|
+
├── financial/ # 财报 (pysnowball)
|
|
209
|
+
│ └── pysnowball_adapter.py
|
|
210
|
+
├── ai/ # DeepSeek 分析引擎
|
|
211
|
+
│ └── analyzer.py # DeepSeekAnalyzer + AIAnalyzer
|
|
212
|
+
├── validation/ # 数据质量
|
|
213
|
+
│ ├── format_validator.py
|
|
214
|
+
│ ├── cross_validator.py
|
|
215
|
+
│ └── freshness_checker.py
|
|
216
|
+
└── report/ # 报告生成
|
|
217
|
+
├── generator.py # Jinja2 模板渲染
|
|
218
|
+
└── templates/index.html
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
## 输出示例
|
|
222
|
+
|
|
223
|
+
生成的 HTML 报告包含:
|
|
224
|
+
|
|
225
|
+
- **顶部**:股票代码、实时行情(价格/涨跌/PE)、综合评分环形图 + 摘要
|
|
226
|
+
- **6维度评分**:市场情绪/技术面/基本面/资金面/新闻舆情/综合评级(带横向条形图)
|
|
227
|
+
- **可视化图表**:技术面价格区间图、资金面现金流横向条、新闻情感堆叠条
|
|
228
|
+
- **财务数据表**:营收/净利润/ROE/EPS/现金流
|
|
229
|
+
- **全网舆情**:各平台帖子列表(标注来源/点赞/评论)
|
|
230
|
+
- **AI 综合分析报告**:Markdown 渲染为排版良好的 HTML,含公司概况、财务评估、情绪分析、技术简析、投资建议、风险提示
|
|
231
|
+
- **数据来源清单**:每个平台采集状态
|
|
232
|
+
|
|
233
|
+
报告为纯静态 HTML,无外部 JS 依赖,可直接通过浏览器打开或分享。
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
## 免责声明
|
|
238
|
+
|
|
239
|
+
本报告由 AI 自动生成,所有分析内容仅供参考,不构成任何投资建议。投资有风险,入市需谨慎。
|
aimoon-0.3.0/README.md
ADDED
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
# Aimoon — AI A股分析工具
|
|
2
|
+
|
|
3
|
+
输入股票代码,自动完成 **采集 → 整合 → AI分析 → 可视化报告** 四步流程。
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
# 安装
|
|
7
|
+
cd aimoon
|
|
8
|
+
uv tool install --editable .
|
|
9
|
+
|
|
10
|
+
# 配置(编辑 .env 填入 API Key)
|
|
11
|
+
cp .env.example .env
|
|
12
|
+
|
|
13
|
+
# 分析任何A股
|
|
14
|
+
aimoon 600519 # 贵州茅台(真实数据)
|
|
15
|
+
aimoon 600519 --mock # Mock模式
|
|
16
|
+
aimoon 000001 # 平安银行
|
|
17
|
+
aimoon 000858 -o ./reports # 五粮液,指定输出目录
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 数据采集覆盖
|
|
23
|
+
|
|
24
|
+
| 数据源 | 采集方式 | 数据量 | 状态 |
|
|
25
|
+
|--------|----------|--------|------|
|
|
26
|
+
| 实时行情(含PE) | 雪球 stock.xueqiu.com API | — | ✅ |
|
|
27
|
+
| 财务数据 | pysnowball (资产负债表/利润表/现金流) | — | ✅ |
|
|
28
|
+
| 雪球热帖 | HTTP API (hot list + stock search) | 10条 | ✅ |
|
|
29
|
+
| 东方财富股吧 | Selenium (优先) → akshare (兜底) | 10条 | ✅ |
|
|
30
|
+
| 巨潮资讯·公司公告 | 官方API + secCode二次过滤 | 20条 | ✅ |
|
|
31
|
+
| 微信公众号 | 搜狗微信搜索 | 10条 | ✅ |
|
|
32
|
+
| 今日头条 | Playwright 搜索 | 7-10条 | ✅ |
|
|
33
|
+
| 小红书 | Playwright + 登录态 | 7-10条 | ✅ |
|
|
34
|
+
| 抖音 | Playwright(反爬严格) | — | ⚠️ 待调试 |
|
|
35
|
+
|
|
36
|
+
> ✅ = 开箱即用   ⚠️ = 需手动配置   🚧 = 开发中
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## 安装指南
|
|
41
|
+
|
|
42
|
+
### 前置依赖
|
|
43
|
+
|
|
44
|
+
- **Python ≥ 3.12**
|
|
45
|
+
- **uv**(Python包管理器): `powershell -c "irm https://astral.sh/uv/install.ps1 | iex"`
|
|
46
|
+
- **Chrome 浏览器** (Selenium/Playwright 需要)
|
|
47
|
+
|
|
48
|
+
### 基础安装
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# 1. 进入项目目录
|
|
52
|
+
cd aimoon
|
|
53
|
+
|
|
54
|
+
# 2. 安装依赖
|
|
55
|
+
uv sync
|
|
56
|
+
|
|
57
|
+
# 3. 首次安装 CLI 工具(全局可用)
|
|
58
|
+
uv tool install --editable .
|
|
59
|
+
|
|
60
|
+
# 4. Playwright 浏览器
|
|
61
|
+
uv run playwright install chromium
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### 配置文件 (.env)
|
|
65
|
+
|
|
66
|
+
```ini
|
|
67
|
+
# === 必配 ===
|
|
68
|
+
DEEPSEEK_API_KEY=sk-xxx # DeepSeek API Key
|
|
69
|
+
|
|
70
|
+
# === 雪球(推荐配置,可获取含PE的实时行情 + 财报 + 雪球热帖)===
|
|
71
|
+
XUEQIU_TOKEN=xq_a_token=xxx; u=xxx
|
|
72
|
+
XUEQIU_COOKIE=xq_a_token=xxx; u=xxx
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
> 雪球 Cookie 获取: 浏览器登录 [xueqiu.com](https://xueqiu.com) → F12 → Application → Cookies → 复制 `xq_a_token` 和 `u`
|
|
76
|
+
|
|
77
|
+
### 小红书/抖音登录(可选)
|
|
78
|
+
|
|
79
|
+
```python
|
|
80
|
+
# 运行一次,会弹出浏览器窗口,扫码登录后按回车即可
|
|
81
|
+
uv run python -c "
|
|
82
|
+
from stock_ai_analyst.collectors.xiaohongshu import XiaohongshuCollector
|
|
83
|
+
XiaohongshuCollector.login()
|
|
84
|
+
"
|
|
85
|
+
# 抖音同理
|
|
86
|
+
uv run python -c "
|
|
87
|
+
from stock_ai_analyst.collectors.douyin import DouyinCollector
|
|
88
|
+
DouyinCollector.login()
|
|
89
|
+
"
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
> 登录态会保存到 `~/.stock-ai-analyst/`,后续自动复用。
|
|
93
|
+
|
|
94
|
+
### 扩展工具(可选)
|
|
95
|
+
|
|
96
|
+
| 工具 | 用途 | 安装 |
|
|
97
|
+
|------|------|------|
|
|
98
|
+
| **Agent Reach** | 小红书/多平台接入 | `pip install agent-reach @ https://github.com/Panniantong/agent-reach/archive/main.zip` |
|
|
99
|
+
| **MediaCrawler** | 抖音/小红书专业采集 | `git clone https://github.com/NanmiCoder/MediaCrawler ~/.mediacrawler` |
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## 架构
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
用户输入股票代码 (600519)
|
|
107
|
+
│
|
|
108
|
+
▼
|
|
109
|
+
┌─ ① 数据采集 ─────────────────────────────────────────────┐
|
|
110
|
+
│ │
|
|
111
|
+
│ 行情 → 雪球(含PE) → 新浪 → 腾讯 (三级兜底) │
|
|
112
|
+
│ 财报 → pysnowball │
|
|
113
|
+
│ 雪球 → HTTP热帖API + stock search │
|
|
114
|
+
│ 股吧 → Selenium → akshare │
|
|
115
|
+
│ 公告 → 巨潮资讯 API (searchkey + secCode) │
|
|
116
|
+
│ 微信 → 搜狗搜索 │
|
|
117
|
+
│ 头条 → Playwright │
|
|
118
|
+
│ 小红书 → Playwright + 登录态 │
|
|
119
|
+
│ │
|
|
120
|
+
└───────────────────────┬───────────────────────────────────┘
|
|
121
|
+
▼
|
|
122
|
+
┌─ ② 数据整合 ─────────────────────────────────────────────┐
|
|
123
|
+
│ - 9个采集器并发/串行执行 │
|
|
124
|
+
│ - 格式校验 + 跨源交叉验证 + 时效性检查 │
|
|
125
|
+
│ - 单个采集器失败不影响全局 │
|
|
126
|
+
└───────────────────────┬───────────────────────────────────┘
|
|
127
|
+
▼
|
|
128
|
+
┌─ ③ AI 分析 (DeepSeek) ───────────────────────────────────┐
|
|
129
|
+
│ 6维度: 情绪25% + 技术15% + 基本面20% │
|
|
130
|
+
│ 资金15% + 新闻15% + 综合10% │
|
|
131
|
+
└───────────────────────┬───────────────────────────────────┘
|
|
132
|
+
▼
|
|
133
|
+
┌─ ④ HTML 报告 (Jinja2) ───────────────────────────────────┐
|
|
134
|
+
│ 深蓝暗色 · 响应式Grid · 红涨绿跌 │
|
|
135
|
+
│ SVG图表 · 评分环形图 · 情感堆叠条 │
|
|
136
|
+
│ 纯静态HTML,无外部依赖,可离线查看 │
|
|
137
|
+
└─────────────────────────────────────────────────────────────┘
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## 项目结构
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
src/stock_ai_analyst/
|
|
144
|
+
├── main.py # CLI 入口 + 四步流程编排
|
|
145
|
+
├── config/settings.py # 配置管理 (Pydantic + .env)
|
|
146
|
+
├── models/ # 数据模型
|
|
147
|
+
│ ├── stock.py # StockQuote, FinancialData
|
|
148
|
+
│ ├── social.py # SocialPost, CollectResult
|
|
149
|
+
│ └── report.py # AnalysisReport, DimensionScore
|
|
150
|
+
├── collectors/ # 10个采集器
|
|
151
|
+
│ ├── quote.py # 行情(雪球→新浪→腾讯)
|
|
152
|
+
│ ├── xueqiu.py # 雪球热帖 + 含PE行情
|
|
153
|
+
│ ├── eastmoney_guba.py # 东方财富股吧 (akshare)
|
|
154
|
+
│ ├── eastmoney_selenium.py # 东方财富股吧 (Selenium)
|
|
155
|
+
│ ├── cninfo.py # 巨潮资讯·公司公告
|
|
156
|
+
│ ├── wechat.py # 微信公众号(搜狗搜索)
|
|
157
|
+
│ ├── toutiao.py # 今日头条(Playwright)
|
|
158
|
+
│ ├── douyin.py # 抖音(Playwright)
|
|
159
|
+
│ ├── xiaohongshu.py # 小红书(Playwright)
|
|
160
|
+
│ ├── agent_reach_wrapper.py # AgentReach 接口
|
|
161
|
+
│ └── mediacrawler_adapter.py # MediaCrawler 适配器
|
|
162
|
+
├── financial/ # 财报 (pysnowball)
|
|
163
|
+
│ └── pysnowball_adapter.py
|
|
164
|
+
├── ai/ # DeepSeek 分析引擎
|
|
165
|
+
│ └── analyzer.py # DeepSeekAnalyzer + AIAnalyzer
|
|
166
|
+
├── validation/ # 数据质量
|
|
167
|
+
│ ├── format_validator.py
|
|
168
|
+
│ ├── cross_validator.py
|
|
169
|
+
│ └── freshness_checker.py
|
|
170
|
+
└── report/ # 报告生成
|
|
171
|
+
├── generator.py # Jinja2 模板渲染
|
|
172
|
+
└── templates/index.html
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
## 输出示例
|
|
176
|
+
|
|
177
|
+
生成的 HTML 报告包含:
|
|
178
|
+
|
|
179
|
+
- **顶部**:股票代码、实时行情(价格/涨跌/PE)、综合评分环形图 + 摘要
|
|
180
|
+
- **6维度评分**:市场情绪/技术面/基本面/资金面/新闻舆情/综合评级(带横向条形图)
|
|
181
|
+
- **可视化图表**:技术面价格区间图、资金面现金流横向条、新闻情感堆叠条
|
|
182
|
+
- **财务数据表**:营收/净利润/ROE/EPS/现金流
|
|
183
|
+
- **全网舆情**:各平台帖子列表(标注来源/点赞/评论)
|
|
184
|
+
- **AI 综合分析报告**:Markdown 渲染为排版良好的 HTML,含公司概况、财务评估、情绪分析、技术简析、投资建议、风险提示
|
|
185
|
+
- **数据来源清单**:每个平台采集状态
|
|
186
|
+
|
|
187
|
+
报告为纯静态 HTML,无外部 JS 依赖,可直接通过浏览器打开或分享。
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## 免责声明
|
|
192
|
+
|
|
193
|
+
本报告由 AI 自动生成,所有分析内容仅供参考,不构成任何投资建议。投资有风险,入市需谨慎。
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "aimoon"
|
|
3
|
+
version = "0.3.0"
|
|
4
|
+
description = "AI-powered A-share stock analysis with multi-platform data collection"
|
|
5
|
+
requires-python = ">=3.12"
|
|
6
|
+
readme = "README.md"
|
|
7
|
+
license = {text = "MIT"}
|
|
8
|
+
authors = [{name = "aimoon", email = "aimoon@users.noreply.github.com"}]
|
|
9
|
+
classifiers = [
|
|
10
|
+
"Development Status :: 3 - Alpha",
|
|
11
|
+
"Environment :: Console",
|
|
12
|
+
"Intended Audience :: Financial and Insurance Industry",
|
|
13
|
+
"License :: OSI Approved :: MIT License",
|
|
14
|
+
"Natural Language :: Chinese (Simplified)",
|
|
15
|
+
"Operating System :: Microsoft :: Windows",
|
|
16
|
+
"Operating System :: POSIX :: Linux",
|
|
17
|
+
"Operating System :: MacOS",
|
|
18
|
+
"Programming Language :: Python :: 3.12",
|
|
19
|
+
"Programming Language :: Python :: 3.13",
|
|
20
|
+
"Topic :: Office/Business :: Financial :: Investment",
|
|
21
|
+
]
|
|
22
|
+
|
|
23
|
+
dependencies = [
|
|
24
|
+
"httpx>=0.28.0",
|
|
25
|
+
"pydantic>=2.10.0",
|
|
26
|
+
"pydantic-settings>=2.7.0",
|
|
27
|
+
"jinja2>=3.1.4",
|
|
28
|
+
"akshare>=1.16.0",
|
|
29
|
+
"pysnowball>=0.1.0",
|
|
30
|
+
"openai>=1.60.0",
|
|
31
|
+
"python-dotenv>=1.0.1",
|
|
32
|
+
"rich>=13.9.0",
|
|
33
|
+
"orjson>=3.10.0",
|
|
34
|
+
"tenacity>=9.0.0",
|
|
35
|
+
"selenium>=4.45.0",
|
|
36
|
+
"playwright>=1.60.0",
|
|
37
|
+
"markdown>=3.10.2",
|
|
38
|
+
]
|
|
39
|
+
|
|
40
|
+
[project.urls]
|
|
41
|
+
Homepage = "https://github.com/aimoon/aimoon"
|
|
42
|
+
Repository = "https://github.com/aimoon/aimoon"
|
|
43
|
+
|
|
44
|
+
[project.optional-dependencies]
|
|
45
|
+
dev = [
|
|
46
|
+
"pytest>=8.3.0",
|
|
47
|
+
"pytest-asyncio>=0.24.0",
|
|
48
|
+
"pytest-cov>=6.0.0",
|
|
49
|
+
"ruff>=0.8.0",
|
|
50
|
+
]
|
|
51
|
+
selenium = ["selenium>=4.45.0"] # 东方财富股吧增强采集
|
|
52
|
+
all = ["selenium", "playwright"]
|
|
53
|
+
|
|
54
|
+
[build-system]
|
|
55
|
+
requires = ["setuptools>=75.0"]
|
|
56
|
+
build-backend = "setuptools.build_meta"
|
|
57
|
+
|
|
58
|
+
[tool.setuptools.packages.find]
|
|
59
|
+
where = ["src"]
|
|
60
|
+
|
|
61
|
+
[project.scripts]
|
|
62
|
+
aimoon = "stock_ai_analyst.main:main"
|
|
63
|
+
|
|
64
|
+
[tool.ruff]
|
|
65
|
+
target-version = "py312"
|
|
66
|
+
line-length = 100
|
|
67
|
+
|
|
68
|
+
[tool.ruff.lint]
|
|
69
|
+
select = ["E", "F", "I", "N", "W", "UP"]
|