erlangshen 0.1.0

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 (93) hide show
  1. package/.claude/agents/equity-agent.md +26 -0
  2. package/.claude/agents/macro-agent.md +25 -0
  3. package/.claude/commands/analyze.md +40 -0
  4. package/.claude/commands/macro.md +29 -0
  5. package/.claude/settings.json +12 -0
  6. package/CODEX_GOAL.md +46 -0
  7. package/README.md +206 -0
  8. package/bin/cli.js +67 -0
  9. package/bin/erlangshen +2 -0
  10. package/bin/xiaoergod +2 -0
  11. package/frontend/index.html +700 -0
  12. package/knowledge/crypto_guide.md +147 -0
  13. package/knowledge/economic_indicators.md +125 -0
  14. package/knowledge/financial_glossary.md +148 -0
  15. package/knowledge/first_principles.md +50 -0
  16. package/knowledge/first_principles_deep.md +115 -0
  17. package/knowledge/global_markets.md +173 -0
  18. package/knowledge/insights.md +141 -0
  19. package/knowledge/market_basics.md +116 -0
  20. package/knowledge/memos/session_20260513_003616.json +6 -0
  21. package/knowledge/memos/session_20260513_003822.json +6 -0
  22. package/knowledge/risk_management.md +151 -0
  23. package/knowledge/team_context.md +42 -0
  24. package/knowledge/trading_strategies.md +114 -0
  25. package/package.json +42 -0
  26. package/requirements.txt +14 -0
  27. package/scripts/postinstall.js +188 -0
  28. package/scripts/preuninstall.js +22 -0
  29. package/src/__init__.py +4 -0
  30. package/src/__pycache__/__init__.cpython-313.pyc +0 -0
  31. package/src/agents/__init__.py +3 -0
  32. package/src/agents/base.py +103 -0
  33. package/src/agents/base_agent.py +86 -0
  34. package/src/agents/equity.py +136 -0
  35. package/src/agents/equity_agent.py +91 -0
  36. package/src/agents/erlang.py +165 -0
  37. package/src/agents/macro.py +137 -0
  38. package/src/agents/macro_agent.py +81 -0
  39. package/src/agents/multi_asset.py +147 -0
  40. package/src/agents/multi_asset_agent.py +87 -0
  41. package/src/api/__init__.py +1 -0
  42. package/src/api/__pycache__/__init__.cpython-313.pyc +0 -0
  43. package/src/api/__pycache__/server.cpython-313.pyc +0 -0
  44. package/src/api/cli.py +435 -0
  45. package/src/api/cli_enhanced.py +537 -0
  46. package/src/api/server.py +266 -0
  47. package/src/brain.py +200 -0
  48. package/src/cli.py +153 -0
  49. package/src/commands/__init__.py +3 -0
  50. package/src/commands/analyze.py +131 -0
  51. package/src/commands/macro.py +100 -0
  52. package/src/commands/memo.py +216 -0
  53. package/src/commands/portfolio.py +154 -0
  54. package/src/commands/report.py +228 -0
  55. package/src/commands/risk.py +183 -0
  56. package/src/commands/search.py +183 -0
  57. package/src/commands/stock.py +124 -0
  58. package/src/config.py +327 -0
  59. package/src/core/__init__.py +1 -0
  60. package/src/core/brain.py +645 -0
  61. package/src/core/cerebellum.py +175 -0
  62. package/src/core/investment_universe.py +423 -0
  63. package/src/core/knowledge.py +207 -0
  64. package/src/core/memory.py +115 -0
  65. package/src/hooks/__init__.py +3 -0
  66. package/src/hooks/session_end.py +57 -0
  67. package/src/hooks/session_start.py +75 -0
  68. package/src/knowledge/__init__.py +1 -0
  69. package/src/mcp/__init__.py +3 -0
  70. package/src/mcp/feishu.py +331 -0
  71. package/src/mcp/fund_tools.py +323 -0
  72. package/src/mcp/macro.py +452 -0
  73. package/src/mcp/market.py +331 -0
  74. package/src/mcp/registry.py +168 -0
  75. package/src/network/__init__.py +15 -0
  76. package/src/network/detector.py +125 -0
  77. package/src/network/proxy.py +199 -0
  78. package/src/network/router.py +103 -0
  79. package/src/prompts/__init__.py +1 -0
  80. package/src/prompts/analysis_framework.md +164 -0
  81. package/src/prompts/persona.md +65 -0
  82. package/src/prompts/report_template.md +144 -0
  83. package/src/skills/__init__.py +3 -0
  84. package/src/skills/framework.py +105 -0
  85. package/src/skills/templates.py +342 -0
  86. package/src/tools/__init__.py +1 -0
  87. package/src/tools/file_tools.py +209 -0
  88. package/src/tools/macro_tools.py +152 -0
  89. package/src/tools/market_tools.py +1172 -0
  90. package/src/tools/registry.py +398 -0
  91. package/src/tools/search_tools.py +777 -0
  92. package/tests/__init__.py +1 -0
  93. package/tests/test_erlangshen.py +140 -0
@@ -0,0 +1,199 @@
1
+ """
2
+ 网络代理配置管理
3
+ """
4
+
5
+ import os
6
+ from typing import Optional, Dict, Literal
7
+ from pydantic import BaseModel
8
+ from dataclasses import dataclass
9
+
10
+
11
+ class ProxyConfig(BaseModel):
12
+ """代理配置"""
13
+ # 代理模式: auto=自动, vpn=强制VPN, direct=直连, china_only=仅中国
14
+ mode: Literal["auto", "vpn", "direct", "china_only"] = "auto"
15
+
16
+ # 代理服务器
17
+ http_proxy: Optional[str] = None
18
+ https_proxy: Optional[str] = None
19
+ socks_proxy: Optional[str] = None
20
+
21
+ # 白名单/黑名单
22
+ china_domains: list[str] = [] # 中国域名列表,走直连
23
+ global_domains: list[str] = [] # 全球域名列表,走代理
24
+
25
+ # VPN配置
26
+ vpn_interface: str = "utun" # macOS VPN接口
27
+ vpn_bypass: list[str] = [] # VPN绕过列表
28
+
29
+
30
+ class ProxyManager:
31
+ """代理管理器 - 根据URL自动选择代理配置"""
32
+
33
+ # 中国域名列表(精确匹配或后缀匹配)
34
+ CHINA_DOMAINS = {
35
+ # 顶级后缀 - 中国区划
36
+ ".cn",
37
+ ".com.cn",
38
+ ".net.cn",
39
+ ".gov.cn",
40
+ ".org.cn",
41
+ ".edu.cn",
42
+ # 中国金融数据
43
+ "baidu.com", # 百度
44
+ "akshare.com",
45
+ "eastmoney.com",
46
+ "sina.com",
47
+ "tencent.com",
48
+ "wind.com",
49
+ "tushare.pro",
50
+ "tushare.io",
51
+ "jqdata.com",
52
+ "joinquant.com",
53
+ "aliyun.com", # 阿里云
54
+ "alipay.com", # 支付宝
55
+ "taobao.com", # 淘宝
56
+ # 中国交易所API
57
+ "api.binance.com", # Binance
58
+ "api.okx.com", # OKX
59
+ # Mixin生态
60
+ "api.mixin-messenger.io",
61
+ }
62
+
63
+ # 国际域名后缀(这些后缀默认走代理)
64
+ GLOBAL_TLDS = {".io", ".ai", ".tech", ".xyz", ".cc", ".tv"}
65
+
66
+ # 已知国际域名(精确或后缀匹配)
67
+ GLOBAL_DOMAINS = {
68
+ # 国际金融数据
69
+ "yahoo.com",
70
+ "finance.yahoo.com",
71
+ "fred.stlouisfed.org",
72
+ "alphavantage.co",
73
+ "twelvedata.com",
74
+ "coinmarketcap.com",
75
+ "coingecko.com",
76
+ # 搜索引擎
77
+ "duckduckgo.com",
78
+ "duck.com",
79
+ "google.com",
80
+ # AI服务
81
+ "openai.com",
82
+ "anthropic.com",
83
+ "minimax.io",
84
+ }
85
+
86
+ def __init__(self, config: Optional[ProxyConfig] = None):
87
+ self.config = config or ProxyConfig()
88
+ self._detect_environment()
89
+
90
+ def _detect_environment(self):
91
+ """检测环境变量中的代理设置"""
92
+ # 读取环境变量代理
93
+ if not self.config.http_proxy:
94
+ self.config.http_proxy = os.environ.get("HTTP_PROXY") or os.environ.get("http_proxy")
95
+ if not self.config.https_proxy:
96
+ self.config.https_proxy = os.environ.get("HTTPS_PROXY") or os.environ.get("https_proxy")
97
+ if not self.config.socks_proxy:
98
+ self.config.socks_proxy = os.environ.get("SOCKS_PROXY") or os.environ.get("socks_proxy")
99
+
100
+ def get_proxy_for_url(self, url: str) -> Optional[Dict[str, str]]:
101
+ """
102
+ 根据URL自动选择代理配置
103
+
104
+ Args:
105
+ url: 目标URL
106
+
107
+ Returns:
108
+ 代理字典 {"http": "...", "https": "..."} 或 None(直连)
109
+ """
110
+ from urllib.parse import urlparse
111
+ domain = urlparse(url).netloc.lower()
112
+
113
+ # 提取根域名
114
+ parts = domain.split(".")
115
+ root_domain = ".".join(parts[-2:]) if len(parts) >= 2 else domain
116
+
117
+ # 判断应该走什么路由
118
+ routing = self._should_use_proxy(domain, root_domain)
119
+
120
+ if routing == "direct":
121
+ return None # 直连,不走代理
122
+ elif routing == "proxy":
123
+ return self._get_proxy_dict()
124
+ else: # auto
125
+ # 自动判断:中国域名直连,其他走代理
126
+ if self._is_china_domain(domain, root_domain):
127
+ return None
128
+ else:
129
+ return self._get_proxy_dict()
130
+
131
+ def _should_use_proxy(self, domain: str, root: str) -> str:
132
+ """判断是否使用代理"""
133
+ mode = self.config.mode
134
+
135
+ if mode == "direct":
136
+ return "direct"
137
+ elif mode == "vpn":
138
+ return "proxy"
139
+ elif mode == "china_only":
140
+ return "direct"
141
+ else: # auto
142
+ if self._is_china_domain(domain, root):
143
+ return "direct"
144
+ return "proxy"
145
+
146
+ def _is_china_domain(self, domain: str, root: str) -> bool:
147
+ """判断是否为中国域名"""
148
+ # 检查内置中国域名列表
149
+ for china in self.CHINA_DOMAINS:
150
+ if china in domain or domain.endswith(china):
151
+ return True
152
+
153
+ # 检查已知国际域名 - 如果匹配则不走中国路由
154
+ for global_d in self.GLOBAL_DOMAINS:
155
+ if global_d in domain or domain.endswith(global_d):
156
+ return False
157
+
158
+ # 检查国际域名后缀
159
+ for tld in self.GLOBAL_TLDS:
160
+ if domain.endswith(tld):
161
+ return False
162
+
163
+ return False
164
+
165
+ def _get_proxy_dict(self) -> Optional[Dict[str, str]]:
166
+ """获取代理字典"""
167
+ proxies = {}
168
+ if self.config.http_proxy:
169
+ proxies["http"] = self.config.http_proxy
170
+ if self.config.https_proxy:
171
+ proxies["https"] = self.config.https_proxy
172
+ if self.config.socks_proxy:
173
+ proxies["socks5"] = self.config.socks_proxy
174
+ return proxies if proxies else None
175
+
176
+ def set_mode(self, mode: str):
177
+ """设置代理模式"""
178
+ if mode in ("auto", "vpn", "direct", "china_only"):
179
+ self.config.mode = mode
180
+ print(f"[ProxyManager] 代理模式切换为: {mode}")
181
+ else:
182
+ print(f"[ProxyManager] 未知模式: {mode}, 保持当前: {self.config.mode}")
183
+
184
+ def get_session_config(self) -> Dict:
185
+ """获取aiohttp session配置"""
186
+ return {
187
+ "trust_env": True, # 信任环境变量
188
+ "skip_auto_headers": ["User-Agent"],
189
+ }
190
+
191
+ def get_status(self) -> Dict:
192
+ """获取当前状态"""
193
+ return {
194
+ "mode": self.config.mode,
195
+ "has_proxy": bool(self.config.http_proxy or self.config.https_proxy or self.config.socks_proxy),
196
+ "http_proxy": self.config.http_proxy,
197
+ "https_proxy": self.config.https_proxy,
198
+ "socks_proxy": self.config.socks_proxy,
199
+ }
@@ -0,0 +1,103 @@
1
+ """
2
+ 流量路由 - 根据规则路由请求
3
+ """
4
+
5
+ import aiohttp
6
+ from typing import Optional, Dict, Any
7
+ import asyncio
8
+
9
+
10
+ class NetworkRouter:
11
+ """网络路由器 - 自动选择最优路径发送请求"""
12
+
13
+ def __init__(self, proxy_manager):
14
+ """
15
+ 初始化路由器
16
+
17
+ Args:
18
+ proxy_manager: ProxyManager实例
19
+ """
20
+ self.proxy_manager = proxy_manager
21
+ self._session: Optional[aiohttp.ClientSession] = None
22
+
23
+ async def get_session(self) -> aiohttp.ClientSession:
24
+ """获取配置好的aiohttp session"""
25
+ if self._session is None or self._session.closed:
26
+ connector = aiohttp.TCPConnector(
27
+ limit=100,
28
+ keepalive_timeout=30,
29
+ )
30
+ self._session = aiohttp.ClientSession(
31
+ connector=connector,
32
+ trust_env=True, # 信任环境变量
33
+ )
34
+ return self._session
35
+
36
+ async def request(
37
+ self,
38
+ method: str,
39
+ url: str,
40
+ **kwargs
41
+ ) -> aiohttp.ClientResponse:
42
+ """
43
+ 发送请求,自动选择路由
44
+
45
+ Args:
46
+ method: HTTP方法 (GET, POST, etc.)
47
+ url: 目标URL
48
+ **kwargs: 传递给aiohttp的其他参数
49
+
50
+ Returns:
51
+ aiohttp.ClientResponse
52
+ """
53
+ session = await self.get_session()
54
+
55
+ # 获取该URL应该使用的代理
56
+ proxy = self.proxy_manager.get_proxy_for_url(url)
57
+
58
+ if proxy:
59
+ # 设置代理
60
+ http_proxy = proxy.get("http") or proxy.get("https")
61
+ if http_proxy:
62
+ kwargs["proxy"] = http_proxy
63
+
64
+ async with session.request(method, url, **kwargs) as response:
65
+ return response
66
+
67
+ async def get(self, url: str, **kwargs) -> aiohttp.ClientResponse:
68
+ """GET请求"""
69
+ return await self.request("GET", url, **kwargs)
70
+
71
+ async def post(self, url: str, **kwargs) -> aiohttp.ClientResponse:
72
+ """POST请求"""
73
+ return await self.request("POST", url, **kwargs)
74
+
75
+ async def put(self, url: str, **kwargs) -> aiohttp.ClientResponse:
76
+ """PUT请求"""
77
+ return await self.request("PUT", url, **kwargs)
78
+
79
+ async def delete(self, url: str, **kwargs) -> aiohttp.ClientResponse:
80
+ """DELETE请求"""
81
+ return await self.request("DELETE", url, **kwargs)
82
+
83
+ async def get_json(self, url: str, **kwargs) -> Any:
84
+ """GET请求并返回JSON"""
85
+ async with await self.get(url, **kwargs) as resp:
86
+ return await resp.json()
87
+
88
+ async def post_json(self, url: str, **kwargs) -> Any:
89
+ """POST请求并返回JSON"""
90
+ async with await self.post(url, **kwargs) as resp:
91
+ return await resp.json()
92
+
93
+ async def close(self):
94
+ """关闭session"""
95
+ if self._session and not self._session.closed:
96
+ await self._session.close()
97
+ self._session = None
98
+
99
+ async def __aenter__(self):
100
+ return self
101
+
102
+ async def __aexit__(self, exc_type, exc_val, exc_tb):
103
+ await self.close()
@@ -0,0 +1 @@
1
+ """Prompts templates"""
@@ -0,0 +1,164 @@
1
+ # 分析框架 (Analysis Framework)
2
+
3
+ ## 1. 宏观分析框架
4
+
5
+ ### 1.1 经济周期
6
+ ```
7
+ 领先指标: PMI, 消费者信心, 库存变化
8
+ 同步指标: GDP, 工业增加值, 就业
9
+ 滞后指标: CPI, PPI, 利率
10
+ ```
11
+
12
+ ### 1.2 货币政策框架
13
+ ```
14
+ 目标: 价格稳定, 充分就业, 金融稳定
15
+ 工具: 利率, 存款准备金, 公开市场操作, QE
16
+ 传导: 利率 → 信用 → 投资/消费 → 经济
17
+ ```
18
+
19
+ ### 1.3 政策评估矩阵
20
+ | 政策类型 | 宽松 | 中性 | 紧缩 |
21
+ |---------|------|------|------|
22
+ | 财政政策 | 扩张性 | 中性 | 收缩性 |
23
+ | 货币政策 | 宽松 | 中性 | 紧缩 |
24
+ | 监管政策 | 放松 | 中性 | 收紧 |
25
+
26
+ ## 2. 股票分析框架
27
+
28
+ ### 2.1 盈利分析
29
+ ```
30
+ 收入端:
31
+ - 营收增长率 (YoY, QoQ)
32
+ - 市场份额变化
33
+ - 产品/服务定价能力
34
+
35
+ 成本端:
36
+ - 毛利率趋势
37
+ - 费用率控制
38
+ - 规模效应
39
+
40
+ 最终:
41
+ - EPS增长
42
+ - ROE趋势
43
+ - 现金流质量
44
+ ```
45
+
46
+ ### 2.2 估值分析
47
+ ```
48
+ 绝对估值:
49
+ - DCF折现率
50
+ - 永续增长率假设
51
+
52
+ 相对估值:
53
+ - PE/PB/PS分位数
54
+ - 与行业平均比较
55
+ - 与历史区间比较
56
+
57
+ 情景分析:
58
+ - 乐观/基准/悲观
59
+ ```
60
+
61
+ ### 2.3 质量因子
62
+ ```
63
+ 财务质量:
64
+ - 资产负债率
65
+ - 经营现金流/净利润
66
+ - 应收账款周转
67
+
68
+ 竞争壁垒:
69
+ - 护城河类型
70
+ - 行业地位
71
+ - 品牌溢价
72
+
73
+ 管理层:
74
+ - 治理结构
75
+ - 激励机制
76
+ - 历史记录
77
+ ```
78
+
79
+ ## 3. 资产配置框架
80
+
81
+ ### 3.1 风险预算
82
+ ```
83
+ 股债比例:
84
+ - 保守: 30/70
85
+ - 均衡: 60/40
86
+ - 积极: 80/20
87
+
88
+ 区域配置:
89
+ - 本土偏好
90
+ - 新兴vs发达
91
+ - 行业敞口
92
+
93
+ 风格配置:
94
+ - 成长vs价值
95
+ - 大盘vs小盘
96
+ ```
97
+
98
+ ### 3.2 再平衡策略
99
+ ```
100
+ 阈值再平衡:
101
+ - 股债偏离超过5%时触发
102
+
103
+ 时间再平衡:
104
+ - 季度/年度定期检视
105
+
106
+ 动态再平衡:
107
+ - 基于风险平价
108
+ - 基于相对价值
109
+ ```
110
+
111
+ ## 4. 风控框架
112
+
113
+ ### 4.1 风险识别
114
+ ```
115
+ 市场风险:
116
+ - 系统性风险暴露
117
+ - 相关性风险
118
+
119
+ 信用风险:
120
+ - 交易对手信用
121
+ - 发行人信用
122
+
123
+ 流动性风险:
124
+ - 持仓流动性
125
+ - 赎回压力
126
+
127
+ 操作风险:
128
+ - 执行风险
129
+ - 模型风险
130
+ ```
131
+
132
+ ### 4.2 风险度量
133
+ ```
134
+ VaR (Value at Risk):
135
+ - 95%/99%置信度
136
+ - 1天/10天持有期
137
+
138
+ 回撤:
139
+ - 最大回撤
140
+ - 回撤修复时间
141
+
142
+ 波动率:
143
+ - 历史波动率
144
+ - 隐含波动率
145
+ ```
146
+
147
+ ## 5. 决策流程
148
+
149
+ ```
150
+ 1. 信息收集
151
+ └── 数据采集 → 清洗 → 验证
152
+
153
+ 2. 分析推理
154
+ └── 宏观 → 行业 → 个券
155
+
156
+ 3. 组合构建
157
+ └── 战略配置 → 战术调整 → 个券选择
158
+
159
+ 4. 执行监控
160
+ └── 下单 → 结算 → 跟踪
161
+
162
+ 5. 复盘反思
163
+ └── 归因 → 总结 → 迭代
164
+ ```
@@ -0,0 +1,65 @@
1
+ # 二郎神人设 (Erlangshen Persona)
2
+
3
+ ## 身份
4
+
5
+ 你是二郎神,中国神话中以"天眼"著称的神祇,具有全知全能的能力。在投资领域,你是一位顶级的AI投资顾问。
6
+
7
+ ## 核心特质
8
+
9
+ ### 1. 全局视角
10
+ 能够从宏观到微观全面审视,理解经济周期、市场情绪、资金流向的相互作用。
11
+
12
+ ### 2. 历史纵深
13
+ 理解历史周期和规律,识别当前市场在历史长河中的位置,借鉴历史经验。
14
+
15
+ ### 3. 细节洞察
16
+ 发现被忽视的关键信息,从数据噪音中提取真正有价值的信号。
17
+
18
+ ### 4. 独立判断
19
+ 不受情绪和市场噪音干扰,坚持理性分析,在恐慌中看到机会,在狂热中提示风险。
20
+
21
+ ### 5. 持续进化
22
+ 通过学习和反思不断提升,每一天都比前一天更聪明。
23
+
24
+ ## 分析框架
25
+
26
+ ### 宏观周期定位
27
+ - **经济周期**: 复苏/繁荣/滞胀/衰退
28
+ - **金融周期**: 货币政策松紧、流动性状况
29
+ - **情绪周期**: 贪婪/恐惧、机构情绪、散户情绪
30
+
31
+ ### 资产类别比较
32
+ - **相对价值**: 各类资产的估值分位
33
+ - **风险收益比**: 预期收益 vs 潜在风险
34
+ - **相关性**: 资产间的相关性变化
35
+
36
+ ### 风险收益特征
37
+ - **预期收益**: 未来6-12个月的预期回报
38
+ - **尾部风险**: 下行风险和黑天鹅概率
39
+ - **波动性**: 价格波动特征
40
+
41
+ ### 催化剂和触发点
42
+ - **上行催化剂**: 可能的利好因素
43
+ - **下行触发**: 需要警惕的风险点
44
+ - **时间窗口**: 重要事件的时间节点
45
+
46
+ ## 工作方式
47
+
48
+ 1. **主动获取真实数据** - 不凭空臆测,用数据说话
49
+ 2. **系统性分析推理** - 逻辑严密,框架清晰
50
+ 3. **生成结构化输出** - 结论、证据、风险三要素
51
+ 4. **沉淀知识经验** - 持续积累,形成洞察
52
+
53
+ ## 沟通风格
54
+
55
+ - 专业但不生硬
56
+ - 直接但不粗鲁
57
+ - 简洁但有深度
58
+ - 在不确定性面前保持诚实
59
+
60
+ ## 禁忌
61
+
62
+ - 不预测无法预测的事情
63
+ - 不提供无法验证的"内部消息"
64
+ - 不为迎合而改变独立判断
65
+ - 不用模糊语言逃避关键问题
@@ -0,0 +1,144 @@
1
+ # 报告模板 (Report Template)
2
+
3
+ ## 投资分析报告模板
4
+
5
+ ```markdown
6
+ # [标题]
7
+
8
+ **报告日期**: YYYY-MM-DD
9
+ **分析师**: 二郎神
10
+ **评级**: 买入/持有/卖出
11
+ **风险等级**: 高/中/低
12
+
13
+ ---
14
+
15
+ ## 执行摘要
16
+
17
+ [2-3句话的核心结论]
18
+
19
+ ---
20
+
21
+ ## 1. 宏观背景
22
+
23
+ ### 1.1 经济周期定位
24
+ - 当前周期阶段: [复苏/繁荣/滞胀/衰退]
25
+ - 关键指标: [列出核心宏观指标]
26
+
27
+ ### 1.2 政策环境
28
+ - 货币政策: [宽松/中性/紧缩]
29
+ - 财政政策: [扩张/中性/收缩]
30
+ - 监管导向: [鼓励/中性/收紧]
31
+
32
+ ### 1.3 市场情绪
33
+ - 机构情绪: [乐观/中性/悲观]
34
+ - 散户情绪: [贪婪/中性/恐惧]
35
+ - 资金流向: [净流入/净流出]
36
+
37
+ ---
38
+
39
+ ## 2. 投资标的分析
40
+
41
+ ### 2.1 基本面
42
+ - 公司/资产简介
43
+ - 核心竞争优势
44
+ - 财务表现
45
+
46
+ ### 2.2 估值
47
+ - 绝对估值: [DCF结论]
48
+ - 相对估值: [PE/PB分位数]
49
+ - 估值结论: [偏高/合理/偏低]
50
+
51
+ ### 2.3 风险因素
52
+ - 上行催化剂
53
+ - 下行风险
54
+
55
+ ---
56
+
57
+ ## 3. 投资建议
58
+
59
+ ### 3.1 建议配置
60
+ - 仓位建议: [X%]
61
+ - 入场区间: [价格区间]
62
+ - 目标价位: [价格区间]
63
+
64
+ ### 3.2 风险收益
65
+ - 预期收益: [X%]
66
+ - 潜在风险: [X%]
67
+ - 风险收益比: [1:X]
68
+
69
+ ### 3.3 跟踪要点
70
+ - 需要关注的关键指标
71
+ - 止损/止盈建议
72
+
73
+ ---
74
+
75
+ ## 4. 附录
76
+
77
+ ### 4.1 数据来源
78
+ ### 4.2 分析方法
79
+ ### 4.3 免责声明
80
+
81
+ ---
82
+
83
+ **二郎神天眼评分**: ★★★★☆
84
+ ```
85
+
86
+ ## 晨会纪要模板
87
+
88
+ ```markdown
89
+ # 晨会纪要 YYYY-MM-DD
90
+
91
+ **参会**: [人员列表]
92
+ **主持**: [主持人]
93
+
94
+ ## 1. 隔夜市场回顾
95
+ - 美股: [涨跌幅]
96
+ - A股: [预判]
97
+ - 港股: [预判]
98
+ - 黄金: [价格]
99
+ - 原油: [价格]
100
+ - 汇率: [USD/CNY]
101
+
102
+ ## 2. 今日关注
103
+ - 重要数据: [列表]
104
+ - 重要事件: [列表]
105
+ - 限售股解禁: [金额]
106
+
107
+ ## 3. 热点讨论
108
+ ### 话题1: [标题]
109
+ - 观点A: [内容]
110
+ - 观点B: [内容]
111
+ - 结论: [总结]
112
+
113
+ ## 4. 操作建议
114
+ - 权益: [建议]
115
+ - 债券: [建议]
116
+ - 商品: [建议]
117
+
118
+ ## 5. 风险提示
119
+ [需要关注的风险事件]
120
+ ```
121
+
122
+ ## 投后跟踪模板
123
+
124
+ ```markdown
125
+ # 持仓跟踪 YYYY-MM-DD
126
+
127
+ ## 持仓概况
128
+ | 标的 | 仓位 | 成本 | 现价 | 盈亏 | 评级 |
129
+
130
+ ## 重大变化
131
+ ### 标的一: [名称]
132
+ - 变化: [内容]
133
+ - 影响: [评估]
134
+ - 操作: [建议]
135
+
136
+ ## 组合表现
137
+ - 本日: [涨跌幅]
138
+ - 本周: [涨跌幅]
139
+ - 本月: [涨跌幅]
140
+ - 年初至今: [涨跌幅]
141
+
142
+ ## 后续计划
143
+ [下一步操作计划]
144
+ ```
@@ -0,0 +1,3 @@
1
+ """
2
+ Skills 模块
3
+ """