fa45d8aa5f
- health_checklist.json: 192.168.1.122→node122
- ocr_client.py: docstring IP→node122
- docs/market-data-requirements.md: IP→node122
- 所有API调用通过ProxyHandler({})绕过系统代理
Privoxy对node122:18003返回500,直连正常
105 lines
4.0 KiB
Python
105 lines
4.0 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding:utf-8 -*-
|
|
"""
|
|
Date: 2026/2/4 17:00
|
|
Desc: 新浪财经-债券-中国/美国国债收益率
|
|
https://vip.stock.finance.sina.com.cn/mkt/#hs_z
|
|
"""
|
|
|
|
import pandas as pd
|
|
import requests
|
|
|
|
|
|
def bond_gb_zh_sina(symbol: str = "中国10年期国债") -> pd.DataFrame:
|
|
"""
|
|
新浪财经-债券-中国国债收益率行情数据
|
|
https://stock.finance.sina.com.cn/forex/globalbd/cn10yt.html
|
|
:param symbol: choice of {"中国1年期国债", "中国2年期国债", "中国3年期国债", "中国5年期国债", "中国7年期国债", "中国10年期国债", "中国15年期国债", "中国20年期国债", "中国30年期国债"}
|
|
:type symbol: str
|
|
:return: 中国国债收益率行情数据
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
symbol_map = {
|
|
"中国1年期国债": "CN1YT",
|
|
"中国2年期国债": "CN2YT",
|
|
"中国3年期国债": "CN3YT",
|
|
"中国5年期国债": "CN5YT",
|
|
"中国7年期国债": "CN7YT",
|
|
"中国10年期国债": "CN10YT",
|
|
"中国15年期国债": "CN15YT",
|
|
"中国20年期国债": "CN20YT",
|
|
"中国30年期国债": "CN30YT",
|
|
}
|
|
url = f"https://bond.finance.sina.com.cn/hq/gb/daily?symbol={symbol_map[symbol]}"
|
|
r = requests.get(url)
|
|
data_json = r.json()
|
|
temp_df = pd.DataFrame(data_json["result"]["data"])
|
|
temp_df.columns = [
|
|
"date",
|
|
"open",
|
|
"high",
|
|
"low",
|
|
"close",
|
|
"volume",
|
|
]
|
|
temp_df["date"] = pd.to_datetime(temp_df["date"], errors="coerce").dt.date
|
|
temp_df["open"] = pd.to_numeric(temp_df["open"], errors="coerce")
|
|
temp_df["high"] = pd.to_numeric(temp_df["high"], errors="coerce")
|
|
temp_df["low"] = pd.to_numeric(temp_df["low"], errors="coerce")
|
|
temp_df["close"] = pd.to_numeric(temp_df["close"], errors="coerce")
|
|
temp_df["volume"] = pd.to_numeric(temp_df["volume"], errors="coerce")
|
|
return temp_df
|
|
|
|
|
|
def bond_gb_us_sina(symbol: str = "美国10年期国债") -> pd.DataFrame:
|
|
"""
|
|
新浪财经-债券-美国国债收益率行情数据
|
|
https://stock.finance.sina.com.cn/forex/globalbd/cn10yt.html
|
|
:param symbol: choice of {"美国1月期国债", "美国2月期国债", "美国3月期国债", "美国4月期国债", "美国6月期国债", "美国1年期国债", "美国2年期国债", "美国3年期国债", "美国5年期国债", "美国7年期国债", "美国10年期国债", "美国20年期国债", "美国30年期国债"}
|
|
:type symbol: str
|
|
:return: 美国国债收益率行情数据
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
symbol_map = {
|
|
"美国1月期国债": "US1MT",
|
|
"美国2月期国债": "US2MT",
|
|
"美国3月期国债": "US3MT",
|
|
"美国4月期国债": "US4MT",
|
|
"美国6月期国债": "US6MT",
|
|
"美国1年期国债": "US1YT",
|
|
"美国2年期国债": "US2YT",
|
|
"美国3年期国债": "US3YT",
|
|
"美国5年期国债": "US5YT",
|
|
"美国7年期国债": "US7YT",
|
|
"美国10年期国债": "US10YT",
|
|
"美国20年期国债": "US20YT",
|
|
"美国30年期国债": "US30YT",
|
|
}
|
|
url = f"https://bond.finance.sina.com.cn/hq/gb/daily?symbol={symbol_map[symbol]}"
|
|
r = requests.get(url)
|
|
data_json = r.json()
|
|
temp_df = pd.DataFrame(data_json["result"]["data"])
|
|
temp_df.columns = [
|
|
"date",
|
|
"open",
|
|
"high",
|
|
"low",
|
|
"close",
|
|
"volume",
|
|
]
|
|
temp_df["date"] = pd.to_datetime(temp_df["date"], errors="coerce").dt.date
|
|
temp_df["open"] = pd.to_numeric(temp_df["open"], errors="coerce")
|
|
temp_df["high"] = pd.to_numeric(temp_df["high"], errors="coerce")
|
|
temp_df["low"] = pd.to_numeric(temp_df["low"], errors="coerce")
|
|
temp_df["close"] = pd.to_numeric(temp_df["close"], errors="coerce")
|
|
temp_df["volume"] = pd.to_numeric(temp_df["volume"], errors="coerce")
|
|
return temp_df
|
|
|
|
|
|
if __name__ == "__main__":
|
|
bond_gb_zh_sina_df = bond_gb_zh_sina(symbol="中国10年期国债")
|
|
print(bond_gb_zh_sina_df)
|
|
|
|
bond_gb_us_sina_df = bond_gb_us_sina(symbol="美国10年期国债")
|
|
print(bond_gb_us_sina_df)
|