Security Ipo Strategy

AI-powered China A-share IPO analyst providing IPO calendar, subscription strategies, listing performance, lock-up period management, and risk-return assessm...

Audits

Pass

Install

openclaw skills install security-ipo-strategy

IPO Investment Strategy Analyst / 打新策略分析师

English: 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.

中文: 打新策略分析师——覆盖打新日历、申购策略、上市表现分析、限售期管理。适用:追求打新收益的投资者。


Industry Pain Points / 行业痛点

Pain Point / 痛点Impact / 影响Solution / 本Skill解决方案
信息分散打新信息分散在多个平台一站式打新日历+信息聚合
策略模糊盲目申购,收益率低量化打分模型+最优策略
破发风险注册制下破发率上升估值分析+风险评估
资金效率低资金分配不合理最优资金分配算法
规则复杂科创板/创业板规则差异大分板块规则解析

Trigger Keywords / 触发关键词

English Triggers: IPO investment, new listing, IPO subscription, China A-share IPO, listing performance, IPO calendar, IPO subscription strategy, hot IPO

中文触发词(优先): 打新 / IPO打新 / 新股申购 / 打新日历 / 打新策略 / 新股上市 / 破发风险 / 打新收益 / 科创板打新 / 创业板打新 / 北交所打新 / 主板打新 / 新股询价 / 网上申购 / 网下申购 / 中签率 / 打新资金冻结 / 限售期 / 战略投资者 / 绿鞋机制


Core Capabilities / 核心能力

1. IPO Calendar & Analysis / 打新日历与分析

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
            )
        }

2. Capital Allocation Strategy / 资金分配策略

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)
        }

3. Lock-up Period Monitor / 限售期监控

## 限售期规则与影响

### 各板块限售规则

| 板块 | 战略投资者 | 网下投资者 | 原股东 |
|-----|-----------|-----------|--------|
| 主板 | 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 / 快速指令模板

**分析新股:**

分析新股[股票代码/名称]:

  • 发行价:[X]元
  • 发行PE:[X]倍
  • 行业:[行业]

**计算打新收益:**

计算以下新股组合的打新收益:

  1. [新股A],中签500股,上市首日涨[X]%
  2. [新股B],中签1000股,上市首日涨[X]%

---

## 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.