
    fi5                        d Z ddlmZ ddlZddlZddlmZ dej        fdZ	 e            dej
        fd            Z	 	 	 	 ddededededej
        f
dZ	 ddededej
        fdZdej
        fdZedk    rI edd	dd          Z ee            edd          Z ee            e            Z ee           dS dS )u   
Date: 2024/6/27 16:00
Desc: 收盘收益率曲线历史数据
https://www.chinamoney.com.cn/chinese/bkcurvclosedyhis/?bondType=CYCC000&reference=1
    )	lru_cacheN)get_tqdmreturnc                  ~   t          j                    } ddi}|                     d|           | j                                        }d                    d |                                D                       }ddi}i d	d
ddddddddddd|ddddddddddddd d!d"d#ddd$d%}|                     d&||'           | j                                        }d                    d( |                                D                       }d)dddd*|dddddd!d#dd%d+}|                     d,|           | S )-u   
    将服务注册到网站中，则该 IP 在 24 小时内可以直接访问
    https://www.chinamoney.com.cn
    :return: 访问过的 Session
    :rtype: requests.Session
    
User-AgentoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36Thttps://www.chinamoney.com.cn/chinese/bkcurvclosedyhis/?bondType=CYCC000&reference=1)urlheadersz; c              3   *   K   | ]\  }}| d | V  dS =N .0kvs      H/usr/local/lib/python3.11/dist-packages/akshare/bond/bond_china_money.py	<genexpr>z*__bond_register_service.<locals>.<genexpr>!   0      HH41aqJJ1JJHHHHHH    keyzTThwSjc2NWkzV0VSOVRzOA==Accept.application/json, text/javascript, */*; q=0.01Accept-Encodinggzip, deflate, brAccept-LanguageenCache-Controlno-cache
Connection
keep-aliveContent-Length22CookieContent-Typez0application/x-www-form-urlencoded; charset=UTF-8Hostwww.chinamoney.com.cnOriginhttps://www.chinamoney.com.cnPragmaRefererSec-Fetch-DestemptySec-Fetch-ModecorsSec-Fetch-Sitesame-originX-Requested-WithXMLHttpRequestz5https://www.chinamoney.com.cn/dqs/rest/cm-u-rbt/apply)r
   datar   c              3   *   K   | ]\  }}| d | V  dS r   r   r   s      r   r   z*__bond_register_service.<locals>.<genexpr>B   r   r   z,application/json, text/javascript, /; q=0.010)r   r   r   r!   r#   r%   r&   r'   r)   r,   r-   r/   r1   r   r3   zBhttps://www.chinamoney.com.cn/lss/rest/cm-s-account/getSessionUser)requestsSessiongetcookiesget_dictjoinitemspost)sessionr   cookies_dictcookies_strr5   s        r   __bond_register_servicerC      s7      G )G KKb     ?++--L))HH<3E3E3G3GHHHHHK -.DB. 	4 		
 	l 	$ 	+ 	J 	' 	1 	* 	i 	' 	& 	-  	 )!$ 	,%G( LLC     ?++--L))HH<3E3E3G3GHHHHHK@."J'1i! '),! G$ LLP     Nr   c                  4   dddddddddd	d
dd} d}	 t          j        ||           }|                                }n@#  t                      }|                    ||           }|                                }Y nxY wt	          j        |d                   }|S )u   
    收盘收益率曲线历史数据
    https://www.chinamoney.com.cn/chinese/bkcurvclosedyhis/?bondType=CYCC000&reference=1
    :return: 收盘收益率曲线历史数据
    :rtype: pandas.DataFrame
    r   r   zh-CN,zh;q=0.9,en;q=0.8r    r"   r7   r(   r*   r	   r   r4   )r   r   r   r   r!   r#   r'   r)   r+   r,   r   r3   zFhttps://www.chinamoney.com.cn/ags/ms/cm-u-bk-currency/ClsYldCurvCurvGO)r   records)r8   r:   jsonrC   pd	DataFrame)r   r
   r	data_jsonr@   temp_dfs         r   bond_china_close_return_maprM   \   s     C.4#"'1i), G SCLg...FFHH		)++KKWK--FFHH			l9Y/00GNs	   *> ;A;   国债120231101symbolperiod
start_dateend_datec                 B   t                      }||d         | k             d         j        d         }d}ddi}dd|d	                    |d
d         |dd         |dd
         g          d	                    |d
d         |dd         |dd
         g          |ddd}t          j        |||          }	|	                                }
t          j        |
d                   }|d= g d|_        |g d         }t          j	        |d         d          j
        j        |d<   t          j        |d         d          |d<   t          j        |d         d          |d<   t          j        |d         d          |d<   t          j        |d         d          |d<   |S )u;  
    收盘收益率曲线历史数据
    https://www.chinamoney.com.cn/chinese/bkcurvclosedyhis/?bondType=CYCC000&reference=1
    :param symbol: 需要获取的指标
    :type period: choice of {'0.1', '0.5', '1'}
    :param period: 期限间隔
    :type symbol: str
    :param start_date: 开始日期, 结束日期和开始日期不要超过 1 个月
    :type start_date: str
    :param end_date: 结束日期, 结束日期和开始日期不要超过 1 个月
    :type end_date: str
    :return: 收盘收益率曲线历史数据
    :rtype: pandas.DataFrame
    cnLabelvaluer   zChttps://www.chinamoney.com.cn/ags/ms/cm-u-bk-currency/ClsYldCurvHisr   r   CNz1,2,3-N      rO   50)lang	referencebondType	startDateendDatetermIdpageNumpageSize)paramsr   rF   newDateValue)   日期   期限   到期收益率   即期收益率   远期收益率rg   coerceerrorsrh   ri   rj   rk   )rM   valuesr=   r8   r:   rG   rH   rI   columnsto_datetimedtdate
to_numeric)rQ   rR   rS   rT   name_code_dfsymbol_coder
   r   re   rJ   rK   rL   s               r   bond_china_close_returnrw      s   ( /00L|I6&@A'JQRSTK
OC )G
 XXz"1"~z!A#
122OPP88Xbqb\8AaC=(122,GHH	 	F 	S999AIl9Y/00G  GO 	
 	
 	
G wx'8JJJMRGHgh&7IIIGH!#w7H/IRZ![![![G!#w7H/IRZ![![![G!#w7H/IRZ![![![GNr   20231204c           
         t                       d                    | dd         | dd         | dd         g          } d                    |dd         |dd         |dd         g          }d}dd| |dd	d
ddd	}i ddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/i}t          j        |||0          }|                                }t          j        |d1                   }g d2|_        t          j        d3 |d4         D                       }g d5|_        t          j        ||gd67          }	|	g d8         }	t          j	        |	d9         d:;          j
        j        |	d9<   t          j        |	d<         d:;          |	d<<   t          j        |	d=         d:;          |	d=<   t          j        |	d>         d:;          |	d><   t          j        |	d?         d:;          |	d?<   t          j        |	d@         d:;          |	d@<   t          j        |	dA         d:;          |	dA<   t          j        |	dB         d:;          |	dB<   t          j        |	dC         d:;          |	dC<   t          j        |	dD         d:;          |	dD<   t          j        |	dE         d:;          |	dE<   t          j        |	dF         d:;          |	dF<   |	                    d9gdGdGH           |	S )Iu  
    FR007 利率互换曲线历史数据; 只能获取近一年的数据
    https://www.chinamoney.com.cn/chinese/bkcurvfxhis/?cfgItemType=72&curveType=FR007
    :param start_date: 开始日期, 开始和结束日期不得超过一个月
    :type start_date: str
    :param end_date: 结束日期, 开始和结束日期不得超过一个月
    :type end_date: str
    :return: FR007利率互换曲线历史数据
    :rtype: pandas.DataFrame
    rY   NrZ   r[   z;https://www.chinamoney.com.cn/ags/ms/cm-u-bk-shibor/IfccHis72r7    rX   u   全部5000rO   )	cfgItemTypeinterestRateTyper`   ra   
bidAskTyper]   	quoteTimerd   rc   r   r   r   r   r   rE   r   r    r!   r"   r#   r'   r(   r)   r*   r+   r,   zQhttps://www.chinamoney.com.cn/chinese/bkcurvfxhis/?cfgItemType=72&curveType=FR007z	sec-ch-uazA"Google Chrome";v="107", "Chromium";v="107", "Not=A?Brand";v="24"zsec-ch-ua-mobilez?0zsec-ch-ua-platformz	"Windows"r-   r.   r/   r0   r1   r2   r   oMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36r3   r4   r5   r   rF   )rg   _r      时刻r   r   r   r   r      价格类型r      曲线名称r   r   r   r   r5   c                     g | ]}|S r   r   )r   items     r   
<listcomp>z)macro_china_swap_rate.<locals>.<listcomp>  s    >>>dT>>>r   r5   )1M3M6M9M1Y2Y3Y4Y5Y7Y10Y   )objsaxis)rg   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rg   rl   rm   r   r   r   r   r   r   r   r   r   r   r   T)inplaceignore_index)rM   r=   r8   r?   rG   rH   rI   rp   concatrq   rr   rs   rt   sort_values)
rS   rT   r
   re   r   rJ   rK   rL   price_dfbig_dfs
             r   macro_china_swap_rater      s     !!!:bqb>:ac?JqrrNKLLJxx"1"x!}hqrrlCDDH
GC
 
FB. 	4 		
 	l 	# 	' 	1 	* 	f 	X 	D 	k 	' 	&  	-!" 	 )#& 	,' G* 	c888AIl9Y/00G  GO& |>>gfo>>>??H  H YWh/a888F	
 	
 	
F& ~fX&6xHHHKPF8=h???F4L=h???F4L=h???F4L=h???F4L=h???F4L=h???F4L=h???F4L=h???F4L=h???F4L=h???F4LM&-AAAF5M
z4dCCCMr   c                     t                       d} ddi}dddddddd}t          j        | ||          }|                                }t	          |d	         d
                   dz   }t          j                    }t                      } |t          d|          d          D ]v}|	                    d|i           t          j        | ||          }|                                }t          j        |d                   }	t          j
        ||	gd          }wg d|_        |g d         }t          j        |d         d          |d<   t          j        |d         d          |d<   |S )u   
    中国-债券信息披露-债券发行
    https://www.chinamoney.com.cn/chinese/xzjfx/
    :return: 债券发行
    :rtype: pandas.DataFrame
    z<https://www.chinamoney.com.cn/ags/ms/cm-u-bond-an/bnBondEmitr   r   r{   rO   10)entyr_   bondNameCodeleadUnderwriterpageNord   limitr   r5   pageTotalSizer   F)leaver   rF   T)r   r   )   债券全称   债券类型rY      发行日期rY      计息方式rY      债券期限rY      债券评级rY      价格   计划发行量)r   r   r   r   r   r   r   r   r   rl   rm   r   )rM   r8   r?   rG   intrH   rI   r   rangeupdater   rp   rt   )
r
   r   payloadrJ   rK   
total_pager   tqdmpagerL   s
             r   macro_china_bond_publicr   9  s     !!!
HC )G
  G 	c999AIYv&7881<J\^^F::DU1j))777 F F$'(((M#GW===FFHH	,y344 1EEE  FN 		
 		
 		
F }VH%5hGGGF8 "f5F.GPX Y Y YFMr   __main__u   同业存单(AAA)20240607)rQ   rR   rS   rT   2025101020251208)rS   rT   )rN   rO   rP   rP   )rP   rx   )__doc__	functoolsr   pandasrH   r8   akshare.utils.tqdmr   r9   rC   rI   rM   strrw   r   r   __name__bond_china_close_return_dfprintmacro_china_swap_rate_dfmacro_china_bond_public_dfr   r   r   <module>r      s                ' ' ' ' ' 'I!1 I I I IX R\    F  	> >>> > 	>
 \> > > >D 3=v vv,/v\v v v vr> > > > >B z!8!8"3:PZ" " " 
E
$%%%44
      
E
"###!8!8!:!:	E
$%%%%% r   