
    ajE                         d Z ddlZddlZddlZddlmZ ddlZej	        
                    dd           ddlZej        Zg dZe dZe dZg dZdd	Zed
k    r ed           dS dS )u  
强度模型v3: 分池基准
- 权重: 保持定稿(804笔整体rho, 公式不变)
- 基准: 每个池子用自己的历史交易特征分布做percentile + 自己的raw_score分布做0-100
- baseline csv: 分池(带pool字段), 新信号按池追加滚动
    N)statsz/tmp)	f1_t0_pctf2_t0_vol_ratiof3_ta_shrinkf4_ta_drawdown	f5_ta_gapf6_tb_strength	f7_tb_gapf8_chain_len	f9_tb_volf10_tb_ma5_slopef11_tb_ma_alignf12_crowd_poolf13_pool_ztf14_pool_avgretz/strength_model.jsonz/strength_baseline.csv)hs300zz500zz1000zz2000c                 	    t          j        t                     d                                                  }i  t          D ]r}|||                                                  |         }t          j        ||j        |j        df                   \  }}t          t          |          d           |<   s fd                    fdd          d<   t          D ]m}d	         |k    }t          j        |df                                                   r/j        |df                             fd
          j        |df<   n                    t          d            i dt!                    d}t          D ]O}d	         |k             }i }	t          D ][}|||                                                  |         t!                    dk    rfdt#          d          D             nd|	|<   \t!          |          |	t          |d                                                   t%          |d                                                                                   d|d         |<   t)          | dt!          |           dt%          |d                                                                                    d           Qt+          j        |t/          t0          d          dd           t)          d           t          D ]}d	         |k    d                                         z                                           }t!          |          dk     rV|d         |         d         |d                             fd          |d<   t          j        |d         |d                   \  }}
||d         dk             }||d         d k              }t!          |          rGt!          |          r8|d                                         |d                                         z
  d!z  nt          d"          }t)          | d#|d$d%|
d&d't!          |           d(|d                                         d!z  d)d*t!          |           d+|d                                         d!z  d)d*t!          |           d,|d)d-           t)          d.t0                      dS )/u!   从baseline csv重建分池模型Nret   c                    d}d }t          D ]}|                     |t          j                  }|t          j        |          rd}nd         |k    |                                          z           |         }t          |          rIt          t          j	        t          j
        |j                  |          t          |          z            nd}|	|         |z  z  }|S )Ng        Fpoolg      ?)notnaFCOLSgetnpnanpdisnalenfloatsearchsortedsortvalues)
rr   sfcpcolsvpqsdfweightss
           build_strength_model_v3.py	raw_scorezrebuild.<locals>.raw_score#   s    LP 	! 	!Bb"&!!AyBGAJJyFt+r"v||~~=>rBORSUww_E"/"'")*<*<a@@3r77JKKK\_q AA    c                 B     t          |           | d                   S )Nr   )dict)r'   r1   s    r0   <lambda>zrebuild.<locals>.<lambda>/   s    477AfI)F)F r2      )axisr1   r   c                 T    dt          j        |           z  t                    z  S Nd   )r   r$   r"   )r+   dists    r0   r5   zrebuild.<locals>.<lambda>5   s+    SSUSbcgijSkSkMknqrvnwnwMw r2   strengthF)indexuI   分池基准: 特征percentile+raw_score百分位均按各池自身历史)r/   poolsmethodn_total   c                 T    g | ]$}t          t          j        |                    %S  )r#   r   nanpercentile).0qqs2s     r0   
<listcomp>zrebuild.<locals>.<listcomp>=   s.    KKK1uR-c15566KKKr2   e   )npercentiles
raw_scores
n_with_retr>   z: u   笔(raw基准) / u   笔(含收益)w)ensure_asciiindentu5   
=== 分池验证: 池内强度与收益相关性 ===   rL   c                 n    t          t          j        |           t                    z  dz            S r9   )r#   r   r$   r"   )r+   rss    r0   r5   zrebuild.<locals>.<lambda>J   s1    eBOBPQ<R<RUXY[U\U\<\_b<b6c6c r2   stdF      r:   r   z: rho=z+.3fz p=z.3fz n=u	    | 强均z+.1fz%(u   笔) 弱均u   笔) 差%u   
模型已保存: )r    read_csvBASELINEr   r   r   	spearmanrlocr=   roundr#   applyPOOLSsortedtolistto_csvr"   rangeintsumprintjsondumpopenMODELcopymean)r/   wdfr)   subrho_r   m_modelperr,   strongweaksdr.   r;   rG   r1   rS   s   `             @@@@@r0   rebuildrv      s   	X		BE""# 	/ 	/Bc"gmmoo&r*C_S#'#)U2B*CDDFCc

A..GBKK      hhFFFFQhOOB{O y yZ4bfR_-446677 	y%'VBO%<%B%BCwCwCwCw%x%xBF2z>"IIheI$$$"  9D  QT  UW  QX  QX  Y  YE 	c 	cFt#$ 	f 	fBc"gmmoo&r*CORSVxxZ[||KKKKc

KKKKaeCGG%(XXc.4S5E5L5L5N5N.O.O.1#e*2B2B2D2D2H2H2J2J.K.K M  Mgt 	aaSaaCE
8H8H8J8J8N8N8P8P4Q4QaaabbbbIeT%%%E!DDDD	
BCCC 	~ 	~"V*$5	(9(99:??AAs88b==7^D!,/%++,c,c,c,cddE
USZ88QSZ2%&s3u:?/CBEf++mRUVZR[R[mfUm  ""T%[%5%5%7%773>>afglamam  }  }S  }  }  }!  }  }  }CHH  }  }ve}GYGYG[G[\_G_  }  }  }hklrhshs  }  }  AE  FK  AL  AQ  AQ  AS  AS  TW  AW  }  }  }  `c  dh  `i  `i  }  }  su  }  }  }  }  	~  	~  	~  	~	
'
'
'(((((r2   __main__)r/   )N)__doc__pandasr    numpyr   rf   scipyr   syspathinsertgrid_orgBASEr   ri   rY   r^   rv   __name__rC   r2   r0   <module>r      s                    



 6       v	= 	= 	= %%%***...7) 7) 7) 7)r zGD r2   