siat 3.7.22__py3-none-any.whl → 3.7.24__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.
- siat/common.py +93 -1
- siat/security_price2.py +7 -0
- siat/security_prices.py +5 -1
- siat/security_trend2.py +4 -0
- siat/stock.py +13 -0
- siat/translate.py +7 -1
- siat/yf_name.py +106 -8
- {siat-3.7.22.dist-info → siat-3.7.24.dist-info}/METADATA +1 -1
- {siat-3.7.22.dist-info → siat-3.7.24.dist-info}/RECORD +12 -12
- {siat-3.7.22.dist-info → siat-3.7.24.dist-info}/LICENSE +0 -0
- {siat-3.7.22.dist-info → siat-3.7.24.dist-info}/WHEEL +0 -0
- {siat-3.7.22.dist-info → siat-3.7.24.dist-info}/top_level.txt +0 -0
siat/common.py
CHANGED
@@ -4848,12 +4848,104 @@ async def jupyter2pdf(notebook_path, output_pdf_path, size="A3"):
|
|
4848
4848
|
elif os.path.exists(html_file):
|
4849
4849
|
os.remove(html_file)
|
4850
4850
|
|
4851
|
+
return
|
4852
|
+
|
4851
4853
|
if __name__ == '__main__':
|
4852
4854
|
# 定义 Notebook 路径和输出 PDF 路径
|
4853
4855
|
notebook_path = r"S:\SIA\机工社版本\脚本测试\证券投资分析-第一章案例Python脚本-检测2.ipynb" # 替换为你的 Notebook 文件路径
|
4854
4856
|
output_pdf_path = "E:/output_notebook.pdf" # 替换为你想保存的 PDF 文件路径
|
4855
|
-
#await
|
4857
|
+
#await jupyter2pdf(notebook_path, output_pdf_path)
|
4858
|
+
# 注意:上面的await命令会导致编译失败,测试后要注释掉
|
4859
|
+
|
4860
|
+
#==============================================================================
|
4861
|
+
async def jupyter2pdf2(notebook_dir, notebook_file):
|
4862
|
+
"""
|
4863
|
+
将 Jupyter Notebook 转换为 PDF 文件
|
4864
|
+
参数:
|
4865
|
+
notebook_dir (str): Jupyter Notebook文件所在的目录,不含文件名
|
4866
|
+
notebook_file (str): Jupyter Notebook文件名
|
4867
|
+
输出:
|
4868
|
+
同时生成A4和A3两种幅面的pdf文件,由使用者自行挑选一个效果最好的。
|
4869
|
+
返回:
|
4870
|
+
None
|
4871
|
+
注意1:pip install playwright之后可能还要执行playwright install
|
4872
|
+
注意2:调用本函数的格式是异步await开头
|
4873
|
+
await convert_notebook_to_pdf(notebook_path, output_pdf_path)
|
4874
|
+
注意3:notebook_path和output_pdf_path中可以带路径
|
4875
|
+
"""
|
4876
|
+
|
4877
|
+
# 路径分割符号
|
4878
|
+
if ('/' in notebook_dir) and not ('\\' in notebook_dir):
|
4879
|
+
sep='/'
|
4880
|
+
else:
|
4881
|
+
sep='\\'
|
4882
|
+
|
4883
|
+
# ipynb文件的完整路径
|
4884
|
+
if ('.ipynb' in notebook_file):
|
4885
|
+
notebook_file1=notebook_file.replace('.ipynb','')
|
4886
|
+
else:
|
4887
|
+
notebook_file1=notebook_file
|
4888
|
+
notebook_path=notebook_dir+sep+notebook_file1+'.ipynb'
|
4889
|
+
|
4890
|
+
# pdf文件的完整路径
|
4891
|
+
output_pdf_path1=notebook_dir+sep+notebook_file1+'A4.pdf'
|
4892
|
+
output_pdf_path2=notebook_dir+sep+notebook_file1+'A3.pdf'
|
4893
|
+
|
4894
|
+
import os
|
4895
|
+
from nbconvert import HTMLExporter
|
4896
|
+
from playwright.async_api import async_playwright
|
4897
|
+
|
4898
|
+
html_file = ""
|
4899
|
+
|
4900
|
+
try:
|
4901
|
+
# 导出 Notebook 为 HTML
|
4902
|
+
html_exporter = HTMLExporter()
|
4903
|
+
try:
|
4904
|
+
html_content, _ = html_exporter.from_filename(notebook_path)
|
4905
|
+
print("Converting notebook file to pdf in both A4 and A3 sizes ...")
|
4856
4906
|
|
4907
|
+
except:
|
4908
|
+
print("File not found for {}".format(notebook_path))
|
4909
|
+
return
|
4910
|
+
|
4911
|
+
# 创建临时 HTML 文件
|
4912
|
+
html_file = "temp_notebook.html"
|
4913
|
+
with open(html_file, "w", encoding="utf-8") as f:
|
4914
|
+
f.write(html_content)
|
4915
|
+
|
4916
|
+
# 使用 Playwright 打开 HTML 并保存为 PDF
|
4917
|
+
async with async_playwright() as p:
|
4918
|
+
browser = await p.chromium.launch()
|
4919
|
+
page = await browser.new_page()
|
4920
|
+
await page.goto(f"file://{os.path.abspath(html_file)}")
|
4921
|
+
|
4922
|
+
await page.pdf(path=output_pdf_path1, format='A4')
|
4923
|
+
await page.pdf(path=output_pdf_path2, format='A3')
|
4924
|
+
|
4925
|
+
await browser.close()
|
4926
|
+
|
4927
|
+
print(f"2 PDF created in the same directory, pick 1 you think best")
|
4928
|
+
|
4929
|
+
except Exception as e:
|
4930
|
+
print(f"Conversion failed because {e}")
|
4931
|
+
return
|
4932
|
+
|
4933
|
+
finally:
|
4934
|
+
if html_file == "":
|
4935
|
+
return
|
4936
|
+
# 删除临时 HTML 文件
|
4937
|
+
elif os.path.exists(html_file):
|
4938
|
+
os.remove(html_file)
|
4939
|
+
|
4940
|
+
return
|
4941
|
+
|
4942
|
+
if __name__ == '__main__':
|
4943
|
+
# 替换为你的Notebook文件路径
|
4944
|
+
notebook_dir = r"S:\北外工作-25春\周4.财经与生活附校\Session 1"
|
4945
|
+
# 替换为你想转存PDF的Notebook文件名
|
4946
|
+
notebook_file = "Session 1 全球证券市场-简化版.ipynb"
|
4947
|
+
#await jupyter2pdf2(notebook_dir, notebook_file)
|
4948
|
+
# 注意:上面的await命令会导致编译失败,测试后要注释掉
|
4857
4949
|
#==============================================================================
|
4858
4950
|
#==============================================================================
|
4859
4951
|
#==============================================================================
|
siat/security_price2.py
CHANGED
@@ -65,6 +65,13 @@ if __name__=='__main__':
|
|
65
65
|
fill=False
|
66
66
|
fill=True
|
67
67
|
|
68
|
+
# 新测试组
|
69
|
+
ticker="XAUUSD"
|
70
|
+
fromdate='2024-5-1'; todate='2024-5-20'
|
71
|
+
ticker_type='auto';source='auto'
|
72
|
+
adjust='';fill=False
|
73
|
+
|
74
|
+
|
68
75
|
price,found=get_price_1ticker(ticker=ticker,fromdate=fromdate,todate=todate, \
|
69
76
|
ticker_type=ticker_type)
|
70
77
|
|
siat/security_prices.py
CHANGED
@@ -553,7 +553,9 @@ if __name__=='__main__':
|
|
553
553
|
ticker='TRBNCN.M'
|
554
554
|
ticker='RSAYCN.M'
|
555
555
|
|
556
|
-
ticker='GC.F'
|
556
|
+
ticker='GC.F' #无法下载
|
557
|
+
ticker='XAUCNY' #一盎司黄金的现货人民币价格
|
558
|
+
ticker='XAUUSD' #一盎司黄金的现货美元价格
|
557
559
|
|
558
560
|
ticker=['AAPL','MSFT']
|
559
561
|
|
@@ -1366,6 +1368,8 @@ if __name__=='__main__':
|
|
1366
1368
|
ticker='AAPL'
|
1367
1369
|
ticker='GC=F'
|
1368
1370
|
|
1371
|
+
ticker='XAUUSD'
|
1372
|
+
|
1369
1373
|
ticker=['AAPL','MSFT']
|
1370
1374
|
ticker=['0700.HK','600519.SS']
|
1371
1375
|
ticker=['AAPL','MSFT','0700.HK','600519.SS']
|
siat/security_trend2.py
CHANGED
@@ -185,6 +185,10 @@ def security_trend(ticker,indicator='Close',adjust='', \
|
|
185
185
|
attention_value参数:绘图时绘制一条水平线,用以强调一个阈值。默认不绘制。
|
186
186
|
average_value参数:开关打开时,绘图时绘制一条均值线,仅适用于绘制单条曲线。默认关闭。
|
187
187
|
|
188
|
+
attention_point:绘制横轴竖线,可为单个横轴点或列表,默认不绘制
|
189
|
+
attention_point_area:为两个横轴点的列表,其间区域着色,默认不绘制。
|
190
|
+
可与attention_point配合使用。
|
191
|
+
|
188
192
|
kline参数:开关打开时,绘制一条K线图,仅适用于单只股票。默认关闭。
|
189
193
|
kline_demo参数:与kline开关同时打开时,绘制一条K线图原理演示图,仅适用于单只股票。
|
190
194
|
mav参数:仅当kline开关打开时有效,用于指定K线图中单条或多条移动平均线的天数。
|
siat/stock.py
CHANGED
@@ -625,6 +625,19 @@ if __name__ =="__main__":
|
|
625
625
|
ticker_type='auto'
|
626
626
|
facecolor='whitesmoke'
|
627
627
|
|
628
|
+
# 测试组6
|
629
|
+
ticker='XAUUSD'
|
630
|
+
indicator='Close'
|
631
|
+
fromdate='2024-5-1'; todate='2024-5-20'
|
632
|
+
zeroline=False
|
633
|
+
attention_value='';attention_value_area=''
|
634
|
+
attention_point='';attention_point_area=''
|
635
|
+
average_value=False
|
636
|
+
datatag=False;power=0;graph=True;source='auto'
|
637
|
+
mark_top=True;mark_bottom=True;mark_end=True
|
638
|
+
ticker_type='auto';facecolor='whitesmoke';loc='best'
|
639
|
+
|
640
|
+
|
628
641
|
df=security_indicator(ticker,indicator,fromdate,todate,ticker_type=ticker_type)
|
629
642
|
|
630
643
|
def security_indicator(ticker,indicator, \
|
siat/translate.py
CHANGED
@@ -1224,6 +1224,7 @@ def codetranslate0(code):
|
|
1224
1224
|
|
1225
1225
|
["SPY",'SPDR标普500ETF'],['SPYD','SPDR标普500股利优先ETF'],
|
1226
1226
|
["SPYG",'SPDR标普500成长优先ETF'],['SPYV','SPDR标普500价值优先ETF'],
|
1227
|
+
["GLD",'SPDR黄金ETF'],
|
1227
1228
|
["VOO",'Vanguard标普500ETF'],['VOOG','Vanguard标普500成长优先ETF'],
|
1228
1229
|
["VOOV",'Vanguard标普500价值优先ETF'],['IVV','iShares标普500ETF'],
|
1229
1230
|
["DGT",'SPDR Global Dow ETF'],['ICF','iShares C&S REIT ETF'],
|
@@ -1702,6 +1703,8 @@ def codetranslate0(code):
|
|
1702
1703
|
['^NYICDX','ICE美元指数'],['DX-Y.NYB','ICE美元指数'],
|
1703
1704
|
['EUR_I','STOOQ欧元指数'],
|
1704
1705
|
|
1706
|
+
['XAUUSD','1盎司黄金现货兑美元'],['XAUCNY','1盎司黄金现货兑人民币'],
|
1707
|
+
|
1705
1708
|
#经济体基准利率
|
1706
1709
|
['INRTAU.M','澳大利亚基准利率'],
|
1707
1710
|
['INRTBR.M','巴西基准利率'],
|
@@ -2051,7 +2054,7 @@ def codetranslate1(code):
|
|
2051
2054
|
|
2052
2055
|
["SPY",'SPDR SP500 ETF'],['SPYD','SPDR SP500 Div ETF'],
|
2053
2056
|
["SPYG",'SPDR SP500 Growth ETF'],['SPYV','SPDR SP500 Value ETF'],
|
2054
|
-
["GLD",'SPDR
|
2057
|
+
["GLD",'SPDR Gold Shares ETF'],
|
2055
2058
|
["VOO",'Vanguard SP500 ETF'],['VOOG','Vanguard SP500 Growth ETF'],
|
2056
2059
|
["VOOV",'Vanguard SP500 Value ETF'],['IVV','iShares SP500 ETF'],
|
2057
2060
|
["DGT",'SPDR Global Dow ETF'],['ICF','iShares C&S REIT ETF'],
|
@@ -2186,6 +2189,8 @@ def codetranslate1(code):
|
|
2186
2189
|
['U11.SI','UOB(SI)'],['C6L.SI','Singapore Airlines(SI)'],['CC3.SI','Starhub(SI)'],
|
2187
2190
|
['S08.SI','Singpost(SI)'],['F34.SI','WILMAR(SI)'],['C31.SI','CapitaLand(SI)'],
|
2188
2191
|
|
2192
|
+
['XAUUSD','Gold(ozt)->USD'],['XAUCNY','Gold(ozt)->RMB'],
|
2193
|
+
|
2189
2194
|
|
2190
2195
|
], columns=['code','codename'])
|
2191
2196
|
|
@@ -3398,6 +3403,7 @@ def ticker1_name(ticker,ticker_type='auto'):
|
|
3398
3403
|
#==============================================================================
|
3399
3404
|
if __name__=='__main__':
|
3400
3405
|
ticker='600519.SS' #股票
|
3406
|
+
ticker='XAUUSD' #一盎司黄金的美元价格
|
3401
3407
|
ticker={'Market':('US','^SPX','中概教培组合'),'EDU':0.5,'TAL':0.3,'TEDU':0.2}
|
3402
3408
|
pf={'Market':('US','^SPX','中概教培组合'),'EDU':0.5,'TAL':0.3,'TEDU':0.2}
|
3403
3409
|
ticker=['600519.SS','sh018003',pf]
|
siat/yf_name.py
CHANGED
@@ -372,13 +372,17 @@ def ticker_info1(ticker,info="all",test_access=True,print_title=True):
|
|
372
372
|
|
373
373
|
if __name__=='__main__':
|
374
374
|
ticker="SGC=F"
|
375
|
-
|
375
|
+
ticker="XAUUSD"
|
376
|
+
short_name=False;add_suffix=True;maxlen=80
|
377
|
+
|
378
|
+
yahoo_name1y(ticker)
|
376
379
|
|
377
|
-
def
|
380
|
+
def yahoo_name1y(ticker,short_name=False,add_suffix=True,maxlen=80):
|
378
381
|
"""
|
379
382
|
功能:从雅虎财经取得全球证券名称,仅限英文。需要去掉常用词,如Corporation
|
380
383
|
优点:对未定义的证券代码也可给出英文名称,即使在中文语言环境中
|
381
|
-
|
384
|
+
现存问题:需要访问雅虎,且耗时稍长;当ticker不存在时会提示一大堆错误信息
|
385
|
+
仅作备用
|
382
386
|
"""
|
383
387
|
|
384
388
|
#测试雅虎
|
@@ -391,9 +395,20 @@ def yahoo_name1(ticker,short_name=False,add_suffix=True,maxlen=80):
|
|
391
395
|
|
392
396
|
import yfinance as yf
|
393
397
|
ticker_info = yf.Ticker(ticker1)
|
394
|
-
|
398
|
+
|
399
|
+
import os, sys
|
400
|
+
class HiddenPrints:
|
401
|
+
def __enter__(self):
|
402
|
+
self._original_stdout = sys.stdout
|
403
|
+
sys.stdout = open(os.devnull, 'w')
|
404
|
+
|
405
|
+
def __exit__(self, exc_type, exc_val, exc_tb):
|
406
|
+
sys.stdout.close()
|
407
|
+
sys.stdout = self._original_stdout
|
408
|
+
|
395
409
|
try:
|
396
|
-
|
410
|
+
with HiddenPrints():
|
411
|
+
t_info=ticker_info.info
|
397
412
|
except:
|
398
413
|
pass
|
399
414
|
return ticker
|
@@ -408,7 +423,12 @@ def yahoo_name1(ticker,short_name=False,add_suffix=True,maxlen=80):
|
|
408
423
|
try:
|
409
424
|
t_name0=t_info['longName']
|
410
425
|
except:
|
411
|
-
|
426
|
+
try:
|
427
|
+
t_name0=t_info['shortName']
|
428
|
+
except:
|
429
|
+
pass
|
430
|
+
return ticker
|
431
|
+
|
412
432
|
|
413
433
|
if len(t_name0) > maxlen:
|
414
434
|
t_name0=t_info['shortName']
|
@@ -503,7 +523,7 @@ def filter_stock_name(original_name):
|
|
503
523
|
remove_list=[' CORPORATION',' BERHAD',' BHD',' PLC',' INC',' AG ST',' NA O N', \
|
504
524
|
' AKTIENGESELLSCHAFT','(PUBL)',' LLC', \
|
505
525
|
' CO LTD',' CO LIMITED',' LTD',' LIMITED',' COMPANY',' INCORPORATED', \
|
506
|
-
' CORP LTD',' CORP',' AB', \
|
526
|
+
' CORP LTD',' CORP',' AB',' CO', \
|
507
527
|
' GROUP CO','(GROUP)',' GROUP', \
|
508
528
|
' PL S A',' PL SA',' AG', \
|
509
529
|
' SCIENCE & TECHNOLOGY',' HIGH-TECH',' HIGH TECHNOLOGY', \
|
@@ -548,6 +568,7 @@ if __name__ == '__main__':
|
|
548
568
|
stock_code='MSFT'
|
549
569
|
|
550
570
|
stock_code='GC.F'
|
571
|
+
stock_code='XAUUSD'
|
551
572
|
|
552
573
|
stooq_name1(stock_code)
|
553
574
|
|
@@ -605,7 +626,23 @@ def stooq_name1(stock_code,add_suffix=True):
|
|
605
626
|
|
606
627
|
#未找到证券代码
|
607
628
|
if t_name == 'Stooq':
|
608
|
-
|
629
|
+
|
630
|
+
#尝试不加后缀'.us'
|
631
|
+
url = f"https://stooq.com/q/?s={stock_code}"
|
632
|
+
response = requests.get(url,headers=headers)
|
633
|
+
if response.status_code == 200:
|
634
|
+
soup = BeautifulSoup(response.text, 'html.parser')
|
635
|
+
soup_title=soup.title
|
636
|
+
soup_text=soup_title.text
|
637
|
+
soup_text_list=soup_text.split(' - ')
|
638
|
+
|
639
|
+
t_name = soup_text_list[1].strip()
|
640
|
+
else:
|
641
|
+
pass
|
642
|
+
return stock_code
|
643
|
+
|
644
|
+
if t_name == 'Stooq':
|
645
|
+
return stock_code
|
609
646
|
|
610
647
|
#过滤名称中多余的尾部词汇
|
611
648
|
t_name=filter_stock_name(t_name)
|
@@ -620,9 +657,67 @@ def stooq_name1(stock_code,add_suffix=True):
|
|
620
657
|
if sid not in ['CN','US']:
|
621
658
|
t_name=t_name+'('+sid+')'
|
622
659
|
|
660
|
+
t_name=t_name.strip()
|
661
|
+
|
623
662
|
return t_name
|
624
663
|
|
625
664
|
#==============================================================================
|
665
|
+
#==============================================================================
|
666
|
+
if __name__ == '__main__':
|
667
|
+
stock_code='AAPL'
|
668
|
+
stock_code='600519.SS'
|
669
|
+
stock_code='6758.T'
|
670
|
+
stock_code='6758.JP'
|
671
|
+
stock_code='ULVR.L'
|
672
|
+
stock_code='1155.KL'
|
673
|
+
stock_code='MSFT'
|
674
|
+
|
675
|
+
stock_code='GC=F'
|
676
|
+
stock_code='XAUUSD'
|
677
|
+
|
678
|
+
yahoo_name1(stock_code)
|
679
|
+
|
680
|
+
|
681
|
+
def yahoo_name1(stock_code):
|
682
|
+
|
683
|
+
import requests
|
684
|
+
from bs4 import BeautifulSoup
|
685
|
+
|
686
|
+
stock_code1=stock_code.lower()
|
687
|
+
|
688
|
+
#抓取证券名称
|
689
|
+
headers = {
|
690
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
|
691
|
+
}
|
692
|
+
url = f"https://finance.yahoo.com/quote/{stock_code1}"
|
693
|
+
response = requests.get(url,headers=headers)
|
694
|
+
if response.status_code == 200:
|
695
|
+
soup = BeautifulSoup(response.text, 'html.parser')
|
696
|
+
soup_title=soup.title
|
697
|
+
soup_text=soup_title.text
|
698
|
+
|
699
|
+
stock_code2=stock_code1.upper()
|
700
|
+
try:
|
701
|
+
pos=soup_text.index(stock_code2)
|
702
|
+
except:
|
703
|
+
pass
|
704
|
+
return stock_code
|
705
|
+
t_name = soup_text[:pos-1].strip()
|
706
|
+
else:
|
707
|
+
pass
|
708
|
+
return stock_code
|
709
|
+
|
710
|
+
#过滤名称中多余的尾部词汇
|
711
|
+
t_name=filter_stock_name(t_name).strip()
|
712
|
+
t_name=filter_stock_name(t_name).strip()
|
713
|
+
|
714
|
+
return t_name
|
715
|
+
|
716
|
+
#==============================================================================
|
717
|
+
|
718
|
+
|
719
|
+
|
720
|
+
|
626
721
|
if __name__=='__main__':
|
627
722
|
ticker='1155.KL'
|
628
723
|
ticker='MSFT'
|
@@ -646,6 +741,9 @@ if __name__=='__main__':
|
|
646
741
|
|
647
742
|
ticker='IBM'
|
648
743
|
|
744
|
+
ticker='XAUUSD'
|
745
|
+
short_name=False;add_suffix=True;maxlen=80
|
746
|
+
|
649
747
|
get_stock_name1_en(ticker)
|
650
748
|
|
651
749
|
def get_stock_name1_en(ticker,short_name=False,add_suffix=True,maxlen=80):
|
@@ -19,7 +19,7 @@ siat/capm_beta.py,sha256=cxXdRVBQBllhbfz1LeTJAIWvyRYhW54nhtNUXv4HwS0,29063
|
|
19
19
|
siat/capm_beta2.py,sha256=-ZYYp1HK7SkfTR3vBKZ0QVC4Q_tbST2O4MGbX_V77J0,32031
|
20
20
|
siat/capm_beta_test.py,sha256=ImR0c5mc4hIl714XmHztdl7qg8v1E2lycKyiqnFj6qs,1745
|
21
21
|
siat/cmat_commons.py,sha256=Nj9Kf0alywaztVoMVeVVL_EZk5jRERJy8R8kBw88_Tg,38116
|
22
|
-
siat/common.py,sha256=
|
22
|
+
siat/common.py,sha256=JZyGEXHevW6NovmfvrMCR5fwVovO8d_wRb7MLHFiBvM,179306
|
23
23
|
siat/compare_cross.py,sha256=3iP9TH2h3w27F2ARZc7FjKcErYCzWRc-TPiymOyoVtw,24171
|
24
24
|
siat/compare_cross_test.py,sha256=xra5XYmQGEtfIZL2h-GssdH2hLdFIhG3eoCrkDrL3gY,3473
|
25
25
|
siat/concepts_iwencai.py,sha256=m1YEDtECRT6FqtzlKm91pt2I9d3Z_XoP59BtWdRdu8I,3061
|
@@ -100,15 +100,15 @@ siat/risk_free_rate_test.py,sha256=CpmhUf8aEAEZeNu4gvWP2Mz2dLoIgBX5bI41vfUBEr8,4
|
|
100
100
|
siat/sector_china.py,sha256=QShFSaJMOydLKL-eCbUy_cWFnXnbdZW90lCUAp6B5lU,151007
|
101
101
|
siat/sector_china_test.py,sha256=1wq7ef8Bb_L8F0h0W6FvyBrIcBTEbrTV7hljtpj49U4,5843
|
102
102
|
siat/security_price.py,sha256=2oHskgiw41KMGfqtnA0i2YjNNV6cYgtlUK0j3YeuXWs,29185
|
103
|
-
siat/security_price2.py,sha256=
|
104
|
-
siat/security_prices.py,sha256=
|
103
|
+
siat/security_price2.py,sha256=dYwvz9H-uWp-Gyc1g_MId9k8cITS6ZHmjW-Fc2ypp-0,26587
|
104
|
+
siat/security_prices.py,sha256=HoCZ7YPrQYZHgKC-LyXFeeBCTfRc3EMMEiEg52SVv2w,109073
|
105
105
|
siat/security_prices_test.py,sha256=OEphoJ87NPKoNow1QA8EU_5MUYrJF-qKoWKNapVfZNI,10779
|
106
106
|
siat/security_trend.py,sha256=o0vpWdrJkmODCP94X-Bvn-w7efHhj9HpUYBHtLl55D0,17240
|
107
107
|
siat/security_trend2-20240620.py,sha256=QVnEcb7AyVbO77jVqfFsJffGXrX8pgJ9xCfoAKmWBPk,24854
|
108
|
-
siat/security_trend2.py,sha256=
|
108
|
+
siat/security_trend2.py,sha256=TmfPG5RqT2nzJpYwBYCFrD-NC82uaz8MxbAMmGVdJzY,29995
|
109
109
|
siat/setup.py,sha256=up65rQGLmTBkhtaMLowjoQXYmIsnycnm4g1SYmeQS6o,1335
|
110
110
|
siat/shenwan index history test.py,sha256=JCVAzOSEldHalhSFa3pqD8JI_8_djPMQOxpkuYU-Esg,1418
|
111
|
-
siat/stock.py,sha256=
|
111
|
+
siat/stock.py,sha256=JT_sq-9B8A25fzTh7rSj5-NnO2IlGbI_7O47ZZu9Dk0,159068
|
112
112
|
siat/stock_advice_linear.py,sha256=-twT7IGP-NEplkL1WPSACcNJjggRB2j4mlAQCkzOAuo,31655
|
113
113
|
siat/stock_base.py,sha256=uISvbRyOGy8p9QREA96CVydgflBkn5L3OXOGKl8oanc,1312
|
114
114
|
siat/stock_china.py,sha256=85Ggb21E2mrCYMdSSTTrkoyyLGXMK2V-BtlweHomSRg,93460
|
@@ -134,7 +134,7 @@ siat/transaction_test.py,sha256=Z8g1LJCN4-mnUByXMUMoFmN0t105cbmsz2QmvSuIkbU,1858
|
|
134
134
|
siat/translate-20230125.py,sha256=NPPSXhT38s5t9fzMvl_fvi4ckSB73ThLmZetVI-xGdU,117953
|
135
135
|
siat/translate-20230206.py,sha256=-vtI125WyaJhmPotOpDAmclt_XnYVaWU9ByLWZ6FyYE,118133
|
136
136
|
siat/translate-20230215.py,sha256=TJgtPE3n8IjljmZ4Pefy8dmHoNdFF-1zpML6BhA9FKE,121657
|
137
|
-
siat/translate.py,sha256=
|
137
|
+
siat/translate.py,sha256=hZljXo8Wlee9DQPHnn6Pwt2shl1Ky-yuAIpmNDTdsHA,251884
|
138
138
|
siat/translate_20240606.py,sha256=63IyHWEU3Uz9mjwyuAX3fqY4nUMdwh0ICQAgmgPXP7Y,215121
|
139
139
|
siat/translate_241003_keep.py,sha256=un7Fqe1v35MXsja5exZgjmLzrZtt66NARZIGlyFuGGU,218747
|
140
140
|
siat/universal_test.py,sha256=CDAOffW1Rvs-TcNN5giWVvHMlch1w4dp-w5SIV9jXL0,3936
|
@@ -142,9 +142,9 @@ siat/valuation.py,sha256=tSW5jyda3lChqBkdsbBGfdUeh9bCfjo6P93CjLif9eM,50825
|
|
142
142
|
siat/valuation_china.py,sha256=CVp1IwIsF3Om0J29RGkyxZLt4n9Ug-ua_RKhLwL9fUQ,69624
|
143
143
|
siat/valuation_market_china_test.py,sha256=gbJ0ioauuo4koTPH6WKUkqcXiQPafnbhU5eKJ6lpdLA,1571
|
144
144
|
siat/var_model_validation.py,sha256=R0caWnuZarrRg9939hxh3vJIIpIyPfvelYmzFNZtPbo,14910
|
145
|
-
siat/yf_name.py,sha256=
|
146
|
-
siat-3.7.
|
147
|
-
siat-3.7.
|
148
|
-
siat-3.7.
|
149
|
-
siat-3.7.
|
150
|
-
siat-3.7.
|
145
|
+
siat/yf_name.py,sha256=laNKMTZ9hdenGX3IZ7G0a2RLBKEWtUQJFY9CWuk_fp8,24058
|
146
|
+
siat-3.7.24.dist-info/LICENSE,sha256=NTEMMROY9_4U1szoKC3N2BLHcDd_o5uTgqdVH8tbApw,1071
|
147
|
+
siat-3.7.24.dist-info/METADATA,sha256=hBqKjbbQcLQQWREZYGZNHB5Ge5n1A-wdUI178kn2z6E,8117
|
148
|
+
siat-3.7.24.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
149
|
+
siat-3.7.24.dist-info/top_level.txt,sha256=r1cVyL7AIKqeAmEJjNR8FMT20OmEzufDstC2gv3NvEY,5
|
150
|
+
siat-3.7.24.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|