siat 3.7.28__py3-none-any.whl → 3.8.10__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/translate.py CHANGED
@@ -4646,6 +4646,8 @@ if __name__ == '__main__':
4646
4646
  text='Accounts Receivable Net of Sales Allowance'
4647
4647
  text='Accounts Payable'
4648
4648
 
4649
+ text='经济形势分析:China, in Trillions'
4650
+
4649
4651
  language_detect=True
4650
4652
  language_engine=['google','baidu','bing']
4651
4653
 
@@ -4661,11 +4663,26 @@ if __name__ == '__main__':
4661
4663
  lang_auto2(engtext2)
4662
4664
 
4663
4665
 
4664
- def lang_auto2(text,language_detect=True,language_engine=['alibaba','google','bing','sogou']):
4666
+ def auto_translate(text,translate=False,language_engine=['bing','sogou','alibaba','google']):
4667
+ """
4668
+ ===========================================================================
4669
+ 功能:基于translate决定是否翻译text
4670
+
4671
+ 注意:可以通过调整language_engine更换翻译引擎,不同的翻译引擎更有特色
4672
+ 谷歌的翻译引擎总体质量较好,但对财经术语的翻译较差
4673
+ 阿里巴巴的翻译引擎对长句翻译不错,但翻译结果不稳定,对同一术语的翻译不稳定
4674
+ 搜狗的翻译引擎处理中英文混合时容易出错
4675
+ """
4676
+ new_text=text
4677
+ if translate:
4678
+ new_text=lang_auto2(text,language_engine=language_engine)
4679
+ return new_text
4680
+
4681
+ def lang_auto2(text,language_detect=True,language_engine=['bing','alibaba','google','sogou']):
4665
4682
  '''转换字符串text至当前语言环境,基于translators,可指定翻译服务器,准确度更高'''
4666
4683
 
4667
4684
  import translators as ts
4668
-
4685
+ """
4669
4686
  lang_env=check_language()
4670
4687
 
4671
4688
  if language_detect:
@@ -4674,16 +4691,51 @@ def lang_auto2(text,language_detect=True,language_engine=['alibaba','google','bi
4674
4691
  #字符串语言与当前环境语言相同,无需翻译,节省运行时间
4675
4692
  if lang_env==lang_text:
4676
4693
  return text
4694
+ """
4695
+ # 检查翻译方向
4696
+ lang_env=check_language()
4697
+ if lang_env in ['English']:
4698
+ target_lang="en"
4699
+ source_lang="zh"
4700
+ else:
4701
+ target_lang="zh"
4702
+ source_lang="en"
4703
+
4704
+ if isinstance(language_engine,str):
4705
+ language_engine=[language_engine]
4677
4706
 
4678
4707
  success=False
4708
+ for le in language_engine:
4709
+ try:
4710
+ translation = ts.translate_text(text, \
4711
+ from_language=source_lang,to_language=target_lang, \
4712
+ translator=le)
4713
+
4714
+ # 去掉中文中的所有空格
4715
+ if target_lang=="zh":
4716
+ translation = translation.replace(' ','')
4717
+
4718
+ success=True
4719
+ break
4720
+ except:
4721
+ continue
4722
+
4723
+ """
4679
4724
  if lang_env=='Chinese':
4680
4725
  #translator支持baidu/bing/google
4681
- if isinstance(language_engine,str):
4682
- language_engine=[language_engine]
4683
4726
 
4684
4727
  for le in language_engine:
4685
4728
  try:
4686
4729
  translation = ts.translate_text(text,from_language='en',to_language='zh', translator=le)
4730
+
4731
+ # 应对搜狗引擎中英文混合时可能的翻译错乱
4732
+ if le in ['sogou']:
4733
+ lang_text=detect_language(translation)
4734
+ if lang_text != lang_env:
4735
+ text=translation
4736
+ translation = ts.translate_text(text,from_language='en',to_language='zh', translator=le)
4737
+ # 去掉中文中的所有空格
4738
+ translation = translation.replace(' ','')
4687
4739
  success=True
4688
4740
  break
4689
4741
  except:
@@ -4698,6 +4750,7 @@ def lang_auto2(text,language_detect=True,language_engine=['alibaba','google','bi
4698
4750
  continue
4699
4751
  else:
4700
4752
  return text
4753
+ """
4701
4754
 
4702
4755
  if not success:
4703
4756
  translation = text
@@ -4725,13 +4778,22 @@ def detect_language(text):
4725
4778
 
4726
4779
  if total_count == 0:
4727
4780
  result='Unknown'
4728
-
4781
+
4782
+ """
4729
4783
  if chinese_count > english_count:
4730
4784
  result='Chinese'
4731
4785
  elif english_count > chinese_count:
4732
4786
  result='English'
4733
4787
  else:
4734
4788
  result='Both'
4789
+ """
4790
+ if chinese_count==0 and english_count>0:
4791
+ result='English'
4792
+ if chinese_count>0 and english_count==0:
4793
+ result='Chinese'
4794
+ if chinese_count>0 and english_count>0:
4795
+ result='Both'
4796
+
4735
4797
 
4736
4798
  return result
4737
4799
 
@@ -4865,6 +4927,219 @@ def words_split_yahoo(text,split_improve=True):
4865
4927
 
4866
4928
  return text_new3
4867
4929
 
4930
+ #==============================================================================
4931
+ if __name__ == '__main__':
4932
+ text="经济趋势分析:GDP PPP (constant international $)"
4933
+
4934
+ source_lang="en"
4935
+ target_lang="zh"
4936
+ content_tip="宏观经济学与金融学"
4937
+ content_tip="美国上市公司财务报表"
4938
+ content_tip="香港上市公司财务报表"
4939
+
4940
+ def kimi_translate(text, source_lang="zh", target_lang="en", \
4941
+ domain_tip="宏观经济学与金融学", \
4942
+ terminology_tip="特别注意专业术语内涵翻译的专业性", \
4943
+ special_tip="仅翻译文本,不翻译专业术语缩写词,不附带原文,不解释内容"):
4944
+ """
4945
+ ===========================================================================
4946
+ 功能:使用 Kimi API 进行翻译。
4947
+ :param api_key: Kimi API 密钥
4948
+ :param text: 要翻译的文本
4949
+ :param source_lang: 源语言,默认为自动检测
4950
+ :param target_lang: 目标语言,默认为英文
4951
+ :return: 翻译结果
4952
+ """
4953
+
4954
+ if target_lang=="en":
4955
+ target_lang="英文"
4956
+ source_lang="中文"
4957
+ else:
4958
+ target_lang="中文"
4959
+ source_lang="英文"
4960
+
4961
+ import requests
4962
+ # 如果api_key失效,可重新申请,或付费购买
4963
+ api_key='sk-BMuqBuuYr6Hh6Ihi1SL2Vbfr7B3868QQSbTVExgalMpoYfA3'
4964
+
4965
+ url = "https://api.moonshot.cn/v1/chat/completions" # Kimi API 的 URL
4966
+ headers = {
4967
+ "Content-Type": "application/json",
4968
+ "Authorization": f"Bearer {api_key}"
4969
+ }
4970
+
4971
+ payload = {
4972
+ "model": "moonshot-v1-8k",
4973
+ "messages": [
4974
+ {
4975
+ "role": "system",
4976
+ "content": f"将以下{domain_tip}文本从{source_lang}翻译为{target_lang},{terminology_tip},{special_tip}:"
4977
+ },
4978
+ {
4979
+ "role": "user",
4980
+ "content": text
4981
+ }
4982
+ ]
4983
+ }
4984
+
4985
+ response = requests.post(url, json=payload, headers=headers)
4986
+ if response.status_code == 200:
4987
+ result = response.json()
4988
+ return result["choices"][0]["message"]["content"]
4989
+ else:
4990
+ """
4991
+ import time; time.sleep(3)
4992
+ # 再试一次
4993
+ response = requests.post(url, json=payload, headers=headers)
4994
+ if response.status_code == 200:
4995
+ result = response.json()
4996
+ return result["choices"][0]["message"]["content"]
4997
+ else:
4998
+ return f"Error: {response.status_code}"
4999
+ """
5000
+ return f"Error: {response.status_code}"
5001
+
5002
+
5003
+ if __name__ == '__main__':
5004
+ text = "这是一段需要翻译的中文文本。"
5005
+ kimi_translate(text, source_lang="zh", target_lang="en")
5006
+
5007
+ text = "经济趋势分析:Japan, in Trillions"
5008
+ text = "GDP PPP (constant LCU)"
5009
+ text = "Broad money (% of GDP)"
5010
+ kimi_translate(text, source_lang="en", target_lang="zh",content_tip="宏观经济学与金融学")
5011
+
5012
+ #翻译财报项目:将需要翻译的短语集合在一起,一次性调用翻译,可提高效率,之后再拆分使用
5013
+ #最好使用句号分割,避免AI联系上下文进行翻译
5014
+ text = "DilutedEPS.Debt Service Coverage.ROIC.periodType.BasicEPS.Equity Multiplier.Treasury Shares Number"
5015
+ text="Total Equity And Minority Interest.Total non Current Liabilities Net of Minority Interest"
5016
+
5017
+ kimi_translate(text, source_lang="en", target_lang="zh",domain_tip="雅虎财经财务报表")
5018
+
5019
+ #==============================================================================
5020
+ if __name__ == '__main__':
5021
+ # 英译中
5022
+ text_list=["GDP PPP (constant international $)","Broad money"]
5023
+ source_lang="en"; target_lang="zh"
5024
+ domain_tip="宏观经济学与金融学"
5025
+ terminology_tip="特别注意专业术语内涵翻译的专业性"
5026
+ special_tip="特别注意只翻译文本即可,不用附带原文,不用解释内容"
5027
+
5028
+ translate_list(text_list,source_lang, target_lang)
5029
+
5030
+ # 英译中
5031
+ text_list=["投资收益率","投资风险"]
5032
+ source_lang="zh"; target_lang="en"
5033
+
5034
+ translate_list(text_list,source_lang, target_lang)
5035
+
5036
+ def translate_list(text_list=["GDP PPP","Broad money"],source_lang="auto", target_lang="en", \
5037
+ domain_tip="宏观经济学与金融学", \
5038
+ terminology_tip="特别注意专业术语内涵翻译的专业性", \
5039
+ special_tip="特别注意只翻译文本即可,不用附带原文,不用解释内容"):
5040
+ """
5041
+ ===========================================================================
5042
+ 功能:翻译列表中的内容,并按原顺序输出翻译后的列表
5043
+ 主要参数:
5044
+
5045
+ """
5046
+ # 检查列表是否为空
5047
+ if len(text_list)==0: return text_list
5048
+
5049
+ # 将列表合成为长字符串,使用句点做分隔符
5050
+ text=''; first=True
5051
+ separator_en='.'; separator_zh='。'
5052
+ for t in text_list:
5053
+ if first:
5054
+ text=t
5055
+ first=False
5056
+ else:
5057
+ text=text+separator_en+t
5058
+
5059
+ # 一次性翻译
5060
+ translated=kimi_translate(text, source_lang=source_lang, target_lang=target_lang, \
5061
+ domain_tip=domain_tip, \
5062
+ terminology_tip=terminology_tip, \
5063
+ special_tip=special_tip)
5064
+
5065
+ import re
5066
+ if target_lang=='zh':
5067
+ # 拆分:第1步
5068
+ text1=re.split(r'\n|。',translated)
5069
+
5070
+ # 拆分:第2步
5071
+ text2=[]
5072
+ for t in text1:
5073
+ t1=t.split(':')
5074
+ t2=t1[0]
5075
+ """
5076
+ if len(t1)==1: t2=t1[0]
5077
+ else: t2=t1[1]
5078
+ """
5079
+ text2=text2+[t2]
5080
+
5081
+ if target_lang=='en':
5082
+ # 拆分:第1步
5083
+ text1=translated.split('.')
5084
+
5085
+ # 拆分:第2步
5086
+ text2=[]
5087
+ for t in text1:
5088
+ t1=t.split(':')
5089
+ t2=t1[0]
5090
+ """
5091
+ if len(t1)==1: t2=t1[0]
5092
+ else: t2=t1[1]
5093
+ """
5094
+ text2=text2+[t2]
5095
+
5096
+
5097
+ return text2
5098
+
5099
+
5100
+ #==============================================================================
5101
+ if __name__ == '__main__':
5102
+ text="经济趋势分析:GDP PPP (constant international $)"
5103
+ text="经济趋势分析:GDP PPP"
5104
+ text="经济趋势分析:Japan"
5105
+
5106
+ auto_translate2(text,translate=True)
5107
+
5108
+ def auto_translate2(text,translate=False, \
5109
+ domain_tip="经济学与金融学", \
5110
+ terminology_tip="特别注意专业术语内涵翻译的专业性", \
5111
+ special_tip="特别注意只翻译文本即可,不用附带原文,不用解释内容"):
5112
+ """
5113
+ ===========================================================================
5114
+ 功能:基于translate决定是否翻译text
5115
+
5116
+ 注意:可以通过调整_tip改善翻译质量
5117
+ """
5118
+ if not translate: return text
5119
+
5120
+ # 检查翻译方向
5121
+ lang_env=check_language()
5122
+ if lang_env in ['English']:
5123
+ target_lang="en"
5124
+ source_lang="zh"
5125
+ else:
5126
+ target_lang="zh"
5127
+ source_lang="en"
5128
+
5129
+ new_text=text
5130
+ if translate:
5131
+ new_text=kimi_translate(text, source_lang=source_lang, target_lang=target_lang, \
5132
+ domain_tip=domain_tip, \
5133
+ terminology_tip=terminology_tip, \
5134
+ special_tip=special_tip)
5135
+
5136
+ if 'Error' in new_text or '429' in new_text:
5137
+ new_text=auto_translate(text,translate=True)
5138
+
5139
+ return new_text
5140
+
5141
+ #==============================================================================
5142
+ #==============================================================================
4868
5143
  #==============================================================================
4869
5144
  #==============================================================================
4870
5145
  #==============================================================================
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.1
2
2
  Name: siat
3
- Version: 3.7.28
3
+ Version: 3.8.10
4
4
  Summary: Securities Investment Analysis Tools (siat)
5
5
  Home-page: https://pypi.org/project/siat/
6
6
  Author: Prof. WANG Dehong, International Business School, Beijing Foreign Studies University
@@ -40,14 +40,6 @@ Requires-Dist: translators
40
40
  Requires-Dist: nbconvert
41
41
  Requires-Dist: ipywidgets
42
42
  Requires-Dist: playwright
43
- Dynamic: author
44
- Dynamic: author-email
45
- Dynamic: description
46
- Dynamic: description-content-type
47
- Dynamic: home-page
48
- Dynamic: license
49
- Dynamic: requires-dist
50
- Dynamic: summary
51
43
 
52
44
 
53
45
  # What is siat?
@@ -1,35 +1,36 @@
1
1
  siat/__init__ -20240701.py,sha256=gP5uajXnJesnH5SL0ZPwq_Qhv59AG1bs4qwZv26Fo2Y,2894
2
- siat/__init__.py,sha256=tX_xClvPr3TZ8t7WlUMFJnceRCQSseGnq1szeRjck8Q,1813
2
+ siat/__init__.py,sha256=N2D1ydfh_lejim0z6eQR17utNF7-5lk04c1esGO71_E,2223
3
3
  siat/__init__.py.backup_20250214.py,sha256=pIo4CV3lNPKIhitmhIh_6aAfZrmzQWGNDcEnvZ7GXoc,3216
4
- siat/allin.py,sha256=x1QC29PUBUYiA6IAbQKbRvtxIEUOBx8dy5k7zh1ABT4,2970
4
+ siat/allin.py,sha256=9xwa97S6KPHXGuqDtyN9b6Y4lCSM1VdBqpFBrlRvV8I,3001
5
5
  siat/alpha_vantage_test.py,sha256=tKr-vmuFH3CZAqwmISz6jzjPHzV1JJl3sPfZdz8aTfM,747
6
6
  siat/assets_liquidity.py,sha256=o_UZdLs693uNWPEQB2OzxDH0mdWimOmq4qe_vx1pue0,28987
7
7
  siat/assets_liquidity_test.py,sha256=UWk6HIUlizU7LQZ890fGx8LwU1jMMrIZswg8cFUJWZ8,1285
8
8
  siat/barrons_scraping_test.py,sha256=v5IioDB7CselbpjOX68fNPQYgm2UH4SKnz_q_MA4qGY,10464
9
- siat/beta_adjustment.py,sha256=viJJE9O82SbA_VYuJtrs3HT0OWYhk4yvmoywskrAhaI,37287
10
- siat/beta_adjustment_china.py,sha256=QAVhTQxfV7NSakNPMfQtGMeRzEHVBC8JZQTqD5Owp2I,20802
9
+ siat/beta_adjustment.py,sha256=u_EZt3rEbvXDpqcJp_hUh9637P5vsrRHEfX6uG9Uin8,37292
10
+ siat/beta_adjustment_china.py,sha256=z17bstK2WtlKKqUl6aCcP3Pv661PWgyWqAqGHGUH7Yk,20807
11
11
  siat/beta_adjustment_test.py,sha256=nBhvQQfqxooCHjy5hL0a8V0ZC58BjuCZVFpqpWpHeF0,2467
12
12
  siat/blockchain.py,sha256=awF3GDtlwaJhku0a2kLuXOS8d3IzkjR_RyzlZWvD3L4,6032
13
- siat/bond.py,sha256=BswqLEiOWbsfYD6ZDVLrvgQRQu2qGVzMDnf8y7RHQLU,109140
14
- siat/bond_base.py,sha256=KBm0hOQSE6fruXd9eJztY9pXCN19iv7aCXZZcnVM4yY,37637
15
- siat/bond_china.py,sha256=eYv-nMoWSS5fZ4VxnuJ29QFY9GUS6meGiIc0Xjm1fQI,3038
13
+ siat/bond.py,sha256=EA6D150F3ZE1CmevwhrLV-3A-8Q7nKQEErh94bT2bNs,109235
14
+ siat/bond_base.py,sha256=ClHJ5dzjoO9knGhX65Sbyk0i0uKQpmdKGUblR-wrXTs,37681
15
+ siat/bond_china.py,sha256=WzUhjYYk8tsr3BDWLQcpuj9DqNxTzBSIi_wuAOZ48kY,3082
16
16
  siat/bond_test.py,sha256=yUOFw7ddGU-kb1rJdnsjkJWziDNgUR7OLDA7F7Ub91A,5246
17
17
  siat/bond_zh_sina.py,sha256=26BohGcS120utwqg9dJvdGm5OkuNpNu5bco80uOuQpU,4423
18
18
  siat/capm_beta.py,sha256=cxXdRVBQBllhbfz1LeTJAIWvyRYhW54nhtNUXv4HwS0,29063
19
- siat/capm_beta2.py,sha256=-ZYYp1HK7SkfTR3vBKZ0QVC4Q_tbST2O4MGbX_V77J0,32031
19
+ siat/capm_beta2.py,sha256=wGF_HmK_AiGWjpSAx79XHIxDghtI_ueYozvh06-2JEQ,33707
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=IkeZU6i-F0cv7pnrMtZjYUegk1B2jaD_ULmLD_SJZv0,179357
22
+ siat/common.py,sha256=J8swDUe7K-9wqm6x29y9o_AlhCs2NW7aNQ4_n53vo-4,181182
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
26
26
  siat/concepts_kpl.py,sha256=SJ9UaJp5i79EXKZ3dPa_vBEoG_zgl1Ig5rZAm-ubgM4,4941
27
27
  siat/copyrights.py,sha256=YMLjZb328YpFMR-s_GUu0HBgeGce3pV7DgRut8S3I7w,690
28
- siat/cryptocurrency.py,sha256=ImkP0Z3QsKNrHrA07mZM46RvGAWb36AD14cNaiv_pCg,27829
28
+ siat/cryptocurrency.py,sha256=QSc4jK9VFlqBWVu-0th1BIMt8wC-5R5sWky3EaNupy0,27940
29
29
  siat/cryptocurrency_test.py,sha256=3AikTNJ7j-HwLGLIYEfyXZ3bLVuLeru9mwiwHQi2SdA,2669
30
30
  siat/derivative.py,sha256=qV8n09799eqLc26ojR6vN5n_X-xd7rGwdYjgq-wBih8,41483
31
31
  siat/economy-20230125.py,sha256=vxZZlPnLkh7SpGMVEPLwxjt0yYLSVmdZrO-s2NYLyoM,73848
32
32
  siat/economy.py,sha256=BFVQDxOTbuizyumpCgpZIauH6sqnwUXebpqRMmQCzys,84198
33
+ siat/economy2.py,sha256=FOVf5WxKnge3dVEV2CEf--CupXhFtlRUc5k5FUMTD-Q,39857
33
34
  siat/economy_test.py,sha256=6vjNlPz7W125pJb7simCddobSEp3jmLIMvVkLRZ7zW8,13339
34
35
  siat/esg.py,sha256=GMhaonIKtvOK83rhpQUH5aJt2OL3HQBSVfD__Yw-0oo,19040
35
36
  siat/esg_test.py,sha256=Z9m6GUt8O7oHZSEG9aDYpGdvvrv2AiRJdHTiU6jqmZ0,2944
@@ -41,10 +42,10 @@ siat/fin_stmt2_yahoo.py,sha256=LGmspk0nKyz4X87MtcovZXUfMQkAvrWINuxR4HQ8PI8,41178
41
42
  siat/financial_base.py,sha256=A1rV7XQOVFpCXCV-T6Ge0QeF897hINiu0olN1XWeaFk,41287
42
43
  siat/financial_statements.py,sha256=xx0SMpFqAMKm6cj8uYeG2RpJE6G-RoJ3NWa33UyaVMk,25414
43
44
  siat/financial_statements_test.py,sha256=FLhx8JD-tVVWSBGux6AMz1jioXX4U4bp9DmgFHYXb_w,716
44
- siat/financials.py,sha256=6WOWYift3MpKkNBnvnBFASXy9nKKC6DzAr8rg2XyNtw,80646
45
+ siat/financials.py,sha256=6mmcOI03rJuz3xmrX_H46wTudgXLGtNqrwfuFZCiwaE,80739
45
46
  siat/financials2 - 副本.py,sha256=dKlNjIfKeoSy055fQ6E6TUj9HEoO5Ney9grD84J5kfk,14389
46
- siat/financials2.py,sha256=ycHUaocHcSuVmgGmx8Uza8IqyxvKB6jqrlYqYG-cO3Q,50942
47
- siat/financials_china.py,sha256=Y9QHyJKDgVbkb5L1f65BAiNxLIDmasRUN9_ju4Yby_c,191925
47
+ siat/financials2.py,sha256=N2qOfVQ2SE7T5kmMkAcccCOHIEwGylFDvB5_GxxOin0,51039
48
+ siat/financials_china.py,sha256=Hu85JOKnCmcTHgblIvHhsV-6c-Y15HFGNR_ZaaJt8nM,191974
48
49
  siat/financials_china2.py,sha256=VvkzkjZeH84zwypR7ReldgJeZ7jnNw0qkzebvWMPm10,94956
49
50
  siat/financials_china2_test.py,sha256=Erz5k4LyOplBBvYls2MypuqHpVNJ3daiLdyeJezNPu0,2722
50
51
  siat/financials_china2_test2.py,sha256=C8CuYTMHN4Mhp-sTu-Bmg0zMXRCaYV6ezGDoYartRYQ,3507
@@ -54,25 +55,25 @@ siat/financials_china_test2.py,sha256=WkNlVW_0hGegdw1rzg4BP_dKR-smdyUp9Fr00K7mPZ
54
55
  siat/financials_china_test2_fin_indicator.py,sha256=WkNlVW_0hGegdw1rzg4BP_dKR-smdyUp9Fr00K7mPZY,5924
55
56
  siat/financials_test.py,sha256=HJ3CPo_Xckz2wXi3AEP6ZNWCF1Duc1pLi0Y10USiImc,23829
56
57
  siat/fred_test.py,sha256=KF50ssSbsfpa_kT6iuomD0vG4eXztAcOasZxg1OGX5w,1201
57
- siat/fund.py,sha256=wMDORsCBV8ZXfgwbtq-0bu3qqWY66dHnbqgllW0gWCo,24637
58
+ siat/fund.py,sha256=KS7NgzLLifwUJAQX4HpPi4CjLBamUcTpjsda4KSnfHE,24656
58
59
  siat/fund_china.pickle,sha256=x_nPPdwy7wzIhtZQOplgDyTSyyUdXy9lbNxWysq7N6k,2437771
59
- siat/fund_china.py,sha256=jRAibZiHXAjUwlHoIiXK_moFhEYvVzl2Q0FhfYRZiFk,111907
60
+ siat/fund_china.py,sha256=QovzNxO5EeWPZ_QbQvHtLthBls54NVat1vIEizXzBEc,136681
60
61
  siat/fund_china_test.py,sha256=-Bh6m0J0GPpIbYXx-H2vpzJoNFI6pE2C2jVPa8DazgE,6649
61
62
  siat/fund_test.py,sha256=V4ADb8Gsp8gyeFTwcgRsJBpnUih_O-Q2V1ILc5oKjK8,1116
62
63
  siat/future_china.py,sha256=F-HsIf2Op8Z22RzTjet1g8COzldgnMjFNSXsAkeGyWo,17595
63
64
  siat/future_china_test.py,sha256=BrSzmDVaOHki6rntOtosmRn-6dkfOBuLulJNqh7MOpc,1163
64
65
  siat/global_index_test.py,sha256=hnFp3wqqzzL-kAP8mgxDZ54Bd5Ijf6ENi5YJlGBgcXw,2402
65
66
  siat/google_authenticator.py,sha256=ZUbZR8OW0IAKDbcYtlqGqIpZdERpFor9NccFELxg9yI,1637
66
- siat/grafix.py,sha256=-ewwyFBXP4qbe7HY9RGowtfC3zXb-DkByIdqMj2k_C0,110457
67
+ siat/grafix.py,sha256=Qw17Gq2jjh8ftWpAM0TfWP7bojGlS48hMpOUSJar5HM,117447
67
68
  siat/grafix_test.py,sha256=kXvcpLgQNO7wd30g_bWljLj5UH7bIVI0_dUtXbfiKR0,3150
68
- siat/holding_risk.py,sha256=G3wpaewAKF9CwEqRpr4khyuDu9SU2EGyQUHdk7cmHOA,30693
69
+ siat/holding_risk.py,sha256=uWRtMMJqKr-puQn26g6Fq5N3mFB70c0B99zLQug8hAo,30774
69
70
  siat/holding_risk_test.py,sha256=FRlw_9wFG98BYcg_cSj95HX5WZ1TvkGaOUdXD7-V86s,474
70
71
  siat/local_debug_test.py,sha256=CDAOffW1Rvs-TcNN5giWVvHMlch1w4dp-w5SIV9jXL0,3936
71
72
  siat/luchy_draw.py,sha256=8Ue-NKnvSVqINPY1eXat0NJat5MR-gex_K62aOYFdmA,20486
72
- siat/market_china.py,sha256=fQjAFyu4JAqtVA8I1QYfzv0fmYhLP3zoNe5Ftk63qgM,50724
73
- siat/markowitz.py,sha256=dpfBK7myua83wQVqebP8Z1Qv0A5U_7nmocnQDFR5dJY,97988
73
+ siat/market_china.py,sha256=_2ienjsJsy-RAhdpnoBtRtPt8k_FVR8eDygywbFNnmM,50827
74
+ siat/markowitz.py,sha256=PtQ_6rLyh5SEXyO7SCDyYChcgXl6ddcdgQ06HETjDVE,97990
74
75
  siat/markowitz2-20240620.py,sha256=irZAPnjaatFsKQmFRMENP-cO6bEUl2narYtkU5NKTWI,108019
75
- siat/markowitz2.py,sha256=svek5sWRbrFUA1DNEI0RQktMlUPeSoEKAsSLOFJNRlg,123177
76
+ siat/markowitz2.py,sha256=2FT3yzub2vdmC87L495BECyTwJXY6xcOFflI1lSstmQ,123237
76
77
  siat/markowitz_ccb_test.py,sha256=xBkkoaNHdq9KSUrNuHGgKTdNYUvgi84kNYcf719eoyE,1593
77
78
  siat/markowitz_ef_test.py,sha256=wjNlICkgRIqnonPeSIHo4Mu2GRtb9dr21wDt2kMNEcI,4032
78
79
  siat/markowitz_old.py,sha256=Lf7O_4QWT8RsdkHiUyc_7kKY3eZjKDtFR89Fz3pwYnY,33046
@@ -83,21 +84,21 @@ siat/markowitz_test2.py,sha256=FcVZqYU5va4567WGUVUJ7cMQdVbBGxeBAz82Y3BhCTI,2193
83
84
  siat/ml_cases.py,sha256=FYDk0O7l9hhHlbrlOVGgbH-h2DA503lhKFi9XugH1f0,86874
84
85
  siat/ml_cases_example.py,sha256=xRGb3YTQEDTOnaWNzZN_myU5umQnA2RdMNiPrxTmn9c,1673
85
86
  siat/ml_cases_example1.py,sha256=xRGb3YTQEDTOnaWNzZN_myU5umQnA2RdMNiPrxTmn9c,1673
86
- siat/option_china.py,sha256=vPALLZDN_oIOmwpaLdB5V6dH4OuA4Q4rSy1K0ADkqYI,120954
87
+ siat/option_china.py,sha256=qrPQtMVjWTLvGy9m6elWhJlJnoQm-auX_nLDWINMJho,121005
87
88
  siat/option_china_test.py,sha256=UQ-YUHUjoGBQyanLcM-yzqeEIUQP_gCQIeT0W6rnUnA,16355
88
89
  siat/option_pricing.py,sha256=vyQNgBsjcJi70Pa-fJTVVIGK_3jWh80tkd1ESnn3sE4,74069
89
90
  siat/option_pricing_test.py,sha256=eeorV5Ja5vjlRXnP6fWJHetGU5Vb8SnLopkC6RV3GfA,2203
90
91
  siat/option_sina_api_test.py,sha256=dn-k_wrQnAaNKHoROvWJEc7lqlU0bwiV2Aa4usWAFGM,5908
91
92
  siat/proxy_test.py,sha256=erQJrmGs2X46z8Gb1h-7GYQ0rTUcaR8dxHExWoBz2eM,2610
92
93
  siat/quandl_test.py,sha256=EcPoXnLuqzPl5dKyVEZi3j3PJZFpsnU_iNPhLWC9p-A,1552
93
- siat/risk_adjusted_return.py,sha256=oRUOagpQlGB56R1xIHZoYwAi42RqcZl0R-JCVBCKVe0,55086
94
+ siat/risk_adjusted_return.py,sha256=6F8CpKm-HKO4wfnndri0ew-D3lDAH1fs5O9K5cphoLg,55096
94
95
  siat/risk_adjusted_return2.py,sha256=59YDzhbvr8PRRzb1Ew_8fuGqV4lEitm6itpk54xEb48,84335
95
96
  siat/risk_adjusted_return_test.py,sha256=m_VHL5AtT74cJv5i7taTeTfnkX48y0AFJk5phawyYWg,3416
96
- siat/risk_evaluation.py,sha256=I6B3gty-t--AkDCO0tKF-291YfpnF-IkXcFjqNKCt9I,76286
97
+ siat/risk_evaluation.py,sha256=HK6U2G85-AxjSoeARbmTuiCNwTVdPdB9Znfgvslo0Os,76455
97
98
  siat/risk_evaluation_test.py,sha256=YEXM96gKzTfwN4U61AS4Rr1tV7KgUvn4rRC6f3iMw9s,3731
98
99
  siat/risk_free_rate.py,sha256=IBuRqA2kppdZsW4D4fapW7vnM5HMEXOn95A5r9Pkwlo,12384
99
100
  siat/risk_free_rate_test.py,sha256=CpmhUf8aEAEZeNu4gvWP2Mz2dLoIgBX5bI41vfUBEr8,4285
100
- siat/sector_china.py,sha256=L58_8aDPZ54GbIm7-Oxg0pEdQ3hha6pJIah82pYzS8c,155147
101
+ siat/sector_china.py,sha256=HbU3SokSWuwNKYFrbamS6qlXE8J8ZAyM3fWo4RskhEU,157074
101
102
  siat/sector_china_test.py,sha256=1wq7ef8Bb_L8F0h0W6FvyBrIcBTEbrTV7hljtpj49U4,5843
102
103
  siat/security_price.py,sha256=2oHskgiw41KMGfqtnA0i2YjNNV6cYgtlUK0j3YeuXWs,29185
103
104
  siat/security_price2.py,sha256=dYwvz9H-uWp-Gyc1g_MId9k8cITS6ZHmjW-Fc2ypp-0,26587
@@ -105,10 +106,10 @@ siat/security_prices.py,sha256=HoCZ7YPrQYZHgKC-LyXFeeBCTfRc3EMMEiEg52SVv2w,10907
105
106
  siat/security_prices_test.py,sha256=OEphoJ87NPKoNow1QA8EU_5MUYrJF-qKoWKNapVfZNI,10779
106
107
  siat/security_trend.py,sha256=o0vpWdrJkmODCP94X-Bvn-w7efHhj9HpUYBHtLl55D0,17240
107
108
  siat/security_trend2-20240620.py,sha256=QVnEcb7AyVbO77jVqfFsJffGXrX8pgJ9xCfoAKmWBPk,24854
108
- siat/security_trend2.py,sha256=Pp2a2HtiVa1P1S1hW8DfMcXcbbnAsvkL7rlTdct67AQ,30242
109
+ siat/security_trend2.py,sha256=Ab4ZQzjD-xIunDAXHfcD6hVlQ2OqgsGPDKAXfrmW0E0,30576
109
110
  siat/setup.py,sha256=up65rQGLmTBkhtaMLowjoQXYmIsnycnm4g1SYmeQS6o,1335
110
111
  siat/shenwan index history test.py,sha256=JCVAzOSEldHalhSFa3pqD8JI_8_djPMQOxpkuYU-Esg,1418
111
- siat/stock.py,sha256=JT_sq-9B8A25fzTh7rSj5-NnO2IlGbI_7O47ZZu9Dk0,159068
112
+ siat/stock.py,sha256=W3JhjfRwqb9luNydrKyGd97uRmTsZD5FvRdqJ3DynVo,159509
112
113
  siat/stock_advice_linear.py,sha256=-twT7IGP-NEplkL1WPSACcNJjggRB2j4mlAQCkzOAuo,31655
113
114
  siat/stock_base.py,sha256=uISvbRyOGy8p9QREA96CVydgflBkn5L3OXOGKl8oanc,1312
114
115
  siat/stock_china.py,sha256=85Ggb21E2mrCYMdSSTTrkoyyLGXMK2V-BtlweHomSRg,93460
@@ -118,9 +119,9 @@ siat/stock_info_test.py,sha256=gfG3DbhDACbtD8wnv_R6zhj0t11XaC8NX8uLD9Qv3Fo,6122
118
119
  siat/stock_list_china_test.py,sha256=gv14UwMMvkZqtb6G7DCTSuehIwVHuVwu7w60p6gyHoo,1014
119
120
  siat/stock_prices_kneighbors.py,sha256=WfZvo5EyeBsm-T37zDj7Sl9dPSRq5Bx4JxIJ9IUum6s,36738
120
121
  siat/stock_prices_linear.py,sha256=-OUKRr27L2aStQgJSlJOrJ4gay_G7P-m-7t7cU2Yoqk,13991
121
- siat/stock_profile.py,sha256=B3eIwzEmiCqiCaxIlhfdEPsQBoW1PFOe1hkiY3mVF6Y,26038
122
+ siat/stock_profile.py,sha256=BuvdrQ3bqIAUCaM2GxPR6_rUhigQQa_YMeUov2zY6Y0,26084
122
123
  siat/stock_technical-20240620.py,sha256=A4x18mZgYSA8SSiDz4u_O3gd5oVRgbI6JIiBfFY0tVw,116013
123
- siat/stock_technical.py,sha256=xzrWu_s-6kz34RxrNjSUasRI3WSirX_XKUDBJbgLCU0,140884
124
+ siat/stock_technical.py,sha256=1P4FkOTPknG2m18NTgwMxN-NgwIAdW3qR09VoFz00Hc,140928
124
125
  siat/stock_test.py,sha256=E9YJAvOw1VEGJSDI4IZuEjl0tGoisOIlN-g9UqA_IZE,19475
125
126
  siat/stooq.py,sha256=SiRnSUu92pfzIZQ8N4Yo-9VOVSwUSqQE0wqXhF-4y9g,2493
126
127
  siat/temp.py,sha256=gbJ0ioauuo4koTPH6WKUkqcXiQPafnbhU5eKJ6lpdLA,1571
@@ -134,7 +135,7 @@ siat/transaction_test.py,sha256=Z8g1LJCN4-mnUByXMUMoFmN0t105cbmsz2QmvSuIkbU,1858
134
135
  siat/translate-20230125.py,sha256=NPPSXhT38s5t9fzMvl_fvi4ckSB73ThLmZetVI-xGdU,117953
135
136
  siat/translate-20230206.py,sha256=-vtI125WyaJhmPotOpDAmclt_XnYVaWU9ByLWZ6FyYE,118133
136
137
  siat/translate-20230215.py,sha256=TJgtPE3n8IjljmZ4Pefy8dmHoNdFF-1zpML6BhA9FKE,121657
137
- siat/translate.py,sha256=lIT0MO9QwhGaHipDK0p7_evOJN3e5wwKlCqv8Vebvto,251987
138
+ siat/translate.py,sha256=Xg5lq_rwKKrt8Ysz84LhwLu276KYl1-Nfqq84jRfl7w,262241
138
139
  siat/translate_20240606.py,sha256=63IyHWEU3Uz9mjwyuAX3fqY4nUMdwh0ICQAgmgPXP7Y,215121
139
140
  siat/translate_241003_keep.py,sha256=un7Fqe1v35MXsja5exZgjmLzrZtt66NARZIGlyFuGGU,218747
140
141
  siat/universal_test.py,sha256=CDAOffW1Rvs-TcNN5giWVvHMlch1w4dp-w5SIV9jXL0,3936
@@ -143,8 +144,8 @@ siat/valuation_china.py,sha256=CVp1IwIsF3Om0J29RGkyxZLt4n9Ug-ua_RKhLwL9fUQ,69624
143
144
  siat/valuation_market_china_test.py,sha256=gbJ0ioauuo4koTPH6WKUkqcXiQPafnbhU5eKJ6lpdLA,1571
144
145
  siat/var_model_validation.py,sha256=R0caWnuZarrRg9939hxh3vJIIpIyPfvelYmzFNZtPbo,14910
145
146
  siat/yf_name.py,sha256=laNKMTZ9hdenGX3IZ7G0a2RLBKEWtUQJFY9CWuk_fp8,24058
146
- siat-3.7.28.dist-info/LICENSE,sha256=NTEMMROY9_4U1szoKC3N2BLHcDd_o5uTgqdVH8tbApw,1071
147
- siat-3.7.28.dist-info/METADATA,sha256=4kVtKwGVnpVtaWBWbl0PuPiWcclWxuzhtt3ndREUq7o,8321
148
- siat-3.7.28.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
149
- siat-3.7.28.dist-info/top_level.txt,sha256=r1cVyL7AIKqeAmEJjNR8FMT20OmEzufDstC2gv3NvEY,5
150
- siat-3.7.28.dist-info/RECORD,,
147
+ siat-3.8.10.dist-info/LICENSE,sha256=NTEMMROY9_4U1szoKC3N2BLHcDd_o5uTgqdVH8tbApw,1071
148
+ siat-3.8.10.dist-info/METADATA,sha256=BjhxGSm9JIlTCe620pBWE36mrdR_5VUznsMLRqzVgvw,8144
149
+ siat-3.8.10.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
150
+ siat-3.8.10.dist-info/top_level.txt,sha256=r1cVyL7AIKqeAmEJjNR8FMT20OmEzufDstC2gv3NvEY,5
151
+ siat-3.8.10.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.8.0)
2
+ Generator: setuptools (75.6.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
File without changes