Install
openclaw skills install 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 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.
中文: 打新策略分析师——覆盖打新日历、申购策略、上市表现分析、限售期管理。适用:追求打新收益的投资者。
| Pain Point / 痛点 | Impact / 影响 | Solution / 本Skill解决方案 |
|---|---|---|
| 信息分散 | 打新信息分散在多个平台 | 一站式打新日历+信息聚合 |
| 策略模糊 | 盲目申购,收益率低 | 量化打分模型+最优策略 |
| 破发风险 | 注册制下破发率上升 | 估值分析+风险评估 |
| 资金效率低 | 资金分配不合理 | 最优资金分配算法 |
| 规则复杂 | 科创板/创业板规则差异大 | 分板块规则解析 |
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
}
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
)
}
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)
}
## 限售期规则与影响
### 各板块限售规则
| 板块 | 战略投资者 | 网下投资者 | 原股东 |
|-----|-----------|-----------|--------|
| 主板 | 12个月 | 6个月 | 12个月(大股东)|
| 科创板 | 12个月 | 6个月 | 12个月(大股东)|
| 创业板 | 12个月 | 6个月 | 12个月(大股东)|
| 北交所 | 6个月 | 12个月 | 大股东12个月 |
### 解禁压力测算
```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)
}
---
## 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.