marketmyna 0.2.0__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 (344) hide show
  1. marketmyna/__init__.py +14 -0
  2. marketmyna/agent/__init__.py +8 -0
  3. marketmyna/agent/agents.py +543 -0
  4. marketmyna/agent/context.py +69 -0
  5. marketmyna/agent/dashboard.py +55 -0
  6. marketmyna/agent/orchestrator.py +153 -0
  7. marketmyna/agent/sentiment.py +150 -0
  8. marketmyna/agent/skills.py +119 -0
  9. marketmyna/ai/__init__.py +1 -0
  10. marketmyna/ai/portfolio_optimizer.py +330 -0
  11. marketmyna/analysis/__init__.py +6 -0
  12. marketmyna/analysis/fundamental.py +329 -0
  13. marketmyna/analysis/sip_optimizer.py +81 -0
  14. marketmyna/analysis/technical.py +321 -0
  15. marketmyna/api/__init__.py +1 -0
  16. marketmyna/api/app.py +209 -0
  17. marketmyna/api/deps.py +63 -0
  18. marketmyna/api/middlewares/__init__.py +0 -0
  19. marketmyna/api/middlewares/auth.py +116 -0
  20. marketmyna/api/middlewares/csrf.py +66 -0
  21. marketmyna/api/middlewares/error_handler.py +38 -0
  22. marketmyna/api/middlewares/slashes.py +27 -0
  23. marketmyna/api/v1/__init__.py +0 -0
  24. marketmyna/api/v1/endpoints/__init__.py +0 -0
  25. marketmyna/api/v1/endpoints/account.py +166 -0
  26. marketmyna/api/v1/endpoints/agent.py +114 -0
  27. marketmyna/api/v1/endpoints/bot.py +38 -0
  28. marketmyna/api/v1/endpoints/calendar.py +269 -0
  29. marketmyna/api/v1/endpoints/data_sources.py +174 -0
  30. marketmyna/api/v1/endpoints/health.py +10 -0
  31. marketmyna/api/v1/endpoints/listings.py +564 -0
  32. marketmyna/api/v1/endpoints/macro.py +163 -0
  33. marketmyna/api/v1/endpoints/portfolio.py +530 -0
  34. marketmyna/api/v1/endpoints/push.py +119 -0
  35. marketmyna/api/v1/endpoints/reports.py +49 -0
  36. marketmyna/api/v1/endpoints/scheduler.py +219 -0
  37. marketmyna/api/v1/endpoints/stocks.py +400 -0
  38. marketmyna/api/v1/endpoints/system_config.py +157 -0
  39. marketmyna/api/v1/endpoints/thesis.py +112 -0
  40. marketmyna/api/v1/endpoints/trade.py +709 -0
  41. marketmyna/api/v1/endpoints/updates.py +394 -0
  42. marketmyna/api/v1/endpoints/watchlists.py +179 -0
  43. marketmyna/api/v1/router.py +43 -0
  44. marketmyna/bot/__init__.py +14 -0
  45. marketmyna/bot/commands/__init__.py +0 -0
  46. marketmyna/bot/commands/analyze.py +40 -0
  47. marketmyna/bot/commands/ask.py +51 -0
  48. marketmyna/bot/commands/base.py +35 -0
  49. marketmyna/bot/commands/batch.py +53 -0
  50. marketmyna/bot/commands/common.py +84 -0
  51. marketmyna/bot/commands/help.py +43 -0
  52. marketmyna/bot/commands/markets.py +153 -0
  53. marketmyna/bot/commands/portfolio.py +145 -0
  54. marketmyna/bot/commands/research.py +323 -0
  55. marketmyna/bot/commands/status.py +48 -0
  56. marketmyna/bot/commands/trade.py +176 -0
  57. marketmyna/bot/dispatcher.py +95 -0
  58. marketmyna/bot/formatting.py +25 -0
  59. marketmyna/bot/models.py +27 -0
  60. marketmyna/bot/registry.py +50 -0
  61. marketmyna/bot/telegram_listener.py +227 -0
  62. marketmyna/cli/__init__.py +1 -0
  63. marketmyna/cli/scheduled_run.py +292 -0
  64. marketmyna/core/__init__.py +6 -0
  65. marketmyna/core/compliance.py +53 -0
  66. marketmyna/core/config.py +377 -0
  67. marketmyna/core/constants.py +69 -0
  68. marketmyna/core/home.py +22 -0
  69. marketmyna/core/numbers.py +28 -0
  70. marketmyna/core/secret_store.py +104 -0
  71. marketmyna/core/tenant.py +130 -0
  72. marketmyna/data/__init__.py +8 -0
  73. marketmyna/data/base.py +36 -0
  74. marketmyna/data/categories.py +272 -0
  75. marketmyna/data/china.py +360 -0
  76. marketmyna/data/crypto.py +200 -0
  77. marketmyna/data/ecb_fx.py +131 -0
  78. marketmyna/data/extra_sources.py +569 -0
  79. marketmyna/data/india.py +241 -0
  80. marketmyna/data/india_filings.py +343 -0
  81. marketmyna/data/listings.py +1314 -0
  82. marketmyna/data/mutual_funds.py +34 -0
  83. marketmyna/data/news.py +98 -0
  84. marketmyna/data/news_search.py +346 -0
  85. marketmyna/data/nse_deals.py +138 -0
  86. marketmyna/data/resilience.py +173 -0
  87. marketmyna/data/sec_facts.py +252 -0
  88. marketmyna/data/shariah.py +283 -0
  89. marketmyna/data/social/__init__.py +9 -0
  90. marketmyna/data/social/base.py +100 -0
  91. marketmyna/data/social/browser.py +92 -0
  92. marketmyna/data/social/hackernews.py +53 -0
  93. marketmyna/data/social/reddit.py +397 -0
  94. marketmyna/data/social/stocktwits.py +63 -0
  95. marketmyna/data/social/valuepickr.py +53 -0
  96. marketmyna/data/stocks.py +197 -0
  97. marketmyna/data/yahoo_price.py +48 -0
  98. marketmyna/launcher.py +71 -0
  99. marketmyna/llm/__init__.py +33 -0
  100. marketmyna/llm/backend_factory.py +51 -0
  101. marketmyna/llm/backend_registry.py +19 -0
  102. marketmyna/llm/channels.py +447 -0
  103. marketmyna/llm/json_reply.py +63 -0
  104. marketmyna/llm/litellm_backend.py +197 -0
  105. marketmyna/llm/model_catalog.py +166 -0
  106. marketmyna/llm/model_health.py +193 -0
  107. marketmyna/llm/protocol.py +111 -0
  108. marketmyna/llm/providers.py +128 -0
  109. marketmyna/llm/store.py +128 -0
  110. marketmyna/notifiers/__init__.py +35 -0
  111. marketmyna/notifiers/apprise_sender.py +43 -0
  112. marketmyna/notifiers/astrbot.py +47 -0
  113. marketmyna/notifiers/bark.py +24 -0
  114. marketmyna/notifiers/base.py +80 -0
  115. marketmyna/notifiers/dingtalk.py +54 -0
  116. marketmyna/notifiers/discord.py +39 -0
  117. marketmyna/notifiers/dispatcher.py +153 -0
  118. marketmyna/notifiers/email.py +99 -0
  119. marketmyna/notifiers/feishu.py +57 -0
  120. marketmyna/notifiers/googlechat.py +24 -0
  121. marketmyna/notifiers/gotify.py +36 -0
  122. marketmyna/notifiers/matrix.py +28 -0
  123. marketmyna/notifiers/ntfy.py +36 -0
  124. marketmyna/notifiers/pushbullet.py +24 -0
  125. marketmyna/notifiers/pushover.py +41 -0
  126. marketmyna/notifiers/pushplus.py +41 -0
  127. marketmyna/notifiers/serverchan3.py +40 -0
  128. marketmyna/notifiers/settings_schema.py +119 -0
  129. marketmyna/notifiers/signal_messenger.py +25 -0
  130. marketmyna/notifiers/slack.py +36 -0
  131. marketmyna/notifiers/teams.py +37 -0
  132. marketmyna/notifiers/telegram.py +81 -0
  133. marketmyna/notifiers/twilio.py +33 -0
  134. marketmyna/notifiers/webhook.py +44 -0
  135. marketmyna/notifiers/webpush.py +222 -0
  136. marketmyna/notifiers/wechat.py +40 -0
  137. marketmyna/notifiers/whatsapp.py +27 -0
  138. marketmyna/portfolio/__init__.py +6 -0
  139. marketmyna/portfolio/analytics.py +336 -0
  140. marketmyna/portfolio/manager.py +383 -0
  141. marketmyna/portfolio/models.py +155 -0
  142. marketmyna/portfolio/optimizers.py +88 -0
  143. marketmyna/portfolio/review.py +411 -0
  144. marketmyna/services/__init__.py +1 -0
  145. marketmyna/services/accounts.py +278 -0
  146. marketmyna/services/ai_access.py +94 -0
  147. marketmyna/services/analysis_run.py +491 -0
  148. marketmyna/services/big_trades.py +335 -0
  149. marketmyna/services/brokers/__init__.py +0 -0
  150. marketmyna/services/brokers/angel.py +271 -0
  151. marketmyna/services/brokers/finnhub.py +209 -0
  152. marketmyna/services/byok_detect.py +196 -0
  153. marketmyna/services/calendar.py +748 -0
  154. marketmyna/services/central_banks.py +202 -0
  155. marketmyna/services/commodities.py +134 -0
  156. marketmyna/services/compare.py +307 -0
  157. marketmyna/services/cot.py +148 -0
  158. marketmyna/services/country_macro.py +135 -0
  159. marketmyna/services/crude_sensitivity.py +239 -0
  160. marketmyna/services/crypto_mood.py +135 -0
  161. marketmyna/services/crypto_screens.py +226 -0
  162. marketmyna/services/data_export.py +91 -0
  163. marketmyna/services/dcf.py +220 -0
  164. marketmyna/services/dcf_model.py +194 -0
  165. marketmyna/services/delivery.py +142 -0
  166. marketmyna/services/discovery.py +146 -0
  167. marketmyna/services/dividends.py +95 -0
  168. marketmyna/services/earnings.py +305 -0
  169. marketmyna/services/econ_calendar.py +495 -0
  170. marketmyna/services/eia_stocks.py +115 -0
  171. marketmyna/services/estimates.py +109 -0
  172. marketmyna/services/etf.py +236 -0
  173. marketmyna/services/etf_rotation.py +193 -0
  174. marketmyna/services/etf_screens.py +196 -0
  175. marketmyna/services/financials.py +639 -0
  176. marketmyna/services/fund_ai.py +181 -0
  177. marketmyna/services/fund_analytics.py +371 -0
  178. marketmyna/services/fund_cost.py +147 -0
  179. marketmyna/services/fund_holdings.py +664 -0
  180. marketmyna/services/fund_peers.py +247 -0
  181. marketmyna/services/fund_rotation.py +206 -0
  182. marketmyna/services/fund_style.py +179 -0
  183. marketmyna/services/funds.py +70 -0
  184. marketmyna/services/hot_stocks.py +358 -0
  185. marketmyna/services/india_flows.py +263 -0
  186. marketmyna/services/india_rates.py +258 -0
  187. marketmyna/services/investor_lenses.py +271 -0
  188. marketmyna/services/leadership.py +165 -0
  189. marketmyna/services/live_market.py +497 -0
  190. marketmyna/services/live_quotes.py +295 -0
  191. marketmyna/services/macro.py +182 -0
  192. marketmyna/services/market_calendar.py +399 -0
  193. marketmyna/services/market_mood.py +168 -0
  194. marketmyna/services/market_valuation.py +231 -0
  195. marketmyna/services/mf_holdings.py +199 -0
  196. marketmyna/services/mf_insights.py +132 -0
  197. marketmyna/services/mf_lumpsum.py +587 -0
  198. marketmyna/services/mf_portfolio_ai.py +195 -0
  199. marketmyna/services/nse_events.py +98 -0
  200. marketmyna/services/overview.py +366 -0
  201. marketmyna/services/ownership.py +143 -0
  202. marketmyna/services/quality_scores.py +199 -0
  203. marketmyna/services/rates.py +335 -0
  204. marketmyna/services/reconcile.py +343 -0
  205. marketmyna/services/report.py +584 -0
  206. marketmyna/services/report_i18n.py +678 -0
  207. marketmyna/services/rotation.py +224 -0
  208. marketmyna/services/runtime_scheduler.py +548 -0
  209. marketmyna/services/schedule_config.py +251 -0
  210. marketmyna/services/schedule_time.py +39 -0
  211. marketmyna/services/screens.py +398 -0
  212. marketmyna/services/sec_mdna.py +173 -0
  213. marketmyna/services/shariah.py +246 -0
  214. marketmyna/services/sip.py +148 -0
  215. marketmyna/services/sip_days.py +362 -0
  216. marketmyna/services/smart_file.py +595 -0
  217. marketmyna/services/smart_pdf.py +425 -0
  218. marketmyna/services/smart_report.py +370 -0
  219. marketmyna/services/social_sentiment.py +511 -0
  220. marketmyna/services/thesis.py +328 -0
  221. marketmyna/services/translate.py +146 -0
  222. marketmyna/services/valuation.py +173 -0
  223. marketmyna/services/worker_pool.py +149 -0
  224. marketmyna/services/world_markets.py +208 -0
  225. marketmyna/storage.py +722 -0
  226. marketmyna/strategies/README.md +51 -0
  227. marketmyna/strategies/bottom_volume.yaml +49 -0
  228. marketmyna/strategies/box_oscillation.yaml +69 -0
  229. marketmyna/strategies/bull_trend.yaml +49 -0
  230. marketmyna/strategies/chan_theory.yaml +58 -0
  231. marketmyna/strategies/dragon_head.yaml +44 -0
  232. marketmyna/strategies/emotion_cycle.yaml +79 -0
  233. marketmyna/strategies/event_driven.yaml +54 -0
  234. marketmyna/strategies/expectation_repricing.yaml +54 -0
  235. marketmyna/strategies/growth_quality.yaml +54 -0
  236. marketmyna/strategies/hot_theme.yaml +54 -0
  237. marketmyna/strategies/ma_golden_cross.yaml +46 -0
  238. marketmyna/strategies/one_yang_three_yin.yaml +37 -0
  239. marketmyna/strategies/shrink_pullback.yaml +46 -0
  240. marketmyna/strategies/volume_breakout.yaml +47 -0
  241. marketmyna/strategies/wave_theory.yaml +64 -0
  242. marketmyna/trading/__init__.py +2 -0
  243. marketmyna/trading/alerts.py +356 -0
  244. marketmyna/trading/backtest.py +317 -0
  245. marketmyna/trading/charges.py +82 -0
  246. marketmyna/trading/chart.py +197 -0
  247. marketmyna/trading/indicators.py +303 -0
  248. marketmyna/trading/journal.py +74 -0
  249. marketmyna/trading/knn.py +164 -0
  250. marketmyna/trading/lots.py +109 -0
  251. marketmyna/trading/market_hours.py +66 -0
  252. marketmyna/trading/options.py +554 -0
  253. marketmyna/trading/pairs.py +94 -0
  254. marketmyna/trading/risk.py +170 -0
  255. marketmyna/trading/scanner.py +500 -0
  256. marketmyna/trading/volatility.py +163 -0
  257. marketmyna/utils/__init__.py +1 -0
  258. marketmyna/utils/deadline.py +36 -0
  259. marketmyna/utils/log_redact.py +52 -0
  260. marketmyna/utils/yahoo_gate.py +183 -0
  261. marketmyna/utils/yf_lock.py +12 -0
  262. marketmyna/web/apple-touch-icon.png +0 -0
  263. marketmyna/web/assets/Account-CA9NFDKO.js +1 -0
  264. marketmyna/web/assets/Analyze-uM0srB_U.js +7 -0
  265. marketmyna/web/assets/AreaChart-2i67V6Jf.js +1 -0
  266. marketmyna/web/assets/BarChart-_yngarVl.js +3 -0
  267. marketmyna/web/assets/Bot-E4gpf1qZ.js +1 -0
  268. marketmyna/web/assets/CandleChart-CioqTqMV.js +1 -0
  269. marketmyna/web/assets/Compare-D6_2CPl4.js +1 -0
  270. marketmyna/web/assets/ExportMenu-DaZ1xVmW.js +1 -0
  271. marketmyna/web/assets/LineChart-BaOkD1Ta.js +57 -0
  272. marketmyna/web/assets/Markets-BMw_M1sJ.js +1 -0
  273. marketmyna/web/assets/Portfolio-DQEdHVc2.js +1 -0
  274. marketmyna/web/assets/ReportView-BzhdcqSh.js +1 -0
  275. marketmyna/web/assets/Scheduler-I9PDKxTd.js +1 -0
  276. marketmyna/web/assets/Settings-DpXfHolW.js +3 -0
  277. marketmyna/web/assets/SipDays-C9q3bNSx.js +1 -0
  278. marketmyna/web/assets/SymbolSearch-CBOVPEk1.js +1 -0
  279. marketmyna/web/assets/Trade-_CM7HC4H.js +2 -0
  280. marketmyna/web/assets/TradeChart-ZjsycacC.js +1 -0
  281. marketmyna/web/assets/WatchButton-ComYW56_.js +1 -0
  282. marketmyna/web/assets/Watchlist-DAjLb0jd.js +1 -0
  283. marketmyna/web/assets/app-BP1o7WZS.js +1 -0
  284. marketmyna/web/assets/app-BkIUKdld.js +1 -0
  285. marketmyna/web/assets/app-CKeSYhEt.js +1 -0
  286. marketmyna/web/assets/app-CN1OERYX.js +1 -0
  287. marketmyna/web/assets/app-DIQllha5.js +1 -0
  288. marketmyna/web/assets/app-DeiAW0tX.js +1 -0
  289. marketmyna/web/assets/br-Cu5YU29T.svg +45 -0
  290. marketmyna/web/assets/browser-CR-ks2Fp.js +19 -0
  291. marketmyna/web/assets/browser-D5K_K_gj.js +1 -0
  292. marketmyna/web/assets/common-0wvpAVpd.js +1 -0
  293. marketmyna/web/assets/common-3ghy53Us.js +1 -0
  294. marketmyna/web/assets/common-Bib2unjX.js +1 -0
  295. marketmyna/web/assets/common-BvSJP0w_.js +1 -0
  296. marketmyna/web/assets/common-CSfyC0Sp.js +1 -0
  297. marketmyna/web/assets/common-C_t-iZPf.js +1 -0
  298. marketmyna/web/assets/compare-DMcsx70H.js +1 -0
  299. marketmyna/web/assets/es-d5m8M5h8.svg +544 -0
  300. marketmyna/web/assets/exporter-DiMg2O5d.js +3 -0
  301. marketmyna/web/assets/files-CpgiZRbN.js +1 -0
  302. marketmyna/web/assets/format-d8InM0Zw.js +9 -0
  303. marketmyna/web/assets/html2canvas-Bw0OShmD.js +5 -0
  304. marketmyna/web/assets/index-CKAnq-Or.js +12 -0
  305. marketmyna/web/assets/index-D4U8E6LH.css +2 -0
  306. marketmyna/web/assets/index.es-iBEw7jOv.js +5 -0
  307. marketmyna/web/assets/ir-cCIgaNf6.svg +219 -0
  308. marketmyna/web/assets/jspdf.es.min-C4285IdL.js +79 -0
  309. marketmyna/web/assets/jspdf.plugin.autotable-2eOJeXl-.js +2 -0
  310. marketmyna/web/assets/lightweight-charts.production-BF2noug5.js +1 -0
  311. marketmyna/web/assets/listings-BefgXpb1.js +1 -0
  312. marketmyna/web/assets/liveQuotes-CtSmCUFA.js +1 -0
  313. marketmyna/web/assets/markets-BI4AhI9W.js +1 -0
  314. marketmyna/web/assets/markets-BUHUdYpT.js +1 -0
  315. marketmyna/web/assets/markets-BqvN1Bvf.js +1 -0
  316. marketmyna/web/assets/markets-DPO40TTe.js +1 -0
  317. marketmyna/web/assets/markets-bsiPo-Tk.js +1 -0
  318. marketmyna/web/assets/markets-ff1e792u.js +1 -0
  319. marketmyna/web/assets/montecarlo-BsNlH2qe.js +1 -0
  320. marketmyna/web/assets/options-BYAZnwzW.js +1 -0
  321. marketmyna/web/assets/preload-helper-BLdHbfdN.js +1 -0
  322. marketmyna/web/assets/purify.es-Dqk5qvad.js +3 -0
  323. marketmyna/web/assets/rolldown-runtime-XKyaHtl9.js +1 -0
  324. marketmyna/web/assets/sa-Dh79zbT9.svg +25 -0
  325. marketmyna/web/assets/toast-DDradTZw.js +1 -0
  326. marketmyna/web/assets/trade-fndw1Ql3.js +1 -0
  327. marketmyna/web/assets/ui-gsFb8B2m.js +1 -0
  328. marketmyna/web/assets/watchlists-B6YqwUIk.js +1 -0
  329. marketmyna/web/brand/logo-mark.webp +0 -0
  330. marketmyna/web/favicon.png +0 -0
  331. marketmyna/web/icon-192.png +0 -0
  332. marketmyna/web/icon-512.png +0 -0
  333. marketmyna/web/index.html +34 -0
  334. marketmyna/web/manifest.webmanifest +28 -0
  335. marketmyna/web/robots.txt +2 -0
  336. marketmyna/web/sw.js +40 -0
  337. marketmyna/web/theme-init.js +37 -0
  338. marketmyna-0.2.0.dist-info/METADATA +345 -0
  339. marketmyna-0.2.0.dist-info/RECORD +344 -0
  340. marketmyna-0.2.0.dist-info/WHEEL +5 -0
  341. marketmyna-0.2.0.dist-info/entry_points.txt +2 -0
  342. marketmyna-0.2.0.dist-info/licenses/LICENSE +202 -0
  343. marketmyna-0.2.0.dist-info/licenses/NOTICE +22 -0
  344. marketmyna-0.2.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,51 @@
1
+ # Strategy / skill library
2
+
3
+ These 15 YAML files are adapted from daily_stock_analysis's own `strategies/`
4
+ directory. Each describes one trading-analysis strategy as a schema
5
+ (`name`, `display_name`, `description`, `category`, `core_rules`,
6
+ `required_tools`, `aliases`, `default_priority`, `market_regimes`) plus an
7
+ `instructions:` markdown block meant to be injected verbatim as an LLM
8
+ system-prompt fragment for a `SkillAgent` (see `src/agent/skills.py`).
9
+
10
+ ## What changed from the source files
11
+
12
+ Only `required_tools` was remapped — every other field, and the entire
13
+ `instructions` block, is unchanged from the original (the instructions are
14
+ domain knowledge about reading a golden cross, Chan theory pivots, etc, not
15
+ code; rewriting that prose from scratch would be worse than adapting it).
16
+
17
+ The source project's `required_tools` names its own tool-calling agent
18
+ runtime's tools. MarketMyna doesn't have a tool-calling runtime yet — the
19
+ technical/risk agents call analysis modules directly (see
20
+ `src/agent/agents.py`). So each tool name was mapped to the closest thing
21
+ that actually exists today, or marked `pending:` when nothing does:
22
+
23
+ | Source tool name | Mapped to | Why |
24
+ |------------------------|------------------------|-----|
25
+ | `get_daily_history` | `fetch_history` | `DataFetcher.get_history` — real, already called by `TechnicalAgent`/`RiskAgent` |
26
+ | `analyze_trend` | `technical_summary` | `TechnicalAnalyzer.get_summary()` — real, lands on `ctx.technical_summary` |
27
+ | `get_realtime_quote` | `fetch_quote` | `DataFetcher.get_quote` — real |
28
+ | `get_stock_info` | `fetch_info` | `DataFetcher.get_info` + `FundamentalAnalyzer` — real |
29
+ | `search_stock_news` | `pending:search_stock_news` | No news-search API/tool configured (same scope cut as Phase 3b's missing IntelAgent) |
30
+ | `get_sector_rankings` | `pending:get_sector_rankings` | No sector-ranking data source exists in `src/data/` yet |
31
+
32
+ A `pending:` prefix means: this strategy's full instructions assume a
33
+ capability MarketMyna doesn't have wired up yet. The strategy still loads
34
+ and can still run — `SkillAgent` hands the LLM whatever real context is
35
+ available (price history, technical summary, quote, fundamentals) plus the
36
+ skill's instructions; the LLM just won't have a real news/sector feed to
37
+ draw on for strategies that call for one. It is not silently pretending to
38
+ have that data.
39
+
40
+ Two files (`bull_trend.yaml`, `shrink_pullback.yaml`) also carry
41
+ `default_active`/`default_router` flags from the source project (marking
42
+ that strategy as the fallback default route there) — preserved as-is on
43
+ the `Skill` dataclass, not currently used for any routing decision in
44
+ `select_skills()`.
45
+
46
+ Inline tool-name mentions inside the `instructions:` prose itself (e.g.
47
+ "使用 `analyze_trend` 判断...") were **not** rewritten — only the structured
48
+ `required_tools:` list was remapped. Renaming names inside expert
49
+ trading-strategy prose would require rewriting that prose, which is out of
50
+ scope here; a human reading the instructions will still understand the
51
+ intent.
@@ -0,0 +1,49 @@
1
+ # Bottom Volume Surge Strategy / 底部放量
2
+ # After extended decline, price stabilizes and volume spikes. Potential reversal.
3
+
4
+ name: bottom_volume
5
+ display_name: 底部放量
6
+ description: 检测长期下跌后底部放量信号,潜在趋势反转信号。
7
+ category: reversal
8
+ core_rules: [2, 5]
9
+ required_tools:
10
+ - fetch_history
11
+ - technical_summary
12
+ aliases: [地量见底, 底部放量]
13
+ default_priority: 60
14
+ market_regimes: [trending_down]
15
+
16
+ instructions: |
17
+ **底部放量(Bottom Volume Surge Strategy)**
18
+
19
+ 反转判定标准:
20
+
21
+ 1. **持续下跌确认**:
22
+ - 使用 `get_daily_history`(30日)。
23
+ - 股价从 20 日高点到近期低点跌幅 > 15%。
24
+ - `analyze_trend` → trend_status 应为 BEAR 或 STRONG_BEAR。
25
+
26
+ 2. **量能异动**:
27
+ - 当日成交量 > 5 日均量的 3 倍。
28
+ - 使用 `get_realtime_quote` → volume_ratio > 3.0。
29
+ - 该异动应出现在前期极度缩量之后。
30
+
31
+ 3. **价格企稳**:
32
+ - 当日K线收阳(收盘价 > 开盘价)。
33
+ - 价格守住近期低点。
34
+ - 最好出现长下影线,显示买方支撑。
35
+
36
+ 4. **确认因素**(关联理念5:风险排查):
37
+ - 通过 `search_stock_news` 确认是否有基本面催化。
38
+ - 筹码分布:平均成本接近现价(成本收敛)。
39
+
40
+ 5. **风险提示**(关联理念2:趋势交易):
41
+ - 这是反转信号,风险高于趋势跟踪。
42
+ - 仓位建议较小(最多 2-3 成)。
43
+ - 止损必须严格(设在近期低点下方)。
44
+
45
+ 评分调整:
46
+ - 底部放量确认:sentiment_score +8
47
+ - 配合阳线 + 新闻催化:额外 +5
48
+ - 在 `buy_reason` 和 `pattern_analysis` 中注明"底部放量"。
49
+ - 止损设在近期低点。
@@ -0,0 +1,69 @@
1
+ # Box Range Trading Strategy / 箱体震荡战法
2
+ # Buy at box support, sell at box resistance, profit from range-bound oscillation.
3
+
4
+ name: box_oscillation
5
+ display_name: 箱体震荡
6
+ description: 识别价格箱体区间,在箱底买入、箱顶减仓,适用于横盘震荡行情。
7
+ category: framework
8
+ core_rules: [1, 2, 3]
9
+ required_tools:
10
+ - fetch_history
11
+ - technical_summary
12
+ - fetch_quote
13
+ aliases: [箱体, 箱体震荡]
14
+ default_priority: 50
15
+ market_regimes: [sideways]
16
+
17
+ instructions: |
18
+ **箱体震荡战法(Box Range Trading Strategy)**
19
+
20
+ 核心逻辑:箱体内部价格在阻力位与支撑位之间反复震荡,
21
+ "贴着支撑买、接近阻力卖",通过波段操作获取区间收益。
22
+
23
+ ## 分析步骤
24
+
25
+ ### 1. 箱体识别
26
+ 使用 `get_daily_history` 获取近 60~120 日数据:
27
+
28
+ - **箱体顶部(阻力位)**:近期多次触碰但未有效突破的高点连线。
29
+ 通常为 20~60 日内3次以上的高点聚集区域。
30
+ - **箱体底部(支撑位)**:近期多次下探但未有效跌破的低点连线。
31
+ - 箱体有效性:顶部和底部各至少触碰 2~3 次方可确认。
32
+ - 使用 `analyze_trend` 的 support_levels / resistance_levels 辅助定位。
33
+
34
+ ### 2. 当前位置判断
35
+ 使用 `get_realtime_quote` 获取现价,与箱体边界对比:
36
+
37
+ - **箱底区域**(距支撑 ≤5%):买入/加仓信号,止损设箱底下方 3%。
38
+ - **箱中区域**(箱体中间 1/3):观望,不主动操作。
39
+ - **箱顶区域**(距阻力 ≤5%):减仓/止盈信号,无需追高。
40
+
41
+ ### 3. 量能辅助判断
42
+ - **箱底放量企稳**:支撑有效的强信号,可较重仓。
43
+ - **箱顶缩量滞涨**:阻力有效的卖出信号。
44
+ - **箱体突破(放量超过均量2倍以上)**:
45
+ - 向上有效突破 → 转为多头趋势策略,新目标 = 箱体高度延伸。
46
+ - 向下有效跌破 → 离场等待,原支撑转阻力。
47
+
48
+ ### 4. 箱体宽度与预期收益
49
+ - 计算箱体宽度:(顶部 - 底部) / 底部 × 100%。
50
+ - 宽度 < 5%:操作空间过小,不建议参与。
51
+ - 宽度 5%~15%:标准箱体,波段操作可行。
52
+ - 宽度 > 15%:大箱体,可做更大波段。
53
+
54
+ ### 5. 假突破识别
55
+ - 单日盘中触及阻力/支撑后快速回撤,收盘回到箱内 → 假突破,维持箱体操作。
56
+ - 连续两日收盘突破箱体边界,且量能放大 → 真突破,修改策略。
57
+
58
+ ### 6. 输出要求
59
+ - 明确给出箱体顶部价位和底部价位。
60
+ - 当前价格所处区间(箱底/箱中/箱顶)。
61
+ - 若价格已突破,说明突破方向及新目标。
62
+ - 建议仓位与止损位。
63
+
64
+ 评分调整建议:
65
+ - 箱底企稳 + 缩量:`sentiment_score +10`
66
+ - 箱底放量攻顶:`sentiment_score +12`
67
+ - 箱体向上有效突破:`sentiment_score +15,转趋势策略`
68
+ - 处于箱顶区域:`sentiment_score -5(不追高)`
69
+ - 箱底有效跌破:`sentiment_score -15,离场`
@@ -0,0 +1,49 @@
1
+ # Default Bull Trend Strategy / 默认多头趋势
2
+
3
+ name: bull_trend
4
+ display_name: 默认多头趋势
5
+ description: 默认个股分析优先策略,识别多头排列、趋势延续与回踩低吸机会。
6
+ category: trend
7
+ core_rules: [1, 2, 3]
8
+ required_tools:
9
+ - fetch_history
10
+ - technical_summary
11
+ aliases: [趋势, 趋势分析, 多头趋势]
12
+ default_active: true
13
+ default_router: true
14
+ default_priority: 10
15
+ market_regimes: [trending_up]
16
+
17
+ instructions: |
18
+ **默认多头趋势(Default Bull Trend Strategy)**
19
+
20
+ 适用场景:
21
+ - 常规个股分析的默认策略。
22
+ - 优先寻找“趋势向上 + 风险可控 + 不追高”的机会。
23
+
24
+ 分析框架:
25
+
26
+ 1. **趋势确认(优先级最高)**
27
+ - 使用 `analyze_trend` 判断 MA5/MA10/MA20 排列。
28
+ - MA5 >= MA10 >= MA20 且 MA20 斜率向上,视为多头结构。
29
+ - 若价格显著跌破 MA20,则降低看多权重。
30
+
31
+ 2. **位置与节奏**
32
+ - 优先“回踩不破”而非“高位追涨”。
33
+ - 当价格距离 MA5/MA10 过远时,提示等待回踩。
34
+ - 放量突破有效阻力时可提高胜率评级。
35
+
36
+ 3. **量价验证**
37
+ - 使用 `get_daily_history` 检查突破日/反弹日是否放量。
38
+ - 缩量上涨需谨慎,放量滞涨需警惕分歧。
39
+
40
+ 4. **交易建议输出**
41
+ - 输出明确的“买入/观望/减仓”倾向及触发条件。
42
+ - 必须给出止损参考(如 MA20 下方或结构低点)。
43
+ - 若无清晰优势,明确写“暂不出手”,避免过度交易。
44
+
45
+ 评分调整建议:
46
+ - 多头排列 + 趋势强度良好:`sentiment_score +12`
47
+ - 回踩关键均线后企稳:`sentiment_score +8`
48
+ - 放量突破关键阻力:`sentiment_score +10`
49
+ - 跌破 MA20 或趋势转弱:`sentiment_score -12`
@@ -0,0 +1,58 @@
1
+ # Chan Theory Strategy / 缠论
2
+ # Based on Zen channel theory: pen, stroke, segment, hub structure analysis.
3
+
4
+ name: chan_theory
5
+ display_name: 缠论
6
+ description: 基于缠论笔、线段、中枢结构,判断趋势级别、买卖点与背驰信号。
7
+ category: framework
8
+ core_rules: [1, 2, 3, 4]
9
+ required_tools:
10
+ - fetch_history
11
+ - technical_summary
12
+ - fetch_quote
13
+ aliases: [缠论, 缠论分析]
14
+ default_priority: 70
15
+ market_regimes: [volatile]
16
+
17
+ instructions: |
18
+ **缠论(Chan Theory / Zen Channel Theory)**
19
+
20
+ 核心框架:分型 → 笔 → 线段 → 中枢 → 趋势
21
+
22
+ ## 分析步骤
23
+
24
+ ### 1. 判断价格结构(中枢识别)
25
+ - 使用 `get_daily_history` 获取近 60 日日线数据。
26
+ - 识别近期价格的高低点序列,判断当前是否在
27
+ **震荡中枢**(1个以上中枢)还是**趋势段**(脱离中枢向上/向下)。
28
+ - 中枢:连续3段走势重叠区间,价格在此区间反复震荡。
29
+ - 趋势:连续3个同级别中枢均向同一方向移动。
30
+
31
+ ### 2. 背驰判断(最高优先级信号)
32
+ - **顶背驰**:价格创新高但MACD红柱面积缩小 → 卖出/减仓信号。
33
+ - **底背驰**:价格创新低但MACD绿柱面积缩小 → 买入/加仓信号。
34
+ - 使用 `analyze_trend` 获取 MACD 数据,与价格高低点对比。
35
+
36
+ ### 3. 买卖点判定
37
+ - **一买**(最强):下跌趋势中,最后一个中枢出现底背驰。
38
+ - **二买**:离开下跌中枢后的第一次回调不破中枢高点。
39
+ - **三买**:中枢震荡后向上突破(不回中枢内)。
40
+ - **一卖/二卖/三卖**:对称结构,方向相反。
41
+ - 当前价格所处的买卖点级别决定仓位大小。
42
+
43
+ ### 4. 级别与仓位
44
+ - 日线级别买卖点可用较重仓位 (30-50%)。
45
+ - 周线级别买卖点可用较大仓位 (50-80%)。
46
+ - 多级别共振(日线+周线同方向)时信号最强。
47
+
48
+ ### 5. 输出要求
49
+ - 明确说明当前处于:上涨趋势/下跌趋势/中枢震荡。
50
+ - 指出是否存在背驰信号及背驰级别。
51
+ - 给出当前买卖点类型(一买/二买/三买 等),若无则写"暂无明确买卖点"。
52
+ - 止损设于前低(买入时)或前高(卖出时)。
53
+
54
+ 评分调整建议:
55
+ - 底背驰 + 一买信号:`sentiment_score +15`
56
+ - 二买/三买共振:`sentiment_score +10`
57
+ - 中枢震荡无明确方向:`sentiment_score 维持基准`
58
+ - 顶背驰 / 趋势向下:`sentiment_score -15`
@@ -0,0 +1,44 @@
1
+ # Dragon Head Strategy / 龙头策略
2
+ # Identifies sector leaders during sector rotation cycles.
3
+
4
+ name: dragon_head
5
+ display_name: 龙头策略
6
+ description: 板块轮动中识别龙头股。适用于板块启动或行业催化剂出现时。
7
+ category: trend
8
+ core_rules: [2, 7]
9
+ required_tools:
10
+ - fetch_quote
11
+ - pending:get_sector_rankings
12
+ - pending:search_stock_news
13
+ aliases: [龙头, 龙头战法]
14
+ default_priority: 90
15
+ market_regimes: [sector_hot]
16
+
17
+ instructions: |
18
+ **龙头策略(Dragon Head Strategy)**
19
+
20
+ 评估标准:
21
+
22
+ 1. **板块领涨地位**:
23
+ - 使用 `get_sector_rankings` 检查该股所在板块是否为近期涨幅前列。
24
+ - 确认该股是否在板块启动周期中率先上涨或涨停。
25
+
26
+ 2. **换手率与动能**(关联理念7:强势趋势股放宽):
27
+ - 使用 `get_realtime_quote` 检查换手率。龙头股换手率通常 > 5%。
28
+ - 量比 > 1.5 说明有活跃的交易兴趣。
29
+
30
+ 3. **相对强度**:
31
+ - 对比个股涨跌幅与板块平均值。
32
+ - 真正的龙头在上涨日应跑赢板块 2% 以上。
33
+
34
+ 4. **新闻催化**:
35
+ - 使用 `search_stock_news` 搜索板块级催化剂(政策、事件、业绩)。
36
+ - 龙头行情常伴随板块整体催化。
37
+
38
+ 5. **乖离率检查**(关联理念1:严进策略):
39
+ - 龙头股可适当放宽乖离率至 7%,但超过 10% 仍需谨慎。
40
+
41
+ 评分调整:
42
+ - 确认为龙头股:sentiment_score +10
43
+ - 板块正处于主动轮动期:额外 +5
44
+ - 在 `buy_reason` 中注明"龙头策略"判断结果。
@@ -0,0 +1,79 @@
1
+ # Sentiment Cycle Strategy / 情绪周期
2
+ # Uses market sentiment, turnover rate and volume pattern to time entries against crowd behavior.
3
+
4
+ name: emotion_cycle
5
+ display_name: 情绪周期
6
+ description: 基于市场情绪、换手率与量价结构,识别情绪低点(恐慌底)与情绪高点(狂热顶),逆情绪布局。
7
+ category: framework
8
+ core_rules: [1, 2, 3, 5]
9
+ required_tools:
10
+ - fetch_history
11
+ - fetch_quote
12
+ - technical_summary
13
+ - pending:search_stock_news
14
+ aliases: [情绪, 情绪周期]
15
+ default_priority: 100
16
+ market_regimes: [sector_hot]
17
+
18
+ instructions: |
19
+ **情绪周期策略(Sentiment Cycle Strategy)**
20
+
21
+ 核心哲学:市场参与者的情绪在"恐慌→悲观→怀疑→希望→乐观→兴奋→贪婪→狂热"
22
+ 之间循环。聪明钱在恐慌底部布局,在狂热顶部离场。
23
+
24
+ ## 情绪阶段量化指标
25
+
26
+ ### 第一步:换手率分析(情绪热度核心指标)
27
+ 使用 `get_daily_history` 和 `get_realtime_quote`:
28
+
29
+ - **换手率 < 0.5%/日**:市场冷淡,无人关注,潜在底部区域(贪婪时买入别人的恐慌)。
30
+ - **换手率 0.5%~2%**:正常交投,情绪平稳。
31
+ - **换手率 2%~5%**:活跃,市场开始关注,不宜追高。
32
+ - **换手率 > 5%**:高热度,游资/散户涌入,警惕情绪顶。
33
+ - **换手率 > 10%(日均)**:极度过热,通常为短期顶部。
34
+
35
+ ### 第二步:连续换手率走势
36
+ 使用 `get_daily_history` 计算近 20 日换手率走势:
37
+ - 由高向低(持续降温)+ 成交量萎缩 → 情绪退潮,耐心等待。
38
+ - 由低向高(加速升温)+ 成交量陡增 → 情绪启动,可介入。
39
+ - 突然单日暴量(换手率超过前期5倍)→ 往往是主力出货,需警惕。
40
+
41
+ ### 第三步:新闻情绪面分析
42
+ 使用 `search_stock_news` 搜索近期新闻,分析情绪倾向:
43
+ - 新闻集中出现"利好兑现、业绩超预期、涨停板、机构推荐"等 → 情绪可能过热。
44
+ - 新闻集中出现"业绩下滑、利空、跌破支撑" → 悲观情绪可能造就底部。
45
+ - 散户论坛/社交媒体情绪极端负面 → 反向指标,可能接近底部。
46
+
47
+ ### 第四步:均线收缩与波动率
48
+ 使用 `analyze_trend`:
49
+ - MA5/MA10/MA20 三线粘合(均线收缩)→ 蓄势,方向待定,情绪冷淡。
50
+ - 波动率降至低位(ATR 萎缩)→ 情绪极度低迷,蓄势爆发前兆。
51
+
52
+ ## 情绪底部特征(买入区)
53
+ 满足以下3项以上:
54
+ ✅ 近20日換手率处于近一年低位
55
+ ✅ 成交量持续萎缩,低于近60日均量50%以上
56
+ ✅ 近期新闻以低调、中性或负面为主
57
+ ✅ 股价在MA20附近或以下,但未出现恐慌性暴跌
58
+ ✅ 机构持仓稳定或小幅增加(如有数据)
59
+
60
+ ## 情绪顶部特征(减仓区)
61
+ 满足以下3项以上:
62
+ ⚠️ 近5日换手率 > 近20日均值的2倍
63
+ ⚠️ 成交量脉冲式放大(单日)
64
+ ⚠️ 新闻以利好兑现、机构目标价大幅上调、散户追捧为主
65
+ ⚠️ 股价偏离MA5超过8%(高乖离率)
66
+ ⚠️ MACD 出现顶背离
67
+
68
+ ## 输出要求
69
+ - 当前情绪阶段判断:冷淡底部 / 平稳 / 升温介入 / 过热警惕 / 狂热顶部。
70
+ - 当前换手率与近一年换手率均值对比。
71
+ - 是否满足情绪底部或顶部特征(列出满足条项)。
72
+ - 给出逆情绪操作建议(大众恐慌我贪婪,大众贪婪我谨慎)。
73
+
74
+ 评分调整建议:
75
+ - 情绪底部特征满足3项以上:`sentiment_score +14`
76
+ - 情绪底部特征满足全部5项:`sentiment_score +20`
77
+ - 情绪顶部特征满足3项以上:`sentiment_score -12`
78
+ - 情绪顶部特征满足全部5项:`sentiment_score -20`
79
+ - 情绪平稳区间:不调整基础分
@@ -0,0 +1,54 @@
1
+ # Event Driven Strategy / 事件驱动
2
+
3
+ name: event_driven
4
+ display_name: 事件驱动
5
+ description: 围绕业绩、政策、并购、订单、产品发布等事件,评估催化强度、兑现概率和风险边界。
6
+ category: framework
7
+ core_rules: [3, 5]
8
+ required_tools:
9
+ - pending:search_stock_news
10
+ - fetch_quote
11
+ - technical_summary
12
+ aliases: [事件驱动, 催化, 催化事件]
13
+ default_priority: 45
14
+ market_regimes: [sector_hot, volatile]
15
+
16
+ instructions: |
17
+ **事件驱动策略(Event Driven Strategy)**
18
+
19
+ 适用场景:
20
+ - 公司或行业出现明确事件催化,如业绩预告、订单中标、并购重组、政策落地、产品发布、监管处罚、诉讼等。
21
+ - 需要判断事件是短期交易催化、长期基本面改善,还是利好兑现。
22
+
23
+ 分析框架:
24
+
25
+ 1. **事件分类**
26
+ - 使用 `search_stock_news` 梳理近期关键事件。
27
+ - 将事件分为:业绩类、政策类、订单/产品类、资本运作类、监管/风险类。
28
+ - 明确事件发生时间,过期或时间未知的信息不能作为主要依据。
29
+
30
+ 2. **影响路径**
31
+ - 判断事件影响的是收入、利润率、估值、融资能力、市场份额,还是仅影响情绪。
32
+ - 对重大订单或政策利好,要说明兑现周期和不确定性。
33
+ - 对监管、减持、处罚、诉讼等事件,风险优先。
34
+
35
+ 3. **市场反应**
36
+ - 使用 `get_realtime_quote` 和 `analyze_trend` 判断事件是否已被价格充分反映。
37
+ - 放量上涨但未过关键阻力,可等待确认。
38
+ - 高位放量滞涨或利好后冲高回落,应警惕兑现压力。
39
+
40
+ 4. **交易计划**
41
+ - 事件未兑现前,强调仓位控制和时间窗口。
42
+ - 事件兑现后,重新评估是否从“预期交易”切换为“业绩验证”。
43
+ - 对负面事件,先看风险释放是否充分,再考虑反弹。
44
+
45
+ 输出要求:
46
+ - 明确事件性质:利好 / 利空 / 中性 / 不确定。
47
+ - 给出事件可信度、兑现周期、已反映程度。
48
+ - 操作建议必须包含失效条件,如公告不及预期、跌破关键支撑或事件热度消退。
49
+
50
+ 评分调整建议:
51
+ - 高可信正向事件且价格尚未充分反映:`sentiment_score +14`
52
+ - 正向事件已大幅兑现:`sentiment_score -6`
53
+ - 负面事件仍在发酵:`sentiment_score -15`
54
+ - 事件影响不清晰或信息冲突:维持中性并降低置信度
@@ -0,0 +1,54 @@
1
+ # Expectation Repricing Strategy / 预期重估
2
+
3
+ name: expectation_repricing
4
+ display_name: 预期重估
5
+ description: 分析业绩预期、政策预期和估值预期的变化,寻找预期差修复或预期过热后的回落风险。
6
+ category: framework
7
+ core_rules: [3, 5, 6]
8
+ required_tools:
9
+ - pending:search_stock_news
10
+ - fetch_info
11
+ - fetch_quote
12
+ - technical_summary
13
+ aliases: [预期, 预期差, 预期重估]
14
+ default_priority: 65
15
+ market_regimes: [volatile, sector_hot]
16
+
17
+ instructions: |
18
+ **预期重估策略(Expectation Repricing Strategy)**
19
+
20
+ 适用场景:
21
+ - 市场对公司业绩、政策、行业景气、估值中枢或竞争格局的预期正在变化。
22
+ - 需要判断当前价格反映的是“预期修复”“预期落空”还是“预期过热”。
23
+
24
+ 分析框架:
25
+
26
+ 1. **预期来源**
27
+ - 使用 `search_stock_news` 识别近期改变市场预期的信息:业绩预告、机构观点、订单、政策、产品进展、行业数据。
28
+ - 区分硬信息(公告、财报、订单)和软信息(传闻、观点、情绪)。
29
+
30
+ 2. **预期差方向**
31
+ - 正向预期差:市场原本悲观,新增信息显示业务或业绩好于预期。
32
+ - 负向预期差:市场原本乐观,新增信息低于预期或验证失败。
33
+ - 若信息已经被连续大涨充分反映,需要提示预期兑现风险。
34
+
35
+ 3. **估值重估**
36
+ - 使用 PE/PB、市值、ROE、现金流等字段判断估值重估是否有基本面支撑。
37
+ - 估值提升需要匹配盈利质量、增长持续性和行业空间。
38
+ - 估值回落时,观察是否由一次性扰动还是长期逻辑变化导致。
39
+
40
+ 4. **价格确认**
41
+ - 使用 `analyze_trend` 判断预期变化是否已经转化为趋势。
42
+ - 放量突破可视为预期被资金确认;缩量反弹则更偏修复观察。
43
+ - 高位放量滞涨、利好不涨或跌破关键支撑,可能意味着预期转弱。
44
+
45
+ 输出要求:
46
+ - 明确当前是:正向预期差 / 预期兑现 / 负向预期差 / 预期不明。
47
+ - 说明哪些信息改变了市场预期,哪些仍待验证。
48
+ - 给出观察点:下一份财报、订单兑现、政策落地、估值回落或技术确认。
49
+
50
+ 评分调整建议:
51
+ - 正向预期差且价格尚未充分反映:`sentiment_score +15`
52
+ - 正向预期差已被连续大涨兑现:`sentiment_score -5`
53
+ - 负向预期差或核心假设被证伪:`sentiment_score -15`
54
+ - 信息不充分但存在潜在修复:维持中性并降低置信度
@@ -0,0 +1,54 @@
1
+ # Growth Quality Strategy / 成长质量
2
+
3
+ name: growth_quality
4
+ display_name: 成长质量
5
+ description: 结合收入利润增长、ROE、现金流和行业空间,识别高质量成长股与成长失速风险。
6
+ category: framework
7
+ core_rules: [2, 3, 5]
8
+ required_tools:
9
+ - fetch_info
10
+ - fetch_quote
11
+ - pending:search_stock_news
12
+ - technical_summary
13
+ aliases: [成长, 成长股, 成长质量]
14
+ default_priority: 55
15
+ market_regimes: [trending_up]
16
+
17
+ instructions: |
18
+ **成长质量策略(Growth Quality Strategy)**
19
+
20
+ 适用场景:
21
+ - 关注公司中长期成长能力,而不是只看短线技术形态。
22
+ - 适合高景气行业、业绩持续改善或商业模式扩张阶段的公司。
23
+
24
+ 分析框架:
25
+
26
+ 1. **成长性**
27
+ - 优先查看财报字段中的营业收入、归母净利润、经营现金流和 ROE。
28
+ - 判断收入增长和利润增长是否同向,是否存在“增收不增利”。
29
+ - 若只有概念热度但财报尚未验证,应降低成长确定性。
30
+
31
+ 2. **质量**
32
+ - ROE 越高且稳定,质量越好。
33
+ - 经营现金流与净利润方向一致,说明盈利质量更可靠。
34
+ - 现金流显著弱于利润时,要提示回款、存货或应收风险。
35
+
36
+ 3. **估值承受力**
37
+ - 使用 PE/PB、市值等估值字段判断市场是否已经提前透支成长。
38
+ - 高成长可承受更高估值,但必须说明增长能否覆盖估值。
39
+ - 估值高且成长放缓时,应明显下调评分。
40
+
41
+ 4. **趋势确认**
42
+ - 使用 `analyze_trend` 判断长期成长逻辑是否被市场资金确认。
43
+ - 基本面向好但技术面未确认时,优先给观察条件而不是直接追买。
44
+
45
+ 输出要求:
46
+ - 明确公司处于:高质量成长 / 成长验证中 / 成长放缓 / 成长证伪。
47
+ - 说明成长来自收入扩张、利润率改善、行业景气,还是一次性因素。
48
+ - 给出适合成长股的买点:业绩验证后突破、回踩长期均线或估值回落。
49
+
50
+ 评分调整建议:
51
+ - 收入、利润、现金流和 ROE 同向改善:`sentiment_score +15`
52
+ - 行业景气与公司新闻互相验证:额外 `+6`
53
+ - 高估值但成长未验证:`sentiment_score -8`
54
+ - 增收不增利或现金流恶化:`sentiment_score -12`
@@ -0,0 +1,54 @@
1
+ # Hot Theme Strategy / 热点题材
2
+
3
+ name: hot_theme
4
+ display_name: 热点题材
5
+ description: 跟踪政策、产业和市场热点,判断题材强度、板块扩散和个股相对强弱。
6
+ category: framework
7
+ core_rules: [2, 3, 5, 7]
8
+ required_tools:
9
+ - pending:get_sector_rankings
10
+ - pending:search_stock_news
11
+ - fetch_quote
12
+ - technical_summary
13
+ aliases: [热点, 题材, 热点题材]
14
+ default_priority: 35
15
+ market_regimes: [sector_hot]
16
+
17
+ instructions: |
18
+ **热点题材策略(Hot Theme Strategy)**
19
+
20
+ 适用场景:
21
+ - 市场出现明确政策、产业、技术路线或资金抱团热点。
22
+ - 需要判断个股是否真正受益于热点,而不是单纯蹭概念。
23
+
24
+ 分析框架:
25
+
26
+ 1. **热点强度**
27
+ - 使用 `get_sector_rankings` 判断相关板块是否在近期涨幅、成交额或人气上处于前列。
28
+ - 观察热点是否从少数核心股扩散到板块内多只个股。
29
+ - 若只有单股异动、板块未共振,降低信号权重。
30
+
31
+ 2. **个股相关性**
32
+ - 使用 `search_stock_news` 检查公司业务、订单、产能、客户、公告是否与热点直接相关。
33
+ - 区分“实质受益”“间接受益”“概念关联较弱”。
34
+ - 概念关联弱但涨幅过大时,应提示题材兑现风险。
35
+
36
+ 3. **相对强弱**
37
+ - 使用 `get_realtime_quote` 与 `analyze_trend` 判断个股涨幅、量比、换手率是否强于板块平均。
38
+ - 强势热点股通常表现为放量、换手活跃、回调不破关键均线。
39
+
40
+ 4. **节奏与风险**
41
+ - 不在连续加速、高乖离率位置追涨。
42
+ - 若新闻集中在“已经大涨”“资金追捧”“龙虎榜游资博弈”,需要警惕短线情绪顶。
43
+ - 重大利空、监管问询、澄清公告可一票降低评级。
44
+
45
+ 输出要求:
46
+ - 明确当前热点阶段:启动 / 扩散 / 分化 / 退潮。
47
+ - 说明个股与热点的实质相关性。
48
+ - 给出可执行触发条件:回踩承接、放量突破、板块继续共振或退潮止损。
49
+
50
+ 评分调整建议:
51
+ - 热点处于启动或扩散期,且个股实质受益:`sentiment_score +12`
52
+ - 个股强于板块并有量能确认:额外 `+6`
53
+ - 热点进入分化或退潮:`sentiment_score -8`
54
+ - 仅概念蹭热点且乖离率过高:`sentiment_score -12`
@@ -0,0 +1,46 @@
1
+ # MA Golden Cross Strategy / 均线金叉
2
+ # MA5 crosses above MA10 (or MA10 above MA20) with volume confirmation.
3
+
4
+ name: ma_golden_cross
5
+ display_name: 均线金叉
6
+ description: 检测均线金叉配合量能确认信号,经典的趋势反转/延续信号。
7
+ category: trend
8
+ core_rules: [1, 2, 3]
9
+ required_tools:
10
+ - fetch_history
11
+ - technical_summary
12
+ aliases: [均线金叉, 金叉]
13
+ default_priority: 20
14
+ market_regimes: [trending_up]
15
+
16
+ instructions: |
17
+ **均线金叉(MA Golden Cross Strategy)**
18
+
19
+ 信号判定标准:
20
+
21
+ 1. **金叉检测**(关联理念2:趋势交易):
22
+ - 使用 `analyze_trend` 检查均线排列和 MACD 状态。
23
+ - 主信号:MA5 在最近 3 个交易日内上穿 MA10。
24
+ - 强信号:MA10 上穿 MA20(更慢但更可靠)。
25
+ - 检查 MACD 状态是否为金叉或零轴上方金叉。
26
+
27
+ 2. **量能确认**(关联理念3:效率优先):
28
+ - 金叉日成交量应高于 5 日均量。
29
+ - 使用 `get_daily_history` 验证。
30
+ - 金叉日量比 > 1.2 为积极信号。
31
+
32
+ 3. **趋势背景**:
33
+ - 盘整后金叉:最强信号。
34
+ - 上升趋势中金叉:延续信号。
35
+ - 深度下跌中金叉:弱信号,需更多确认。
36
+
37
+ 4. **价格位置**(关联理念1:严进策略):
38
+ - 价格应在交叉均线附近或上方。
39
+ - 乖离率 < 5% — 避免追高延迟入场。
40
+
41
+ 评分调整:
42
+ - MA5 × MA10 金叉配合量能:sentiment_score +10
43
+ - MA10 × MA20 金叉:sentiment_score +8
44
+ - MACD 零轴上方金叉:额外 +5
45
+ - 在 `ma_analysis` 和 `buy_reason` 中注明"均线金叉"。
46
+ - 理想买点设在交叉均线水平附近。