siat 3.10.1__py3-none-any.whl → 3.10.11__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/capm_beta2.py CHANGED
@@ -335,7 +335,7 @@ if __name__=='__main__':
335
335
  betas=compare_mticker_1beta(ticker,start,end)
336
336
 
337
337
  def compare_mticker_1beta(ticker,start,end, \
338
- adjust='', \
338
+ adjust='qfq', \
339
339
  RF=0,regression_period=365, \
340
340
  attention_value='',attention_value_area='', \
341
341
  attention_point='',attention_point_area='', \
@@ -343,7 +343,8 @@ def compare_mticker_1beta(ticker,start,end, \
343
343
  band_area='', \
344
344
  graph=True,facecolor='whitesmoke',loc='best', \
345
345
  annotate=False,annotate_value=False, \
346
- mark_top=False,mark_bottom=False,mark_end=False, \
346
+ mark_top=False,mark_bottom=False, \
347
+ mark_start=False,mark_end=False, \
347
348
  mktidx='auto',source='auto',ticker_type='auto'):
348
349
  """
349
350
  功能:多只股票,对比其贝塔系数
@@ -448,7 +449,8 @@ def compare_mticker_1beta(ticker,start,end, \
448
449
  attention_point=attention_point,attention_point_area=attention_point_area, \
449
450
  band_area=band_area, \
450
451
  annotate=annotate,annotate_value=annotate, \
451
- mark_top=mark_top,mark_bottom=mark_bottom,mark_end=mark_end,
452
+ mark_top=mark_top,mark_bottom=mark_bottom, \
453
+ mark_start=mark_start,mark_end=mark_end, \
452
454
  facecolor=facecolor,loc=loc)
453
455
 
454
456
  return df
@@ -473,7 +475,7 @@ if __name__=='__main__':
473
475
  betas=compare_1ticker_mRF(ticker,start,end,RF)
474
476
 
475
477
  def compare_1ticker_mRF(ticker,start,end, \
476
- adjust='', \
478
+ adjust='qfq', \
477
479
  RF=[0,0.02,0.05], \
478
480
  regression_period=365, \
479
481
  attention_value='',attention_value_area='', \
@@ -482,7 +484,8 @@ def compare_1ticker_mRF(ticker,start,end, \
482
484
  band_area='', \
483
485
  graph=True,facecolor='whitesmoke',loc='best', \
484
486
  annotate=False,annotate_value=False, \
485
- mark_top=False,mark_bottom=False,mark_end=False, \
487
+ mark_top=False,mark_bottom=False, \
488
+ mark_start=False,mark_end=False, \
486
489
  mktidx='auto',source='auto', \
487
490
  ticker_type='auto'):
488
491
  """
@@ -585,7 +588,8 @@ def compare_1ticker_mRF(ticker,start,end, \
585
588
  attention_point=attention_point,attention_point_area=attention_point_area, \
586
589
  band_area=band_area, \
587
590
  annotate=annotate,annotate_value=annotate, \
588
- mark_top=mark_top,mark_bottom=mark_bottom,mark_end=mark_end, \
591
+ mark_top=mark_top,mark_bottom=mark_bottom, \
592
+ mark_start=mark_start,mark_end=mark_end, \
589
593
  facecolor=facecolor,loc=loc)
590
594
 
591
595
  return df
@@ -608,7 +612,7 @@ if __name__=='__main__':
608
612
  betas=compare_1ticker_mregression_period(ticker,start,end,RF,regression_period)
609
613
 
610
614
  def compare_1ticker_mregression_period(ticker,start,end, \
611
- adjust='', \
615
+ adjust='qfq', \
612
616
  RF=0, \
613
617
  regression_period=[183,365,730], \
614
618
  attention_value='',attention_value_area='', \
@@ -617,7 +621,8 @@ def compare_1ticker_mregression_period(ticker,start,end, \
617
621
  band_area='', \
618
622
  graph=True,facecolor='whitesmoke',loc='best', \
619
623
  annotate=False,annotate_value=False, \
620
- mark_top=False,mark_bottom=False,mark_end=False, \
624
+ mark_top=False,mark_bottom=False, \
625
+ mark_start=False,mark_end=False, \
621
626
  mktidx='auto',source='auto', \
622
627
  ticker_type='auto'):
623
628
  """
@@ -716,7 +721,8 @@ def compare_1ticker_mregression_period(ticker,start,end, \
716
721
  attention_point=attention_point,attention_point_area=attention_point_area, \
717
722
  band_area=band_area, \
718
723
  annotate=annotate,annotate_value=annotate, \
719
- mark_top=mark_top,mark_bottom=mark_bottom,mark_end=mark_end, \
724
+ mark_top=mark_top,mark_bottom=mark_bottom, \
725
+ mark_start=mark_start,mark_end=mark_end, \
720
726
  facecolor=facecolor,loc=loc)
721
727
 
722
728
  return df
@@ -751,7 +757,8 @@ def compare_beta_security(ticker,start,end, \
751
757
  band_area='', \
752
758
  graph=True,facecolor='whitesmoke', \
753
759
  annotate=False,annotate_value=False, \
754
- mark_top=False,mark_bottom=False,mark_end=False, \
760
+ mark_top=False,mark_bottom=False, \
761
+ mark_start=False,mark_end=False, \
755
762
  mktidx='auto',source='auto', \
756
763
  ticker_type='auto',loc="best"):
757
764
  """
@@ -773,7 +780,8 @@ def compare_beta_security(ticker,start,end, \
773
780
  band_area=band_area, \
774
781
  graph=graph,facecolor=facecolor,loc=loc, \
775
782
  annotate=annotate,annotate_value=annotate, \
776
- mark_top=mark_top,mark_bottom=mark_bottom,mark_end=mark_end, \
783
+ mark_top=mark_top,mark_bottom=mark_bottom, \
784
+ mark_start=mark_start,mark_end=mark_end, \
777
785
  mktidx=mktidx,source=source, \
778
786
  ticker_type=ticker_type)
779
787
  return df
@@ -792,7 +800,8 @@ def compare_beta_security(ticker,start,end, \
792
800
  band_area=band_area, \
793
801
  graph=graph,facecolor=facecolor,loc=loc, \
794
802
  annotate=annotate,annotate_value=annotate, \
795
- mark_top=mark_top,mark_bottom=mark_bottom,mark_end=mark_end, \
803
+ mark_top=mark_top,mark_bottom=mark_bottom, \
804
+ mark_start=mark_start,mark_end=mark_end, \
796
805
  mktidx=mktidx,source=source, \
797
806
  ticker_type=ticker_type)
798
807
  return df
@@ -811,7 +820,8 @@ def compare_beta_security(ticker,start,end, \
811
820
  band_area=band_area, \
812
821
  graph=graph,facecolor=facecolor,loc=loc, \
813
822
  annotate=annotate,annotate_value=annotate, \
814
- mark_top=mark_top,mark_bottom=mark_bottom,mark_end=mark_end, \
823
+ mark_top=mark_top,mark_bottom=mark_bottom, \
824
+ mark_start=mark_start,mark_end=mark_end, \
815
825
  mktidx=mktidx,source=source, \
816
826
  ticker_type=ticker_type)
817
827
  return df
@@ -828,7 +838,8 @@ def compare_beta_security(ticker,start,end, \
828
838
  band_area=band_area, \
829
839
  graph=graph,facecolor=facecolor,loc=loc, \
830
840
  annotate=annotate,annotate_value=annotate, \
831
- mark_top=mark_top,mark_bottom=mark_bottom,mark_end=mark_end, \
841
+ mark_top=mark_top,mark_bottom=mark_bottom, \
842
+ mark_start=mark_start,mark_end=mark_end, \
832
843
  mktidx=mktidx,source=source, \
833
844
  ticker_type=ticker_type)
834
845
 
siat/other_indexes.py CHANGED
@@ -185,6 +185,7 @@ if __name__=='__main__':
185
185
  #==============================================================================
186
186
  if __name__=='__main__':
187
187
  ticker='AAPL'
188
+ ticker='^TVX'
188
189
  ticker='Apple'
189
190
  start='2025-4-1'; end='2025-4-30'
190
191
 
@@ -300,6 +301,8 @@ def search_av(keyword,api_key='VTRR3TA7L9O2DIX6'):
300
301
  """
301
302
  过程:给定上市公司关键名称或不带后缀的股票代码,找出Alpha Vantage的股票代码。
302
303
  """
304
+ DEBUG=False
305
+
303
306
  import requests
304
307
  url = f"https://www.alphavantage.co/query?function=SYMBOL_SEARCH&keywords={keyword}&apikey={api_key}"
305
308
  response = requests.get(url)
@@ -313,15 +316,17 @@ def search_av(keyword,api_key='VTRR3TA7L9O2DIX6'):
313
316
  firstcode=data["bestMatches"][0]['1. symbol']
314
317
  firstname=data["bestMatches"][0]['2. name']
315
318
  except:
316
- print(f" #Warning(search_av): no contents found for {keyword} in Alpha Vantage")
319
+ if DEBUG:
320
+ print(f" #Warning(search_av): no contents found for {keyword} in Alpha Vantage")
317
321
  #未找到可匹配的股票代码
318
322
  return None,None,None
319
323
 
320
324
  else:
321
- if "Information" in data:
322
- print(f" #Warning(search_av): exceeded limit of requests per day in Alpha Vantage")
323
- else:
324
- print(f" #Warning(search_av): keyword {keyword} not found in Alpha Vantage")
325
+ if DEBUG:
326
+ if "Information" in data:
327
+ print(f" #Warning(search_av): exceeded limit of requests per day in Alpha Vantage")
328
+ else:
329
+ print(f" #Warning(search_av): keyword {keyword} not found in Alpha Vantage")
325
330
  #未找到可匹配的股票代码
326
331
  return None,None,None
327
332
 
@@ -330,6 +335,7 @@ def search_av(keyword,api_key='VTRR3TA7L9O2DIX6'):
330
335
  #==============================================================================
331
336
  if __name__=='__main__':
332
337
  ticker='AAPL'
338
+ ticker='^TVX'
333
339
  start='2025-4-1'; end='2025-4-30'
334
340
 
335
341
  get_price_tiingo(ticker,start,end)
@@ -344,7 +350,6 @@ def get_price_tiingo(ticker,start,end):
344
350
  api_token='0892bdb0533f8114535f354db596e6c244f5618d'
345
351
 
346
352
  from tiingo import TiingoClient
347
-
348
353
  # 通过配置字典
349
354
  config = {
350
355
  'api_key': api_token, # 替换为实际密钥
@@ -352,18 +357,18 @@ def get_price_tiingo(ticker,start,end):
352
357
  }
353
358
  client = TiingoClient(config)
354
359
 
360
+
355
361
  # 获取历史行情(默认返回DataFrame)
356
362
  try:
357
363
  dft = client.get_dataframe(
358
- ticker,
359
- startDate=start,
360
- endDate=end,
361
- frequency='daily'
362
- )
364
+ ticker,
365
+ startDate=start,
366
+ endDate=end,
367
+ frequency='daily'
368
+ )
363
369
  except Exception as e:
364
370
  if DEBUG:
365
371
  print(f" #Error(get_price_tiingo): {e}")
366
- else:
367
372
  print(f" #Error(get_price_tiingo): {ticker} not found or exceeded max requests per day")
368
373
  return None
369
374
 
@@ -816,7 +816,8 @@ def compare_1ticker_mrar(ticker,start,end,rar=['sharpe','sortino','treynor','alp
816
816
  axhline_value=0,axhline_label='',facecolor='whitesmoke', \
817
817
  printout=False,sortby='tpw_mean',trailing=7,trend_threshhold=0.01, \
818
818
  annotate=False,annotate_value=False, \
819
- mark_top=False,mark_bottom=False,mark_end=False, \
819
+ mark_top=False,mark_bottom=False, \
820
+ mark_start=False,mark_end=False, \
820
821
  mktidx='auto',source='auto',ticker_type='auto'):
821
822
  """
822
823
  功能:一只股票,对比其多个rar,支持股票和投资组合
@@ -923,7 +924,8 @@ def compare_1ticker_mrar(ticker,start,end,rar=['sharpe','sortino','treynor','alp
923
924
  attention_point=attention_point,attention_point_area=attention_point_area, \
924
925
  annotate=annotate,annotate_value=annotate, \
925
926
  band_area=band_area, \
926
- mark_top=mark_top,mark_bottom=mark_bottom,mark_end=mark_end, \
927
+ mark_top=mark_top,mark_bottom=mark_bottom, \
928
+ mark_start=mark_start,mark_end=mark_end, \
927
929
  facecolor=facecolor,loc=loc1)
928
930
 
929
931
  #制表
@@ -988,7 +990,8 @@ def compare_mticker_1rar(ticker,start,end,rar='sharpe', \
988
990
  axhline_value=0,axhline_label='', \
989
991
  printout=False,sortby='tpw_mean',trailing=7,trend_threshhold=0.01, \
990
992
  annotate=False,annotate_value=False, \
991
- mark_top=False,mark_bottom=False,mark_end=False, \
993
+ mark_top=False,mark_bottom=False, \
994
+ mark_start=False,mark_end=False, \
992
995
  mktidx='auto',source='auto', \
993
996
  style_print=True,ticker_type='auto',facecolor='whitesmoke'):
994
997
  """
@@ -1116,7 +1119,8 @@ def compare_mticker_1rar(ticker,start,end,rar='sharpe', \
1116
1119
  attention_point=attention_point,attention_point_area=attention_point_area, \
1117
1120
  band_area=band_area, \
1118
1121
  annotate=annotate,annotate_value=annotate, \
1119
- mark_top=mark_top,mark_bottom=mark_bottom,mark_end=mark_end, \
1122
+ mark_top=mark_top,mark_bottom=mark_bottom, \
1123
+ mark_start=mark_start,mark_end=mark_end, \
1120
1124
  facecolor=facecolor,loc=loc1)
1121
1125
 
1122
1126
  #制表
@@ -1177,7 +1181,8 @@ def compare_mticker_mrar(ticker,start,end,rar=['sharpe','alpha','sortino','treyn
1177
1181
  axhline_value=0,axhline_label='', \
1178
1182
  printout=True,sortby='tpw_mean',trailing=7,trend_threshhold=0.01, \
1179
1183
  annotate=False,annotate_value=False, \
1180
- mark_top=False,mark_bottom=False,mark_end=False, \
1184
+ mark_top=False,mark_bottom=False, \
1185
+ mark_start=False,mark_end=False, \
1181
1186
  mktidx='auto',source='auto', \
1182
1187
  ticker_type='auto',facecolor='whitesmoke'):
1183
1188
  """
@@ -1209,7 +1214,8 @@ def compare_mticker_mrar(ticker,start,end,rar=['sharpe','alpha','sortino','treyn
1209
1214
  printout=printout,sortby=sortby, \
1210
1215
  trailing=trailing,trend_threshhold=trend_threshhold, \
1211
1216
  annotate=annotate,annotate_value=annotate, \
1212
- mark_top=mark_top,mark_bottom=mark_bottom,mark_end=mark_end, \
1217
+ mark_top=mark_top,mark_bottom=mark_bottom, \
1218
+ mark_start=mark_start,mark_end=mark_end, \
1213
1219
  mktidx=mktidx,source=source,style_print=True, \
1214
1220
  ticker_type=ticker_type,loc1=loc1)
1215
1221
  if df_tmp is None:
@@ -1386,7 +1392,8 @@ def compare_1ticker_1rar_mret(ticker,start,end,rar='sharpe', \
1386
1392
  axhline_value=0,axhline_label='',facecolor='whitesmoke', \
1387
1393
  printout=False,sortby='tpw_mean',trailing=7,trend_threshhold=0.01, \
1388
1394
  annotate=False,annotate_value=False, \
1389
- mark_top=False,mark_bottom=False,mark_end=False, \
1395
+ mark_top=False,mark_bottom=False, \
1396
+ mark_start=False,mark_end=False, \
1390
1397
  mktidx='auto',source='auto',ticker_type='auto'):
1391
1398
  """
1392
1399
  功能:一只股票,同一个rar,对比其不同的收益率类型,支持股票和投资组合
@@ -1486,7 +1493,8 @@ def compare_1ticker_1rar_mret(ticker,start,end,rar='sharpe', \
1486
1493
  attention_point=attention_point,attention_point_area=attention_point_area, \
1487
1494
  annotate=annotate,annotate_value=annotate, \
1488
1495
  band_area=band_area, \
1489
- mark_top=mark_top,mark_bottom=mark_bottom,mark_end=mark_end, \
1496
+ mark_top=mark_top,mark_bottom=mark_bottom, \
1497
+ mark_start=mark_start,mark_end=mark_end, \
1490
1498
  facecolor=facecolor,loc=loc1)
1491
1499
 
1492
1500
  #制表
@@ -1548,7 +1556,8 @@ def compare_1ticker_1rar_1ret_mRF(ticker,start,end,rar='sharpe', \
1548
1556
  axhline_value=0,axhline_label='',facecolor='whitesmoke', \
1549
1557
  printout=False,sortby='tpw_mean',trailing=7,trend_threshhold=0.01, \
1550
1558
  annotate=False,annotate_value=False, \
1551
- mark_top=False,mark_bottom=False,mark_end=False, \
1559
+ mark_top=False,mark_bottom=False, \
1560
+ mark_start=False,mark_end=False, \
1552
1561
  mktidx='auto',source='auto',ticker_type='auto'):
1553
1562
  """
1554
1563
  功能:一只股票,相同的rar,相同的收益率类型,不同的无风险收益率
@@ -1643,7 +1652,8 @@ def compare_1ticker_1rar_1ret_mRF(ticker,start,end,rar='sharpe', \
1643
1652
  attention_point=attention_point,attention_point_area=attention_point_area, \
1644
1653
  annotate=annotate,annotate_value=annotate, \
1645
1654
  band_area=band_area, \
1646
- mark_top=mark_top,mark_bottom=mark_bottom,mark_end=mark_end, \
1655
+ mark_top=mark_top,mark_bottom=mark_bottom, \
1656
+ mark_start=mark_start,mark_end=mark_end, \
1647
1657
  facecolor=facecolor,loc=loc1)
1648
1658
 
1649
1659
  #制表
@@ -1722,7 +1732,8 @@ def compare_rar_security(ticker,start,end,rar='sharpe', \
1722
1732
  axhline_value=0,axhline_label='',facecolor='whitesmoke', \
1723
1733
  printout=False,sortby='tpw_mean',trailing=7,trend_threshhold=0.05, \
1724
1734
  annotate=False,annotate_value=False, \
1725
- mark_top=False,mark_bottom=False,mark_end=False, \
1735
+ mark_top=False,mark_bottom=False, \
1736
+ mark_start=False,mark_end=False, \
1726
1737
  mktidx='auto',source='auto', \
1727
1738
  ticker_type='auto'):
1728
1739
  """
@@ -1757,7 +1768,8 @@ def compare_rar_security(ticker,start,end,rar='sharpe', \
1757
1768
  printout=printout, \
1758
1769
  sortby=sortby,trailing=trailing,trend_threshhold=trend_threshhold, \
1759
1770
  annotate=annotate,annotate_value=annotate, \
1760
- mark_top=mark_top,mark_bottom=mark_bottom,mark_end=mark_end, \
1771
+ mark_top=mark_top,mark_bottom=mark_bottom, \
1772
+ mark_start=mark_start,mark_end=mark_end, \
1761
1773
  mktidx=mktidx,source=source, \
1762
1774
  ticker_type=ticker_type,facecolor=facecolor)
1763
1775
  return df
@@ -1774,7 +1786,8 @@ def compare_rar_security(ticker,start,end,rar='sharpe', \
1774
1786
  printout=printout, \
1775
1787
  sortby=sortby,trailing=trailing,trend_threshhold=trend_threshhold, \
1776
1788
  annotate=annotate,annotate_value=annotate, \
1777
- mark_top=mark_top,mark_bottom=mark_bottom,mark_end=mark_end, \
1789
+ mark_top=mark_top,mark_bottom=mark_bottom, \
1790
+ mark_start=mark_start,mark_end=mark_end, \
1778
1791
  mktidx=mktidx,source=source, \
1779
1792
  ticker_type=ticker_type,facecolor=facecolor)
1780
1793
  return df
@@ -1800,7 +1813,8 @@ def compare_rar_security(ticker,start,end,rar='sharpe', \
1800
1813
  printout=printout,facecolor=facecolor, \
1801
1814
  sortby=sortby,trailing=trailing,trend_threshhold=trend_threshhold, \
1802
1815
  annotate=annotate,annotate_value=annotate, \
1803
- mark_top=mark_top,mark_bottom=mark_bottom,mark_end=mark_end, \
1816
+ mark_top=mark_top,mark_bottom=mark_bottom, \
1817
+ mark_start=mark_start,mark_end=mark_end, \
1804
1818
  mktidx=mktidx,source=source, \
1805
1819
  ticker_type=ticker_type)
1806
1820
  return df
@@ -1824,7 +1838,8 @@ def compare_rar_security(ticker,start,end,rar='sharpe', \
1824
1838
  printout=printout, \
1825
1839
  sortby=sortby,trailing=trailing,trend_threshhold=trend_threshhold, \
1826
1840
  annotate=annotate,annotate_value=annotate, \
1827
- mark_top=mark_top,mark_bottom=mark_bottom,mark_end=mark_end, \
1841
+ mark_top=mark_top,mark_bottom=mark_bottom, \
1842
+ mark_start=mark_start,mark_end=mark_end, \
1828
1843
  mktidx=mktidx,source=source, \
1829
1844
  ticker_type=ticker_type,facecolor=facecolor)
1830
1845
  return df
@@ -1846,7 +1861,8 @@ def compare_rar_security(ticker,start,end,rar='sharpe', \
1846
1861
  printout=printout,facecolor=facecolor, \
1847
1862
  sortby=sortby,trailing=trailing,trend_threshhold=trend_threshhold, \
1848
1863
  annotate=annotate,annotate_value=annotate, \
1849
- mark_top=mark_top,mark_bottom=mark_bottom,mark_end=mark_end, \
1864
+ mark_top=mark_top,mark_bottom=mark_bottom, \
1865
+ mark_start=mark_start,mark_end=mark_end, \
1850
1866
  mktidx=mktidx,source=source, \
1851
1867
  ticker_type=ticker_type)
1852
1868
  return df
@@ -1864,7 +1880,8 @@ def compare_rar_security(ticker,start,end,rar='sharpe', \
1864
1880
  printout=printout,sortby=sortby, \
1865
1881
  trailing=trailing,trend_threshhold=trend_threshhold, \
1866
1882
  annotate=annotate,annotate_value=annotate, \
1867
- mark_top=mark_top,mark_bottom=mark_bottom,mark_end=mark_end, \
1883
+ mark_top=mark_top,mark_bottom=mark_bottom, \
1884
+ mark_start=mark_start,mark_end=mark_end, \
1868
1885
  mktidx=mktidx,source=source, \
1869
1886
  ticker_type=ticker_type,facecolor=facecolor)
1870
1887
 
siat/security_prices.py CHANGED
@@ -1468,14 +1468,30 @@ def get_price_yq(ticker,start,end):
1468
1468
 
1469
1469
  输出:指定收盘价格序列,最新日期的股价排列在前
1470
1470
  """
1471
+ DEBUG=False
1472
+
1471
1473
  p=None
1472
1474
 
1473
1475
  #支持多个证券
1474
1476
  import yahooquery as yq
1475
1477
  ticker1,islist=cvt_yftickerlist(ticker)
1476
- if not islist:
1477
- #下载单一股票的股价
1478
+
1479
+ try:
1480
+ #下载单一股票的股价;下载股票列表的股价,与单股票情况相同,但需注意MultiInex结构
1478
1481
  stock=yq.Ticker(ticker1, asynchronous=True)
1482
+ except:
1483
+ if DEBUG:
1484
+ print(" Yahoo api is tentatively inaccessible, recovering ...")
1485
+ sleep_random(max_sleep=60)
1486
+ try:
1487
+ stock=yq.Ticker(ticker1, asynchronous=True)
1488
+ except:
1489
+ if DEBUG:
1490
+ print(f" Sorry, failed to retrieve info from Yahoo for {ticker}")
1491
+ p=None
1492
+ return p
1493
+
1494
+ if not islist:
1479
1495
  try:
1480
1496
  p=stock.history(start=start,end=end)
1481
1497
  #仅针对雅虎情况
@@ -1484,8 +1500,6 @@ def get_price_yq(ticker,start,end):
1484
1500
  except:
1485
1501
  p=None
1486
1502
  else:
1487
- #下载股票列表的股价,与但股票情况相同,但需注意MultiInex结构
1488
- stock=yq.Ticker(ticker1, asynchronous=True)
1489
1503
  try:
1490
1504
  p=stock.history(start=start,end=end)
1491
1505
  #仅针对雅虎情况
siat/security_trend2.py CHANGED
@@ -150,7 +150,8 @@ def security_trend(ticker,indicator='Close',adjust='', \
150
150
  preprocess='none',scaling_option='change%', \
151
151
 
152
152
  annotate=False,annotate_value=False, \
153
- mark_top=False,mark_bottom=False,mark_end=False, \
153
+ mark_top=False,mark_bottom=False, \
154
+ mark_start=False,mark_end=False, \
154
155
 
155
156
  printout=False,source='auto', \
156
157
  ticker_type='auto', \
@@ -235,9 +236,10 @@ def security_trend(ticker,indicator='Close',adjust='', \
235
236
  indicator='Exp Ret%',
236
237
  start='MRY')
237
238
  """
238
-
239
239
  DEBUG=False
240
240
 
241
+ print(f" Looking for info of specified securities ...")
242
+
241
243
  #critical_value=attention_value
242
244
 
243
245
  portfolio_flag=False #标志:ticker中是否含有投资组合
@@ -436,7 +438,8 @@ def security_trend(ticker,indicator='Close',adjust='', \
436
438
  datatag=datatag,power=power,graph=graph, \
437
439
  source=source,loc=loc1, \
438
440
  mark_top=mark_top,mark_bottom=mark_bottom, \
439
- mark_end=mark_end,ticker_type=ticker_type, \
441
+ mark_start=mark_start,mark_end=mark_end, \
442
+ ticker_type=ticker_type, \
440
443
  facecolor=facecolor)
441
444
  return df
442
445
 
@@ -472,7 +475,8 @@ def security_trend(ticker,indicator='Close',adjust='', \
472
475
  date_range=date_range,date_freq=date_freq, \
473
476
  annotate=annotate,annotate_value=annotate_value, \
474
477
  source=source,
475
- mark_top=mark_top,mark_bottom=mark_bottom,mark_end=mark_end, \
478
+ mark_top=mark_top,mark_bottom=mark_bottom, \
479
+ mark_start=mark_start,mark_end=mark_end, \
476
480
  ticker_type=ticker_type,facecolor=facecolor)
477
481
  return df
478
482
 
@@ -528,7 +532,8 @@ def security_trend(ticker,indicator='Close',adjust='', \
528
532
  annotate=annotate,annotate_value=annotate_value, \
529
533
  smooth=smooth, \
530
534
  source=source, \
531
- mark_top=mark_top,mark_bottom=mark_bottom,mark_end=mark_end, \
535
+ mark_top=mark_top,mark_bottom=mark_bottom, \
536
+ mark_start=mark_start,mark_end=mark_end, \
532
537
  ticker_type=ticker_type,facecolor=facecolor)
533
538
  return df
534
539
 
@@ -552,7 +557,8 @@ def security_trend(ticker,indicator='Close',adjust='', \
552
557
  printout=printout, \
553
558
  sortby=sortby,trailing=trailing,trend_threshhold=trend_threshhold, \
554
559
  annotate=annotate,annotate_value=annotate_value, \
555
- mark_top=mark_top,mark_bottom=mark_bottom,mark_end=mark_end, \
560
+ mark_top=mark_top,mark_bottom=mark_bottom, \
561
+ mark_start=mark_start,mark_end=mark_end, \
556
562
  mktidx=market_index,source=source, \
557
563
  ticker_type=ticker_type,facecolor=facecolor)
558
564
  return df
@@ -572,7 +578,8 @@ def security_trend(ticker,indicator='Close',adjust='', \
572
578
  band_area=band_area, \
573
579
  graph=graph,facecolor=facecolor,loc=loc1, \
574
580
  annotate=annotate,annotate_value=annotate_value, \
575
- mark_top=mark_top,mark_bottom=mark_bottom,mark_end=mark_end, \
581
+ mark_top=mark_top,mark_bottom=mark_bottom, \
582
+ mark_start=mark_start,mark_end=mark_end, \
576
583
  mktidx=market_index,source=source, \
577
584
  ticker_type=ticker_type)
578
585
 
@@ -589,7 +596,8 @@ def security_trend(ticker,indicator='Close',adjust='', \
589
596
  attention_point=attention_point,attention_point_area=attention_point_area, \
590
597
  band_area=band_area, \
591
598
  annotate=annotate,annotate_value=annotate_value, \
592
- mark_top=mark_top,mark_bottom=mark_bottom,mark_end=mark_end)
599
+ mark_top=mark_top,mark_bottom=mark_bottom, \
600
+ mark_start=mark_start,mark_end=mark_end)
593
601
  return df
594
602
 
595
603
  # 其他未预料情形
siat/stock.py CHANGED
@@ -656,7 +656,8 @@ def security_indicator(ticker,indicator, \
656
656
  attention_point='',attention_point_area='', \
657
657
  average_value=False, \
658
658
  datatag=False,power=0,graph=True,source='auto', \
659
- mark_top=True,mark_bottom=True,mark_end=True, \
659
+ mark_top=True,mark_bottom=True, \
660
+ mark_start=True,mark_end=True, \
660
661
  ticker_type='auto',facecolor='whitesmoke',loc='best'):
661
662
  """
662
663
  功能:单只证券的全部指标
@@ -767,7 +768,8 @@ def security_indicator(ticker,indicator, \
767
768
  average_value=average_value, \
768
769
  attention_value=attention_value,attention_value_area=attention_value_area, \
769
770
  attention_point=attention_point,attention_point_area=attention_point_area, \
770
- mark_top=mark_top,mark_bottom=mark_bottom,mark_end=mark_end, \
771
+ mark_top=mark_top,mark_bottom=mark_bottom, \
772
+ mark_start=mark_start,mark_end=mark_end, \
771
773
  facecolor=facecolor,loc=loc)
772
774
 
773
775
  return erdf3
@@ -895,7 +897,8 @@ def security_mindicators(ticker,measures,
895
897
  date_range=False,date_freq=False, \
896
898
  annotate=False,annotate_value=False, \
897
899
  source='auto', \
898
- mark_top=True,mark_bottom=True,mark_end=True, \
900
+ mark_top=True,mark_bottom=True, \
901
+ mark_start=True,mark_end=True, \
899
902
  ticker_type='auto'):
900
903
  """
901
904
  功能:单个证券,多个指标对比
@@ -1001,7 +1004,9 @@ def security_mindicators(ticker,measures,
1001
1004
  attention_value=attention_value,attention_value_area=attention_value_area, \
1002
1005
  attention_point=attention_point,attention_point_area=attention_point_area, \
1003
1006
  annotate=annotate,annotate_value=annotate_value, \
1004
- mark_top=mark_top,mark_bottom=mark_bottom,mark_end=mark_end,facecolor=facecolor, \
1007
+ mark_top=mark_top,mark_bottom=mark_bottom, \
1008
+ mark_start=mark_start,mark_end=mark_end, \
1009
+ facecolor=facecolor, \
1005
1010
  band_area=band_area,loc=loc)
1006
1011
 
1007
1012
  return df
@@ -1977,7 +1982,8 @@ def compare_msecurity(tickers,measure,start,end, \
1977
1982
  annotate=False,annotate_value=False, \
1978
1983
  smooth=True, \
1979
1984
  source='auto', \
1980
- mark_top=True,mark_bottom=True,mark_end=False, \
1985
+ mark_top=True,mark_bottom=True, \
1986
+ mark_start=False,mark_end=False, \
1981
1987
  ticker_type='auto'):
1982
1988
  """
1983
1989
  功能:比较并绘制多条证券指标曲线(多于2条),个数可为双数或单数
@@ -2160,7 +2166,8 @@ def compare_msecurity(tickers,measure,start,end, \
2160
2166
  attention_point=attention_point,attention_point_area=attention_point_area, \
2161
2167
  band_area=band_area, \
2162
2168
  annotate=annotate,annotate_value=annotate_value,plus_sign=plus_sign, \
2163
- mark_top=mark_top,mark_bottom=mark_bottom,mark_end=mark_end,facecolor=facecolor)
2169
+ mark_top=mark_top,mark_bottom=mark_bottom, \
2170
+ mark_start=mark_start,mark_end=mark_end,facecolor=facecolor)
2164
2171
 
2165
2172
  return dfs2
2166
2173
 
siat/valuation.py CHANGED
@@ -946,7 +946,8 @@ def security_valuation(tickers,indicators,start,end, \
946
946
  attention_point='',attention_point_area='', \
947
947
  band_area='', \
948
948
  annotate=False,annotate_value=False, \
949
- mark_top=False,mark_bottom=False,mark_end=False):
949
+ mark_top=False,mark_bottom=False, \
950
+ mark_start=False,mark_end=False):
950
951
  """
951
952
  功能:绘制估值走势
952
953
  """
@@ -1030,7 +1031,8 @@ def security_valuation(tickers,indicators,start,end, \
1030
1031
  attention_value=attention_value,attention_value_area=attention_value_area, \
1031
1032
  attention_point=attention_point,attention_point_area=attention_point_area, \
1032
1033
  annotate=annotate,annotate_value=annotate_value, \
1033
- mark_top=mark_top,mark_bottom=mark_bottom,mark_end=mark_end)
1034
+ mark_top=mark_top,mark_bottom=mark_bottom, \
1035
+ mark_start=mark_start,mark_end=mark_end)
1034
1036
 
1035
1037
  return df
1036
1038
 
@@ -1148,7 +1150,8 @@ def security_valuation(tickers,indicators,start,end, \
1148
1150
  facecolor=facecolor, \
1149
1151
  attention_value=attention_value,attention_value_area=attention_value_area, \
1150
1152
  attention_point=attention_point,attention_point_area=attention_point_area, \
1151
- mark_top=mark_top,mark_bottom=mark_bottom,mark_end=mark_end)
1153
+ mark_top=mark_top,mark_bottom=mark_bottom, \
1154
+ mark_start=mark_start,mark_end=mark_end)
1152
1155
 
1153
1156
  return df
1154
1157
 
@@ -1195,7 +1198,8 @@ def security_valuation(tickers,indicators,start,end, \
1195
1198
  facecolor=facecolor, \
1196
1199
  attention_value=attention_value,attention_value_area=attention_value_area, \
1197
1200
  attention_point=attention_point,attention_point_area=attention_point_area, \
1198
- mark_top=mark_top,mark_bottom=mark_bottom,mark_end=mark_end)
1201
+ mark_top=mark_top,mark_bottom=mark_bottom, \
1202
+ mark_start=mark_start,mark_end=mark_end)
1199
1203
 
1200
1204
  return df
1201
1205
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: siat
3
- Version: 3.10.1
3
+ Version: 3.10.11
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
@@ -16,7 +16,7 @@ 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=wGF_HmK_AiGWjpSAx79XHIxDghtI_ueYozvh06-2JEQ,33707
19
+ siat/capm_beta2.py,sha256=LmrfFhm4A-HLGolJ5rdlZFDGJkClS2I3Wv7gaHM3Tdw,34275
20
20
  siat/capm_beta_test.py,sha256=ImR0c5mc4hIl714XmHztdl7qg8v1E2lycKyiqnFj6qs,1745
21
21
  siat/cmat_commons.py,sha256=Nj9Kf0alywaztVoMVeVVL_EZk5jRERJy8R8kBw88_Tg,38116
22
22
  siat/common.py,sha256=J0qSvKtPS1gAfb2_GJNKxFkWJJaNbkQzg4fzaBvKwjM,183440
@@ -89,11 +89,11 @@ siat/option_china_test.py,sha256=UQ-YUHUjoGBQyanLcM-yzqeEIUQP_gCQIeT0W6rnUnA,163
89
89
  siat/option_pricing.py,sha256=vyQNgBsjcJi70Pa-fJTVVIGK_3jWh80tkd1ESnn3sE4,74069
90
90
  siat/option_pricing_test.py,sha256=eeorV5Ja5vjlRXnP6fWJHetGU5Vb8SnLopkC6RV3GfA,2203
91
91
  siat/option_sina_api_test.py,sha256=dn-k_wrQnAaNKHoROvWJEc7lqlU0bwiV2Aa4usWAFGM,5908
92
- siat/other_indexes.py,sha256=zIUOcaytf0e2NnGU9Bkyiu3z_GaR_-T8nVGCZ4s4Bws,13615
92
+ siat/other_indexes.py,sha256=vx9am_kqogvKiJ82qrw5vqv-4wG4qdvHI0XCdAW9n7s,13842
93
93
  siat/proxy_test.py,sha256=erQJrmGs2X46z8Gb1h-7GYQ0rTUcaR8dxHExWoBz2eM,2610
94
94
  siat/quandl_test.py,sha256=EcPoXnLuqzPl5dKyVEZi3j3PJZFpsnU_iNPhLWC9p-A,1552
95
95
  siat/risk_adjusted_return.py,sha256=6F8CpKm-HKO4wfnndri0ew-D3lDAH1fs5O9K5cphoLg,55096
96
- siat/risk_adjusted_return2.py,sha256=92GXCpJPVVsYpQ-X3WXaADZvCqxsuJXQN5vG5trVX9I,86296
96
+ siat/risk_adjusted_return2.py,sha256=VzW3GOumNAoHcZL-0eOdsQma9w6JRTmBKU7gXdsl5DQ,87136
97
97
  siat/risk_adjusted_return_test.py,sha256=m_VHL5AtT74cJv5i7taTeTfnkX48y0AFJk5phawyYWg,3416
98
98
  siat/risk_evaluation.py,sha256=HK6U2G85-AxjSoeARbmTuiCNwTVdPdB9Znfgvslo0Os,76455
99
99
  siat/risk_evaluation_test.py,sha256=YEXM96gKzTfwN4U61AS4Rr1tV7KgUvn4rRC6f3iMw9s,3731
@@ -103,14 +103,14 @@ siat/sector_china.py,sha256=9zjdORWx5ia_gUezidhOKWmCnVDwWcnnjjugHudelaQ,157411
103
103
  siat/sector_china_test.py,sha256=1wq7ef8Bb_L8F0h0W6FvyBrIcBTEbrTV7hljtpj49U4,5843
104
104
  siat/security_price.py,sha256=2oHskgiw41KMGfqtnA0i2YjNNV6cYgtlUK0j3YeuXWs,29185
105
105
  siat/security_price2.py,sha256=uC-wA6w3IlA9ZOJYINqIB7LexCbrnnqTkHTPuCSCwpo,27697
106
- siat/security_prices.py,sha256=MD1pANBD4E_dppLHxgoc7QoceGmKO3huOr2IQpU_eiQ,111570
106
+ siat/security_prices.py,sha256=W6_K6mbwlPTrhxQDIGPjfx--jGD8Tdijxt-qOXeXcjk,111941
107
107
  siat/security_prices_test.py,sha256=OEphoJ87NPKoNow1QA8EU_5MUYrJF-qKoWKNapVfZNI,10779
108
108
  siat/security_trend.py,sha256=o0vpWdrJkmODCP94X-Bvn-w7efHhj9HpUYBHtLl55D0,17240
109
109
  siat/security_trend2-20240620.py,sha256=QVnEcb7AyVbO77jVqfFsJffGXrX8pgJ9xCfoAKmWBPk,24854
110
- siat/security_trend2.py,sha256=8-Z-PWaX8fjnyAyfxEp3qXdVllgDpRISOASKEn7Zeoc,30706
110
+ siat/security_trend2.py,sha256=CS2dMIC4dtTrFJ-X6DmVeujw_twzbJ0ou9cYuhbG7FM,31144
111
111
  siat/setup.py,sha256=up65rQGLmTBkhtaMLowjoQXYmIsnycnm4g1SYmeQS6o,1335
112
112
  siat/shenwan index history test.py,sha256=JCVAzOSEldHalhSFa3pqD8JI_8_djPMQOxpkuYU-Esg,1418
113
- siat/stock.py,sha256=ixl9NWhFS-z9cQUnBOaQ_u2gqsCiG02zZZrLVBSqPwQ,159941
113
+ siat/stock.py,sha256=ZTsewPKh_sDz-nd4GxR9af7V1ajTSqTAYUop_sf3PcM,160225
114
114
  siat/stock_advice_linear.py,sha256=-twT7IGP-NEplkL1WPSACcNJjggRB2j4mlAQCkzOAuo,31655
115
115
  siat/stock_base.py,sha256=uISvbRyOGy8p9QREA96CVydgflBkn5L3OXOGKl8oanc,1312
116
116
  siat/stock_china.py,sha256=85Ggb21E2mrCYMdSSTTrkoyyLGXMK2V-BtlweHomSRg,93460
@@ -140,13 +140,13 @@ siat/translate.py,sha256=m8mDVHilsw9nSIGBcvl_pS-aMy3W7UVKEZsLwhfuIEg,263300
140
140
  siat/translate_20240606.py,sha256=63IyHWEU3Uz9mjwyuAX3fqY4nUMdwh0ICQAgmgPXP7Y,215121
141
141
  siat/translate_241003_keep.py,sha256=un7Fqe1v35MXsja5exZgjmLzrZtt66NARZIGlyFuGGU,218747
142
142
  siat/universal_test.py,sha256=CDAOffW1Rvs-TcNN5giWVvHMlch1w4dp-w5SIV9jXL0,3936
143
- siat/valuation.py,sha256=K7epQC_UtELjRR5cyjJp4gskSyJMxXy-jHIAS0SUEj8,51801
143
+ siat/valuation.py,sha256=xGizcKJZ3ADLWWHm2TFQub18FxiDv2doQwBwbEqyqz0,51980
144
144
  siat/valuation_china.py,sha256=eSKIDckyjG8QkENlW_OKkqbQHno8pzDcomBO9iGNJVM,83079
145
145
  siat/valuation_market_china_test.py,sha256=gbJ0ioauuo4koTPH6WKUkqcXiQPafnbhU5eKJ6lpdLA,1571
146
146
  siat/var_model_validation.py,sha256=R0caWnuZarrRg9939hxh3vJIIpIyPfvelYmzFNZtPbo,14910
147
147
  siat/yf_name.py,sha256=laNKMTZ9hdenGX3IZ7G0a2RLBKEWtUQJFY9CWuk_fp8,24058
148
- siat-3.10.1.dist-info/LICENSE,sha256=NTEMMROY9_4U1szoKC3N2BLHcDd_o5uTgqdVH8tbApw,1071
149
- siat-3.10.1.dist-info/METADATA,sha256=45hmgtcQRU3Qq-7X7UlCGRDQrV-_c-VNt8Oec76xNBQ,8396
150
- siat-3.10.1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
151
- siat-3.10.1.dist-info/top_level.txt,sha256=r1cVyL7AIKqeAmEJjNR8FMT20OmEzufDstC2gv3NvEY,5
152
- siat-3.10.1.dist-info/RECORD,,
148
+ siat-3.10.11.dist-info/LICENSE,sha256=NTEMMROY9_4U1szoKC3N2BLHcDd_o5uTgqdVH8tbApw,1071
149
+ siat-3.10.11.dist-info/METADATA,sha256=oCWBelUMSlhnoyP16cqkkknPak8vHOaUUD8cHfVx9YM,8397
150
+ siat-3.10.11.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
151
+ siat-3.10.11.dist-info/top_level.txt,sha256=r1cVyL7AIKqeAmEJjNR8FMT20OmEzufDstC2gv3NvEY,5
152
+ siat-3.10.11.dist-info/RECORD,,
File without changes