siat 3.10.131__py3-none-any.whl → 3.10.132__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- build/lib/build/lib/siat/__init__.py +75 -0
- build/lib/build/lib/siat/allin.py +137 -0
- build/lib/build/lib/siat/assets_liquidity.py +915 -0
- build/lib/build/lib/siat/beta_adjustment.py +1058 -0
- build/lib/build/lib/siat/beta_adjustment_china.py +548 -0
- build/lib/build/lib/siat/blockchain.py +143 -0
- build/lib/build/lib/siat/bond.py +2900 -0
- build/lib/build/lib/siat/bond_base.py +992 -0
- build/lib/build/lib/siat/bond_china.py +100 -0
- build/lib/build/lib/siat/bond_zh_sina.py +143 -0
- build/lib/build/lib/siat/capm_beta.py +783 -0
- build/lib/build/lib/siat/capm_beta2.py +887 -0
- build/lib/build/lib/siat/common.py +5360 -0
- build/lib/build/lib/siat/compare_cross.py +642 -0
- build/lib/build/lib/siat/copyrights.py +18 -0
- build/lib/build/lib/siat/cryptocurrency.py +667 -0
- build/lib/build/lib/siat/economy.py +1471 -0
- build/lib/build/lib/siat/economy2.py +1853 -0
- build/lib/build/lib/siat/esg.py +536 -0
- build/lib/build/lib/siat/event_study.py +815 -0
- build/lib/build/lib/siat/fama_french.py +1521 -0
- build/lib/build/lib/siat/fin_stmt2_yahoo.py +982 -0
- build/lib/build/lib/siat/financial_base.py +1160 -0
- build/lib/build/lib/siat/financial_statements.py +598 -0
- build/lib/build/lib/siat/financials.py +2339 -0
- build/lib/build/lib/siat/financials2.py +1278 -0
- build/lib/build/lib/siat/financials_china.py +4433 -0
- build/lib/build/lib/siat/financials_china2.py +2212 -0
- build/lib/build/lib/siat/fund.py +629 -0
- build/lib/build/lib/siat/fund_china.py +3307 -0
- build/lib/build/lib/siat/future_china.py +551 -0
- build/lib/build/lib/siat/google_authenticator.py +47 -0
- build/lib/build/lib/siat/grafix.py +3636 -0
- build/lib/build/lib/siat/holding_risk.py +867 -0
- build/lib/build/lib/siat/luchy_draw.py +638 -0
- build/lib/build/lib/siat/market_china.py +1168 -0
- build/lib/build/lib/siat/markowitz.py +2363 -0
- build/lib/build/lib/siat/markowitz2.py +3150 -0
- build/lib/build/lib/siat/markowitz2_20250704.py +2969 -0
- build/lib/build/lib/siat/markowitz2_20250705.py +3158 -0
- build/lib/build/lib/siat/markowitz_simple.py +373 -0
- build/lib/build/lib/siat/ml_cases.py +2291 -0
- build/lib/build/lib/siat/ml_cases_example.py +60 -0
- build/lib/build/lib/siat/option_china.py +3069 -0
- build/lib/build/lib/siat/option_pricing.py +1925 -0
- build/lib/build/lib/siat/other_indexes.py +409 -0
- build/lib/build/lib/siat/risk_adjusted_return.py +1576 -0
- build/lib/build/lib/siat/risk_adjusted_return2.py +1900 -0
- build/lib/build/lib/siat/risk_evaluation.py +2218 -0
- build/lib/build/lib/siat/risk_free_rate.py +351 -0
- build/lib/build/lib/siat/sector_china.py +4140 -0
- build/lib/build/lib/siat/security_price2.py +727 -0
- build/lib/build/lib/siat/security_prices.py +3408 -0
- build/lib/build/lib/siat/security_trend.py +402 -0
- build/lib/build/lib/siat/security_trend2.py +646 -0
- build/lib/build/lib/siat/stock.py +4284 -0
- build/lib/build/lib/siat/stock_advice_linear.py +934 -0
- build/lib/build/lib/siat/stock_base.py +26 -0
- build/lib/build/lib/siat/stock_china.py +2095 -0
- build/lib/build/lib/siat/stock_prices_kneighbors.py +910 -0
- build/lib/build/lib/siat/stock_prices_linear.py +386 -0
- build/lib/build/lib/siat/stock_profile.py +707 -0
- build/lib/build/lib/siat/stock_technical.py +3305 -0
- build/lib/build/lib/siat/stooq.py +74 -0
- build/lib/build/lib/siat/transaction.py +347 -0
- build/lib/build/lib/siat/translate.py +5183 -0
- build/lib/build/lib/siat/valuation.py +1378 -0
- build/lib/build/lib/siat/valuation_china.py +2076 -0
- build/lib/build/lib/siat/var_model_validation.py +444 -0
- build/lib/build/lib/siat/yf_name.py +811 -0
- build/lib/siat/__init__.py +75 -0
- build/lib/siat/allin.py +137 -0
- build/lib/siat/assets_liquidity.py +915 -0
- build/lib/siat/beta_adjustment.py +1058 -0
- build/lib/siat/beta_adjustment_china.py +548 -0
- build/lib/siat/blockchain.py +143 -0
- build/lib/siat/bond.py +2900 -0
- build/lib/siat/bond_base.py +992 -0
- build/lib/siat/bond_china.py +100 -0
- build/lib/siat/bond_zh_sina.py +143 -0
- build/lib/siat/capm_beta.py +783 -0
- build/lib/siat/capm_beta2.py +887 -0
- build/lib/siat/common.py +5360 -0
- build/lib/siat/compare_cross.py +642 -0
- build/lib/siat/copyrights.py +18 -0
- build/lib/siat/cryptocurrency.py +667 -0
- build/lib/siat/economy.py +1471 -0
- build/lib/siat/economy2.py +1853 -0
- build/lib/siat/esg.py +536 -0
- build/lib/siat/event_study.py +815 -0
- build/lib/siat/fama_french.py +1521 -0
- build/lib/siat/fin_stmt2_yahoo.py +982 -0
- build/lib/siat/financial_base.py +1160 -0
- build/lib/siat/financial_statements.py +598 -0
- build/lib/siat/financials.py +2339 -0
- build/lib/siat/financials2.py +1278 -0
- build/lib/siat/financials_china.py +4433 -0
- build/lib/siat/financials_china2.py +2212 -0
- build/lib/siat/fund.py +629 -0
- build/lib/siat/fund_china.py +3307 -0
- build/lib/siat/future_china.py +551 -0
- build/lib/siat/google_authenticator.py +47 -0
- build/lib/siat/grafix.py +3636 -0
- build/lib/siat/holding_risk.py +867 -0
- build/lib/siat/luchy_draw.py +638 -0
- build/lib/siat/market_china.py +1168 -0
- build/lib/siat/markowitz.py +2363 -0
- build/lib/siat/markowitz2.py +3150 -0
- build/lib/siat/markowitz2_20250704.py +2969 -0
- build/lib/siat/markowitz2_20250705.py +3158 -0
- build/lib/siat/markowitz_simple.py +373 -0
- build/lib/siat/ml_cases.py +2291 -0
- build/lib/siat/ml_cases_example.py +60 -0
- build/lib/siat/option_china.py +3069 -0
- build/lib/siat/option_pricing.py +1925 -0
- build/lib/siat/other_indexes.py +409 -0
- build/lib/siat/risk_adjusted_return.py +1576 -0
- build/lib/siat/risk_adjusted_return2.py +1900 -0
- build/lib/siat/risk_evaluation.py +2218 -0
- build/lib/siat/risk_free_rate.py +351 -0
- build/lib/siat/sector_china.py +4140 -0
- build/lib/siat/security_price2.py +727 -0
- build/lib/siat/security_prices.py +3408 -0
- build/lib/siat/security_trend.py +402 -0
- build/lib/siat/security_trend2.py +646 -0
- build/lib/siat/stock.py +4284 -0
- build/lib/siat/stock_advice_linear.py +934 -0
- build/lib/siat/stock_base.py +26 -0
- build/lib/siat/stock_china.py +2095 -0
- build/lib/siat/stock_prices_kneighbors.py +910 -0
- build/lib/siat/stock_prices_linear.py +386 -0
- build/lib/siat/stock_profile.py +707 -0
- build/lib/siat/stock_technical.py +3305 -0
- build/lib/siat/stooq.py +74 -0
- build/lib/siat/transaction.py +347 -0
- build/lib/siat/translate.py +5183 -0
- build/lib/siat/valuation.py +1378 -0
- build/lib/siat/valuation_china.py +2076 -0
- build/lib/siat/var_model_validation.py +444 -0
- build/lib/siat/yf_name.py +811 -0
- siat/__init__.py +0 -0
- siat/allin.py +0 -0
- siat/assets_liquidity.py +0 -0
- siat/beta_adjustment.py +0 -0
- siat/beta_adjustment_china.py +0 -0
- siat/blockchain.py +0 -0
- siat/bond.py +0 -0
- siat/bond_base.py +0 -0
- siat/bond_china.py +0 -0
- siat/bond_zh_sina.py +0 -0
- siat/capm_beta.py +0 -0
- siat/capm_beta2.py +0 -0
- siat/common.py +136 -3
- siat/compare_cross.py +0 -0
- siat/copyrights.py +0 -0
- siat/cryptocurrency.py +0 -0
- siat/economy.py +0 -0
- siat/economy2.py +0 -0
- siat/esg.py +0 -0
- siat/event_study.py +0 -0
- siat/exchange_bond_china.pickle +0 -0
- siat/fama_french.py +0 -0
- siat/fin_stmt2_yahoo.py +0 -0
- siat/financial_base.py +0 -0
- siat/financial_statements.py +0 -0
- siat/financials.py +0 -0
- siat/financials2.py +0 -0
- siat/financials_china.py +0 -0
- siat/financials_china2.py +0 -0
- siat/fund.py +0 -0
- siat/fund_china.pickle +0 -0
- siat/fund_china.py +0 -0
- siat/future_china.py +0 -0
- siat/google_authenticator.py +0 -0
- siat/grafix.py +1 -1
- siat/holding_risk.py +0 -0
- siat/luchy_draw.py +0 -0
- siat/market_china.py +1 -1
- siat/markowitz.py +0 -0
- siat/markowitz2.py +240 -39
- siat/markowitz2_20250704.py +2969 -0
- siat/markowitz2_20250705.py +3158 -0
- siat/markowitz_simple.py +0 -0
- siat/ml_cases.py +0 -0
- siat/ml_cases_example.py +0 -0
- siat/option_china.py +0 -0
- siat/option_pricing.py +0 -0
- siat/other_indexes.py +0 -0
- siat/risk_adjusted_return.py +0 -0
- siat/risk_adjusted_return2.py +0 -0
- siat/risk_evaluation.py +0 -0
- siat/risk_free_rate.py +0 -0
- siat/sector_china.py +0 -0
- siat/security_price2.py +0 -0
- siat/security_prices.py +3 -1
- siat/security_trend.py +0 -0
- siat/security_trend2.py +1 -1
- siat/stock.py +4 -2
- siat/stock_advice_linear.py +0 -0
- siat/stock_base.py +0 -0
- siat/stock_china.py +0 -0
- siat/stock_info.pickle +0 -0
- siat/stock_prices_kneighbors.py +0 -0
- siat/stock_prices_linear.py +0 -0
- siat/stock_profile.py +0 -0
- siat/stock_technical.py +0 -0
- siat/stooq.py +0 -0
- siat/transaction.py +0 -0
- siat/translate.py +11 -11
- siat/valuation.py +0 -0
- siat/valuation_china.py +0 -0
- siat/var_model_validation.py +0 -0
- siat/yf_name.py +0 -0
- {siat-3.10.131.dist-info → siat-3.10.132.dist-info}/METADATA +235 -227
- siat-3.10.132.dist-info/RECORD +218 -0
- {siat-3.10.131.dist-info → siat-3.10.132.dist-info}/WHEEL +1 -1
- {siat-3.10.131.dist-info → siat-3.10.132.dist-info/licenses}/LICENSE +0 -0
- siat-3.10.132.dist-info/top_level.txt +4 -0
- siat-3.10.131.dist-info/RECORD +0 -76
- siat-3.10.131.dist-info/top_level.txt +0 -1
@@ -0,0 +1,100 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
"""
|
4
|
+
本模块功能:债券,仅用于中国,目前针对交易所债券,仿照股票分析模式
|
5
|
+
所属工具包:证券投资分析工具SIAT
|
6
|
+
SIAT:Security Investment Analysis Tool
|
7
|
+
创建日期:2023年5月25日
|
8
|
+
最新修订日期:2023年5月25日
|
9
|
+
作者:王德宏 (WANG Dehong, Peter)
|
10
|
+
作者单位:北京外国语大学国际商学院
|
11
|
+
版权所有:王德宏
|
12
|
+
用途限制:仅限研究与教学使用,不可商用!商用需要额外授权。
|
13
|
+
特别声明:作者不对使用本工具进行证券投资导致的任何损益负责!
|
14
|
+
|
15
|
+
注意:未完工,暂不使用!
|
16
|
+
"""
|
17
|
+
|
18
|
+
#==============================================================================
|
19
|
+
#关闭所有警告
|
20
|
+
import warnings; warnings.filterwarnings('ignore')
|
21
|
+
from siat.grafix import *
|
22
|
+
from siat.common import *
|
23
|
+
from siat.translate import *
|
24
|
+
from siat.bond_base import *
|
25
|
+
from siat.bond import *
|
26
|
+
from siat.stock import *
|
27
|
+
from siat.security_prices import *
|
28
|
+
from siat.security_price2 import *
|
29
|
+
#==============================================================================
|
30
|
+
import matplotlib.pyplot as plt
|
31
|
+
#plt.rcParams['figure.figsize']=(12.8,7.2)
|
32
|
+
plt.rcParams['figure.figsize']=(12.8,6.4)
|
33
|
+
plt.rcParams['figure.dpi']=300
|
34
|
+
plt.rcParams['font.size'] = 13
|
35
|
+
plt.rcParams['xtick.labelsize']=11 #横轴字体大小
|
36
|
+
plt.rcParams['ytick.labelsize']=11 #纵轴字体大小
|
37
|
+
|
38
|
+
title_txt_size=16
|
39
|
+
ylabel_txt_size=14
|
40
|
+
xlabel_txt_size=14
|
41
|
+
legend_txt_size=14
|
42
|
+
|
43
|
+
#处理绘图汉字乱码问题
|
44
|
+
import sys; czxt=sys.platform
|
45
|
+
if czxt in ['win32','win64']:
|
46
|
+
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置默认字体
|
47
|
+
mpfrc={'font.family': 'SimHei'}
|
48
|
+
|
49
|
+
if czxt in ['darwin']: #MacOSX
|
50
|
+
plt.rcParams['font.family']= ['Heiti TC']
|
51
|
+
mpfrc={'font.family': 'Heiti TC'}
|
52
|
+
|
53
|
+
if czxt in ['linux']: #website Jupyter
|
54
|
+
plt.rcParams['font.family']= ['Heiti TC']
|
55
|
+
mpfrc={'font.family':'Heiti TC'}
|
56
|
+
|
57
|
+
# 解决保存图像时'-'显示为方块的问题
|
58
|
+
plt.rcParams['axes.unicode_minus'] = False
|
59
|
+
#==============================================================================
|
60
|
+
if __name__ =="__main__":
|
61
|
+
ticker="010107.SS"
|
62
|
+
ticker="102229.SZ"
|
63
|
+
ticker2symbol(ticker)
|
64
|
+
|
65
|
+
def ticker2symbol(ticker):
|
66
|
+
"""
|
67
|
+
功能:将xxxxxx.SS格式转换为shxxxxxx
|
68
|
+
"""
|
69
|
+
ticker1=ticker.upper()
|
70
|
+
exchTag=ticker1[-3:]
|
71
|
+
bondCode=ticker1[:-3]
|
72
|
+
|
73
|
+
exchList=['.SS','.SZ']
|
74
|
+
if not (exchTag in exchList):
|
75
|
+
print(" #Error(): unsupported type of exchange for bond",ticker)
|
76
|
+
print(" Supported exchange bond suffix:",exchList)
|
77
|
+
return None
|
78
|
+
|
79
|
+
if exchTag=='.SS':
|
80
|
+
symbol='sh'+bondCode
|
81
|
+
|
82
|
+
if exchTag=='.SZ':
|
83
|
+
symbol='sz'+bondCode
|
84
|
+
|
85
|
+
return symbol
|
86
|
+
|
87
|
+
#==============================================================================
|
88
|
+
if __name__ =="__main__":
|
89
|
+
ticker="010107.SS"
|
90
|
+
fromdate="2023-1-1"
|
91
|
+
todate="2023-5-20"
|
92
|
+
rtype="Daily Ret%"
|
93
|
+
datatag=False
|
94
|
+
power=3
|
95
|
+
retinfo=exchbond_ret(ticker,fromdate,todate,power=power)
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
|
100
|
+
|
@@ -0,0 +1,143 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
# -*- coding:utf-8 -*-
|
3
|
+
"""
|
4
|
+
Date: 2024/2/28 23:00
|
5
|
+
Desc: 新浪财经-债券-沪深债券-实时行情数据和历史行情数据
|
6
|
+
https://vip.stock.finance.sina.com.cn/mkt/#hs_z
|
7
|
+
"""
|
8
|
+
import datetime
|
9
|
+
import re
|
10
|
+
|
11
|
+
import pandas as pd
|
12
|
+
import requests
|
13
|
+
from py_mini_racer import py_mini_racer
|
14
|
+
|
15
|
+
from akshare.bond.cons import (
|
16
|
+
zh_sina_bond_hs_count_url,
|
17
|
+
zh_sina_bond_hs_payload,
|
18
|
+
zh_sina_bond_hs_url,
|
19
|
+
zh_sina_bond_hs_hist_url,
|
20
|
+
)
|
21
|
+
from akshare.stock.cons import hk_js_decode
|
22
|
+
from akshare.utils import demjson
|
23
|
+
from akshare.utils.tqdm import get_tqdm
|
24
|
+
|
25
|
+
|
26
|
+
def get_zh_bond_hs_page_count() -> int:
|
27
|
+
"""
|
28
|
+
行情中心首页-债券-沪深债券的总页数
|
29
|
+
https://vip.stock.finance.sina.com.cn/mkt/#hs_z
|
30
|
+
:return: 总页数
|
31
|
+
:rtype: int
|
32
|
+
"""
|
33
|
+
params = {
|
34
|
+
"node": "hs_z",
|
35
|
+
}
|
36
|
+
res = requests.get(zh_sina_bond_hs_count_url, params=params)
|
37
|
+
page_count = int(re.findall(re.compile(r"\d+"), res.text)[0]) / 80
|
38
|
+
if isinstance(page_count, int):
|
39
|
+
return page_count
|
40
|
+
else:
|
41
|
+
return int(page_count) + 1
|
42
|
+
|
43
|
+
|
44
|
+
def bond_zh_hs_spot() -> pd.DataFrame:
|
45
|
+
"""
|
46
|
+
新浪财经-债券-沪深债券-实时行情数据, 大量抓取容易封IP
|
47
|
+
https://vip.stock.finance.sina.com.cn/mkt/#hs_z
|
48
|
+
:return: 所有沪深债券在当前时刻的实时行情数据
|
49
|
+
:rtype: pandas.DataFrame
|
50
|
+
"""
|
51
|
+
page_count = get_zh_bond_hs_page_count()
|
52
|
+
zh_sina_bond_hs_payload_copy = zh_sina_bond_hs_payload.copy()
|
53
|
+
tqdm = get_tqdm()
|
54
|
+
big_df = pd.DataFrame()
|
55
|
+
for page in tqdm(range(1, page_count + 1), leave=False):
|
56
|
+
zh_sina_bond_hs_payload_copy.update({"page": page})
|
57
|
+
r = requests.get(zh_sina_bond_hs_url, params=zh_sina_bond_hs_payload_copy)
|
58
|
+
data_json = demjson.decode(r.text)
|
59
|
+
temp_df = pd.DataFrame(data_json)
|
60
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
61
|
+
big_df.columns = [
|
62
|
+
'代码',
|
63
|
+
'-',
|
64
|
+
'名称',
|
65
|
+
'最新价',
|
66
|
+
'涨跌额',
|
67
|
+
'涨跌幅',
|
68
|
+
'买入',
|
69
|
+
'卖出',
|
70
|
+
'昨收',
|
71
|
+
'今开',
|
72
|
+
'最高',
|
73
|
+
'最低',
|
74
|
+
'成交量',
|
75
|
+
'成交额',
|
76
|
+
'-',
|
77
|
+
'-',
|
78
|
+
'-',
|
79
|
+
'-',
|
80
|
+
'-',
|
81
|
+
'-',
|
82
|
+
]
|
83
|
+
big_df = big_df[[
|
84
|
+
'代码',
|
85
|
+
'名称',
|
86
|
+
'最新价',
|
87
|
+
'涨跌额',
|
88
|
+
'涨跌幅',
|
89
|
+
'买入',
|
90
|
+
'卖出',
|
91
|
+
'昨收',
|
92
|
+
'今开',
|
93
|
+
'最高',
|
94
|
+
'最低',
|
95
|
+
'成交量',
|
96
|
+
'成交额',
|
97
|
+
]]
|
98
|
+
big_df['买入'] = pd.to_numeric(big_df['买入'], errors="coerce")
|
99
|
+
big_df['卖出'] = pd.to_numeric(big_df['卖出'], errors="coerce")
|
100
|
+
big_df['昨收'] = pd.to_numeric(big_df['昨收'], errors="coerce")
|
101
|
+
big_df['今开'] = pd.to_numeric(big_df['今开'], errors="coerce")
|
102
|
+
big_df['最高'] = pd.to_numeric(big_df['最高'], errors="coerce")
|
103
|
+
big_df['最低'] = pd.to_numeric(big_df['最低'], errors="coerce")
|
104
|
+
big_df['最新价'] = pd.to_numeric(big_df['最新价'], errors="coerce")
|
105
|
+
return big_df
|
106
|
+
|
107
|
+
|
108
|
+
def bond_zh_hs_daily(symbol: str = "sh010107") -> pd.DataFrame:
|
109
|
+
"""
|
110
|
+
新浪财经-债券-沪深债券-历史行情数据, 大量抓取容易封 IP
|
111
|
+
https://vip.stock.finance.sina.com.cn/mkt/#hs_z
|
112
|
+
:param symbol: 沪深债券代码; e.g., sh010107
|
113
|
+
:type symbol: str
|
114
|
+
:return: 指定沪深债券代码的日 K 线数据
|
115
|
+
:rtype: pandas.DataFrame
|
116
|
+
"""
|
117
|
+
r = requests.get(
|
118
|
+
zh_sina_bond_hs_hist_url.format(
|
119
|
+
symbol, datetime.datetime.now().strftime("%Y_%m_%d")
|
120
|
+
)
|
121
|
+
)
|
122
|
+
js_code = py_mini_racer.MiniRacer()
|
123
|
+
js_code.eval(hk_js_decode)
|
124
|
+
dict_list = js_code.call(
|
125
|
+
"d", r.text.split("=")[1].split(";")[0].replace('"', "")
|
126
|
+
) # 执行 js 解密代码
|
127
|
+
if len(dict_list) == 0: return None
|
128
|
+
|
129
|
+
data_df = pd.DataFrame(dict_list)
|
130
|
+
data_df["date"] = pd.to_datetime(data_df["date"], errors="coerce").dt.date
|
131
|
+
data_df['open'] = pd.to_numeric(data_df['open'], errors="coerce")
|
132
|
+
data_df['high'] = pd.to_numeric(data_df['high'], errors="coerce")
|
133
|
+
data_df['low'] = pd.to_numeric(data_df['low'], errors="coerce")
|
134
|
+
data_df['close'] = pd.to_numeric(data_df['close'], errors="coerce")
|
135
|
+
return data_df
|
136
|
+
|
137
|
+
|
138
|
+
if __name__ == "__main__":
|
139
|
+
bond_zh_hs_spot_df = bond_zh_hs_spot()
|
140
|
+
print(bond_zh_hs_spot_df)
|
141
|
+
|
142
|
+
bond_zh_hs_daily_df = bond_zh_hs_daily(symbol="sh010107")
|
143
|
+
print(bond_zh_hs_daily_df)
|