Install
openclaw skills install @gechengling/security-ipo-strategyAI-powered China A-share IPO analyst providing IPO calendar, subscription strategies, listing performance, lock-up period management, and risk-return assessm...
openclaw skills install @gechengling/security-ipo-strategyEnglish: AI-powered IPO investment strategy analyst — covers IPO calendar, subscription strategy, listing performance analysis, and lock-up period management. Built for investors seeking IPO investment opportunities.
中文: 打新策略分析师——覆盖打新日历、申购策略、上市表现分析、限售期管理。适用:追求打新收益的投资者。
| 动态类型 | 内容摘要 | 影响范围 | 打新侧应对动作 | 责任岗 | 优先级 |
|---|---|---|---|---|---|
| 证券监管 | 2026年Q1:证监会加强IPO全链条监管,信披质量要求升级 | IPO策略分析需纳入最新审核动态和信披要求 | 分析前核对招股说明书披露完整性 | 研究 | 高 |
| 证券监管 | 业绩预告披露质量被重点关注,IPO审核趋严 | IPO策略分析需纳入最新审核动态和信披要求 | 对业绩波动大的发行人增设披露质量打分 | 研究 | 高 |
| 证券监管 | 中证协发布投行业务新自律规范 | IPO策略分析需纳入最新审核动态和信披要求 | 关注保荐机构执业质量作为间接参考 | 合规 | 中 |
| 发行定价 | 询价定价约束强化,高价发行与超募现象受关注 | 询价、定价与申购决策 | 对发行价高于行业均值过多的标的降分 | 研究 | 高 |
| 破发风险 | 注册制下破发常态化,破发率与板块、估值相关 | 申购决策与风险评估 | 建立破发信号清单并前置提示 | 研究 | 高 |
| 限售与解禁 | 解禁节奏与减持规则执行趋严 | 上市后持有与卖出安排 | 解禁日历化管理,提前评估压力 | 研究 | 中 |
| 投资者适当性 | 各板块申购权限与适当性要求需匹配 | 网上/网下申购资格 | 申购前校验账户权限与适当性状态 | 合规 | 高 |
| 信息披露 | 发行文件与上市公告披露时效要求提升 | 上市首日表现与后续跟踪 | 跟踪披露节奏,避免依赖未公开信息 | 合规 | 中 |
数据截止: 2026-09-12 | 来源:证监会、交易所公开规则、行业公开信息 声明: 以上动态供参考,具体以官方最新发布为准
动态解读示例(四类高频场景)
| Pain Point / 痛点 | Impact / 影响 | Solution / 本Skill解决方案 | 量化基线指标 / Baseline |
|---|---|---|---|
| 信息分散 | 打新信息分散在多个平台 | 一站式打新日历+信息聚合 | 关键信息字段完整率 100% |
| 策略模糊 | 盲目申购,收益率低 | 量化打分模型+最优策略 | 每只标的均有评分与建议 |
| 破发风险 | 注册制下破发率上升 | 估值分析+风险评估 | 高风险标的明确标注 |
| 资金效率低 | 资金分配不合理 | 最优资金分配算法 | 资金占用率与中签效率可追溯 |
| 规则复杂 | 科创板/创业板规则差异大 | 分板块规则解析 | 板块规则核对项 100%覆盖 |
| 评分不可复核 | 结论无依据,难以复盘 | 评分构成表 | 各维度打分依据可追溯 |
| 中签率误判 | 高估中签收益期望 | 中签率与实际收益换算 | 用期望值而非最高值表述 |
| 解禁冲击 | 集中解禁带来抛压 | 解禁日历与压力测算 | 解禁前预警覆盖率 100% |
English Triggers: IPO investment, new listing, IPO subscription, China A-share IPO, listing performance, IPO calendar, IPO subscription strategy, hot IPO
中文触发词(优先): 打新 / IPO打新 / 新股申购 / 打新日历 / 打新策略 / 新股上市 / 破发风险 / 打新收益 / 科创板打新 / 创业板打新 / 北交所打新 / 主板打新 / 新股询价 / 网上申购 / 网下申购 / 中签率 / 打新资金冻结 / 限售期 / 战略投资者 / 绿鞋机制
class IPOAnalyzer:
"""打新分析引擎"""
def analyze_ipo(self, ipo_info: dict) -> dict:
"""
分析单个IPO
Args:
ipo_info: IPO信息字典
"""
# 估值分析
valuation_score = self._calculate_valuation_score(ipo_info)
# 行业分析
sector_score = self._calculate_sector_score(ipo_info)
# 基本面分析
fundamentals_score = self._calculate_fundamentals_score(ipo_info)
# 市场情绪
market_sentiment = self._get_market_sentiment()
# 综合评分
total_score = (
valuation_score * 0.35 +
sector_score * 0.25 +
fundamentals_score * 0.25 +
market_sentiment * 0.15
)
# 建议
if total_score >= 75:
recommendation = "强烈推荐申购"
elif total_score >= 60:
recommendation = "建议申购"
elif total_score >= 45:
recommendation = "谨慎申购"
else:
recommendation = "建议放弃"
return {
"score": round(total_score, 1),
"recommendation": recommendation,
"breakdown": {
"估值评分": valuation_score,
"行业评分": sector_score,
"基本面评分": fundamentals_score,
"市场情绪": market_sentiment
},
"risk_factors": self._identify_risk_factors(ipo_info),
"expected_return": self._estimate_return(ipo_info)
}
def _calculate_valuation_score(self, ipo: dict) -> float:
"""估值评分"""
pe = ipo.get("issue_pe", 0)
industry_pe = ipo.get("industry_avg_pe", 30)
# PE低于行业 → 高分
if pe == 0:
return 70 # 未盈利公司
ratio = pe / industry_pe
if ratio < 0.7:
return 90 # 显著低估
elif ratio < 0.9:
return 75 # 相对低估
elif ratio < 1.1:
return 60 # 合理
elif ratio < 1.5:
return 40 # 相对高估
else:
return 20 # 显著高估
def _calculate_sector_score(self, ipo: dict) -> float:
"""行业评分"""
hot_sectors = {
"AI/人工智能": 90,
"半导体/芯片": 85,
"新能源汽车": 80,
"创新药": 75,
"云计算": 80,
"军工": 70,
"消费": 60,
"房地产": 30,
"金融": 50,
"机器人/高端制造": 85,
"卫星通信": 80,
"储能": 75,
"环保": 55,
"医药商业": 55,
"传媒": 50,
"传统制造": 45
}
sector = ipo.get("sector", "")
return hot_sectors.get(sector, 50)
def _estimate_return(self, ipo: dict) -> dict:
"""估算收益"""
issue_price = ipo.get("issue_price", 0)
listing_expectation = ipo.get("listing_expectation", 0)
if not issue_price:
return {"error": "数据不足"}
first_day_return = (listing_expectation - issue_price) / issue_price * 100
return {
"issue_price": issue_price,
"listing_expectation": listing_expectation,
"expected_first_day_return": round(first_day_return, 1),
"expected_profit_per_lot": round(
(listing_expectation - issue_price) * ipo.get("lot_size", 500), 2
)
}
评分构成与板块速查表
| 维度 | 权重 | 打分依据 | 数据来源 |
|---|---|---|---|
| 估值评分 | 35% | 发行PE与行业均值比值 | 招股书、行业数据 |
| 行业评分 | 25% | 行业景气度与资金关注度 | 行业数据、板块表现 |
| 基本面评分 | 25% | 营收/利润增速、毛利率、研发投入 | 招股书财务数据 |
| 市场情绪 | 15% | 近期新股上市表现、市场活跃度 | 市场统计数据 |
各板块打新规则速查
| 板块 | 市值门槛(沪/深) | 最小申购单位 | 上市首日涨跌幅 | 特殊要求 |
|---|---|---|---|---|
| 主板 | 沪1万/深1万 | 1000股(沪)/500股(深) | 首日44%上限(沪)、无涨跌幅限制(部分) | 常规 |
| 科创板 | 沪1万 | 500股 | 无涨跌幅限制(前5日) | 需开通科创板权限 |
| 创业板 | 深1万 | 500股 | 无涨跌幅限制(前5日) | 需开通创业板权限 |
| 北交所 | 无(全额资金申购) | 100股 | 首日无涨跌幅限制 | 需开通北交所权限 |
示例 1|综合评分手算
| 维度 | 得分 | 权重 | 加权得分 |
|---|---|---|---|
| 估值评分(发行PE为行业0.85倍) | 75 | 0.35 | 26.25 |
| 行业评分(半导体) | 85 | 0.25 | 21.25 |
| 基本面评分(营收+32%、毛利率41%) | 80 | 0.25 | 20.00 |
| 市场情绪(近期新股首日平均+85%) | 70 | 0.15 | 10.50 |
| 综合评分 | — | 1.00 | 78.0 → 强烈推荐申购 |
要点:任一维度得分异常低(如估值仅20分)时,即使综合评分过线,也应在结论中单列该风险点。
示例 2|破发信号清单(出现两项以上即降级)
| 信号 | 观察口径 | 风险含义 |
|---|---|---|
| 发行PE高于行业均值1.5倍以上 | 发行价/行业PE | 定价偏高,上市后缺乏空间 |
| 大额超募 | 募资额显著高于计划 | 资金使用效率存疑 |
| 行业景气回落 | 行业指数或景气指标下行 | 题材热度不足 |
| 可比公司上市后表现不佳 | 近期同行业新股破发 | 市场对该赛道定价趋于谨慎 |
| 基本面增速下滑 | 最近一期增速低于此前 | 成长性受质疑 |
| 网下配售比例异常高 | 机构参与意愿下降 | 需求端支撑不足 |
处置口径:命中2项及以上 → 建议"谨慎申购"或"放弃";命中1项 → 可小仓位参与并在结论中提示。
class IPOCapitalAllocator:
"""打新资金分配器"""
def optimize_allocation(self, ipos: list, available_capital: float) -> dict:
"""
最优资金分配
"""
sorted_ipos = sorted(ipos, key=lambda x: x.get("score", 50), reverse=True)
allocations = []
remaining_capital = available_capital
for ipo in sorted_ipos:
if remaining_capital <= 0:
break
if ipo.get("score", 50) >= 70:
allocation = min(remaining_capital * 0.4, ipo.get("max_subscription", float('inf')))
elif ipo.get("score", 50) >= 55:
allocation = min(remaining_capital * 0.25, ipo.get("max_subscription", float('inf')))
else:
allocation = min(remaining_capital * 0.1, ipo.get("max_subscription", float('inf')))
allocations.append({
"stock_code": ipo["stock_code"],
"stock_name": ipo["stock_name"],
"allocated_capital": round(allocation, 2),
"score": ipo.get("score", 50),
"recommendation": ipo.get("recommendation", "")
})
remaining_capital -= allocation
return {
"total_allocated": round(available_capital - remaining_capital, 2),
"remaining_capital": round(remaining_capital, 2),
"allocations": allocations,
"expected_total_return": self._estimate_total_return(allocations)
}
示例 1|资金分配结果(可用资金100万元)
| 新股 | 评分 | 建议 | 分配比例 | 分配金额 | 上限约束 |
|---|---|---|---|---|---|
| 新股A | 82 | 强烈推荐申购 | 40% | 40万 | 未触顶 |
| 新股B | 74 | 建议申购 | 35% | 35万 | 受申购上限约束 |
| 新股C | 63 | 建议申购 | 15% | 15万 | 未触顶 |
| 新股D | 51 | 谨慎申购 | 10% | 10万 | 未触顶 |
| 合计 | — | — | 100% | 100万 | 剩余 0 |
分配要点:①高评分标的优先且单只不超过可用资金的40%;②受申购上限约束时不可强行加仓,剩余资金应分配给次优标的而非闲置;③资金分配结果须与申购日历衔接,避免同日多只标的资金冲突。
示例 2|中签率与期望收益换算(不要用最高涨幅表述)
| 新股 | 中签率 | 单签金额 | 首日预期涨幅 | 单签期望收益 | 期望倍数 |
|---|---|---|---|---|---|
| 新股A | 0.03% | 2万元 | +80% | 1.6万元 | — |
| 新股B | 0.05% | 1.5万元 | +45% | 0.675万元 | — |
| 组合期望 | — | — | — | 按中签概率加权 | 表述为"期望值" |
表述要点:应写"按中签率与首日预期涨幅计算的期望收益为X元",而非"中一签可赚1.6万元";后者忽略了中签概率,容易误导。
示例 3|资金效率优化(同批多只新股)
| 策略 | 做法 | 优点 | 风险 |
|---|---|---|---|
| 集中打法 | 资金集中申购评分最高的1-2只 | 单只中签金额大 | 一旦破发损失集中 |
| 分散打法 | 资金分散至多只 | 降低单一破发影响 | 单只中签金额小 |
| 分层打法 | 高评分集中、中评分小额参与 | 兼顾效率与分散 | 需要准确评分支撑 |
选择依据:市场情绪高、破发率低时可用集中打法;破发率上升时改为分散或分层打法。
## 限售期规则与影响
### 各板块限售规则
| 板块 | 战略投资者 | 网下投资者 | 原股东(一般) | 控股股东/实际控制人 |
|-----|-----------|-----------|-------------|-----------------|
| 主板 | 12个月 | 6个月 | 12个月 | 36个月 |
| 科创板 | 12个月 | 6个月 | 12个月 | 36个月 |
| 创业板 | 12个月 | 6个月 | 12个月 | 36个月 |
| 北交所 | 6个月 | 12个月 | 12个月 | 36个月 |
### 解禁压力测算
```python
def calculate_unlock_pressure(stock_code: str, unlock_date: str) -> dict:
"""
计算解禁压力
"""
total_shares = 1000000000 # 总股本
locked_shares = 300000000 # 限售股
avg_cost = 25 # 平均成本
market_price = 45 # 当前股价
unlock_ratio = locked_shares / total_shares * 100
profit_ratio = (market_price - avg_cost) / avg_cost * 100
if profit_ratio > 100:
pressure_level = "高"
elif profit_ratio > 30:
pressure_level = "中"
else:
pressure_level = "低"
return {
"unlock_date": unlock_date,
"locked_shares": locked_shares,
"unlock_ratio": round(unlock_ratio, 2),
"avg_cost": avg_cost,
"current_price": market_price,
"profit_ratio": round(profit_ratio, 2),
"pressure_level": pressure_level,
"estimated_selling_volume": round(locked_shares * 0.3, 0)
}
**示例 1|解禁压力测算解读**
| 项目 | 数值 | 解读 |
|------|------|------|
| 解禁日期 | 2026-11-15 | 距当前约2个月 |
| 解禁股数 | 3.0亿股 | 占总股本30% |
| 解禁比例 | 30% | 比例较高,需重点关注 |
| 平均成本 | 25元 | 原始股东成本 |
| 当前股价 | 45元 | — |
| 浮盈比例 | +80% | 接近高压力区间 |
| 压力等级 | 中(临界高) | 浮盈接近100%阈值,需提前预案 |
| 预估抛售量 | 约0.9亿股 | 按30%抛售比例估算 |
解读要点:解禁压力由两部分决定——浮盈幅度与解禁比例。浮盈越高、比例越大,抛压越明显;若解禁比例低于5%或浮盈低于30%,通常压力有限。
**示例 2|解禁前处置预案**
| 情景 | 触发条件 | 处置动作 |
|------|---------|---------|
| 高压力 | 浮盈>100% 且解禁比例>20% | 解禁前分批减仓,锁定部分收益 |
| 中压力 | 浮盈30%-100% | 保留底仓,设置回撤止盈线 |
| 低压力 | 浮盈<30% | 正常持有,关注基本面变化 |
| 基本面恶化 | 业绩下滑叠加解禁 | 优先降低仓位,不因"跌多了"而加仓 |
**示例 3|限售期日历管理**
| 时点 | 事项 | 动作 |
|------|------|------|
| 上市后1个月 | 建立解禁日历 | 登记各批次解禁日与股数 |
| 解禁前60天 | 压力评估 | 测算浮盈与解禁比例,定级 |
| 解禁前30天 | 预案准备 | 明确分批减仓比例与止盈线 |
| 解禁当日 | 观察成交 | 关注成交量放大与价格反应 |
| 解禁后1个月 | 复盘 | 对比预案与实际走势,修正参数 |
### 4. Post-Listing Discipline / 上市后交易纪律
| 项目 | 参考做法 | 说明 |
|------|---------|------|
| 首日卖出 | 涨幅达预期区间可分批卖出 | 避免"一定要卖在最高点" |
| 保留观察仓 | 保留小部分仓位跟踪 | 兼顾后续表现,但须有上限 |
| 破发处置 | 按纪律止损,不摊薄成本 | 不因"打新成本低"而放松风控 |
| 情绪管理 | 不因连续盈利而放大仓位 | 打新收益依赖市场环境,需动态调整 |
说明:上述为纪律框架的参考口径,实际操作应结合个人风险承受能力与资金安排自行决定。
---
## Quick Command Templates / 快速指令模板
**分析新股:**
分析新股[股票代码/名称]:
**计算打新收益:**
计算以下新股组合的打新收益:
**破发风险筛查:**
对[新股名称]做破发风险筛查:
**解禁压力测算:**
测算[股票代码]在[解禁日期]的解禁压力:
---
## Disclaimer
IPO investment involves substantial risk. IPO performance in the past does not indicate future results. New issues may list below issue price (破发). Investment decisions should be based on comprehensive analysis and individual risk tolerance.