siat 2.14.1__py3-none-any.whl → 3.0.0__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/allin.py CHANGED
@@ -86,6 +86,7 @@ from siat.valuation_china import *
86
86
 
87
87
  # 获取证券价格与计算
88
88
  from siat.security_prices import *
89
+ from siat.security_price2 import *
89
90
 
90
91
  # 股票分析
91
92
  from siat.stock import *
siat/assets_liquidity.py CHANGED
@@ -112,9 +112,9 @@ def roll_spread_portfolio(portfolio,start,end,printout=True):
112
112
 
113
113
  _,_,tickerlist,sharelist=decompose_portfolio(portfolio)
114
114
  if len(tickerlist)==1:
115
- product=str(codetranslate(tickerlist))
115
+ product=str(ticker_name(tickerlist,'bond'))
116
116
  else:
117
- product=str(codetranslate(tickerlist))+' by '+str(sharelist)
117
+ product=str(ticker_name(tickerlist))+' by '+str(sharelist)
118
118
  print("投资组合:",product)
119
119
  print("计算期间:",date_start,"to",date_end, \
120
120
  "(可用日期)")
@@ -193,9 +193,9 @@ def amihud_illiquidity_portfolio(portfolio,start,end,printout=True):
193
193
 
194
194
  _,_,tickerlist,sharelist=decompose_portfolio(portfolio)
195
195
  if len(tickerlist)==1:
196
- product=str(codetranslate(tickerlist))
196
+ product=str(ticker_name(tickerlist,'bond'))
197
197
  else:
198
- product=str(codetranslate(tickerlist))+' by '+str(sharelist)
198
+ product=str(ticker_name(tickerlist))+' by '+str(sharelist)
199
199
  print("投资组合:",product)
200
200
  print("计算期间:",date_start,"至",date_end, \
201
201
  "(可用日期)")
@@ -339,9 +339,9 @@ def ps_liquidity_portfolio(portfolio,start,end,printout=True):
339
339
 
340
340
  _,_,tickerlist,sharelist=decompose_portfolio(portfolio)
341
341
  if len(tickerlist)==1:
342
- product=str(codetranslate(tickerlist))
342
+ product=str(ticker_name(tickerlist,'bond'))
343
343
  else:
344
- product=str(codetranslate(tickerlist))+' by '+str(sharelist)
344
+ product=str(ticker_name(tickerlist))+' by '+str(sharelist)
345
345
  print("投资组合:",product)
346
346
  print("计算期间:",date_start,"to",date_end, \
347
347
  "(可用日期)")
@@ -424,9 +424,9 @@ def plot_liquidity_monthly(portfolio,start,end,liquidity_type):
424
424
 
425
425
  _,_,tickerlist,sharelist=decompose_portfolio(portfolio)
426
426
  if len(tickerlist)==1:
427
- product=str(codetranslate(tickerlist))
427
+ product=str(ticker_name(tickerlist,'bond'))
428
428
  else:
429
- product=str(codetranslate(tickerlist))+' by '+str(sharelist)
429
+ product=str(ticker_name(tickerlist))+' by '+str(sharelist)
430
430
  import datetime as dt; today=dt.date.today()
431
431
  footnote="证券="+product+"\n数据来源:新浪/stooq, "+str(today)
432
432
  datatag=False
@@ -522,9 +522,9 @@ def plot_liquidity_annual(portfolio,start,end,liquidity_type):
522
522
 
523
523
  _,_,tickerlist,sharelist=decompose_portfolio(portfolio)
524
524
  if len(tickerlist)==1:
525
- product=str(codetranslate(tickerlist))
525
+ product=str(ticker_name(tickerlist,'bond'))
526
526
  else:
527
- product=str(codetranslate(tickerlist))+' by '+str(sharelist)
527
+ product=str(ticker_name(tickerlist,'bond'))+' by '+str(sharelist)
528
528
 
529
529
  import datetime as dt; today=dt.date.today()
530
530
  footnote="证券="+product+"\n数据来源:雅虎财经, "+str(today)
@@ -566,9 +566,9 @@ def draw_liquidity(liqs):
566
566
 
567
567
  _,_,tickerlist,sharelist=decompose_portfolio(portfolio)
568
568
  if len(tickerlist)==1:
569
- product=str(codetranslate(tickerlist))
569
+ product=str(ticker_name(tickerlist))
570
570
  else:
571
- product=str(codetranslate(tickerlist))+' by '+str(sharelist)
571
+ product=str(ticker_name(tickerlist,'bond'))+' by '+str(sharelist)
572
572
 
573
573
  import datetime as dt; today=dt.date.today()
574
574
  footnote="证券="+product+"\n数据来源:新浪/stooq, "+str(today)
@@ -722,14 +722,14 @@ def compare_liquidity_rolling(portfolio1,portfolio2,start,end,liquidity_type,win
722
722
 
723
723
  _,_,tickerlist1,sharelist1=decompose_portfolio(portfolio1)
724
724
  if len(tickerlist1)==1:
725
- product1=str(codetranslate(tickerlist1))
725
+ product1=str(ticker_name(tickerlist1,'bond'))
726
726
  else:
727
- product1=str(codetranslate(tickerlist1))+',持仓'+str(sharelist1)
727
+ product1=str(ticker_name(tickerlist1,'bond'))+',持仓'+str(sharelist1)
728
728
  _,_,tickerlist2,sharelist2=decompose_portfolio(portfolio2)
729
729
  if len(tickerlist2)==1:
730
- product2=str(codetranslate(tickerlist2))
730
+ product2=str(ticker_name(tickerlist2,'bond'))
731
731
  else:
732
- product2=str(codetranslate(tickerlist2))+',持仓'+str(sharelist2)
732
+ product2=str(ticker_name(tickerlist2,'bond'))+',持仓'+str(sharelist2)
733
733
 
734
734
  import datetime as dt; today=dt.date.today()
735
735
  """
siat/beta_adjustment.py CHANGED
@@ -197,7 +197,7 @@ def draw2_betas(model,scope,ticker,betas):
197
197
  stkname=stkinfo['shortName']
198
198
  title1="\n"+stkname+"\n"+model+"\n(Benchmark on "+idxname+")"
199
199
  """
200
- title1=codetranslate(ticker)+": "+model+"\n(基于"+codetranslate(scope)+")"
200
+ title1=ticker_name(ticker)+": "+model+"\n(基于"+ticker_name(scope)+")"
201
201
 
202
202
  #转换索引类型为DatetimeIndex,便于后续处理
203
203
  """
@@ -846,11 +846,11 @@ def get_beta_hamada2(stkcd,mktidx,printout=True,graph=True):
846
846
  cflb_avg_txt='均值: '+str(round(cflb_avg,1))+'%'
847
847
  plt.axhline(y=cflb_avg,color='b',linestyle=':',label=cflb_avg_txt)
848
848
 
849
- title1=codetranslate(stkcd)+": 财务杠杆对于贝塔系数的贡献度(CFLB)"
849
+ title1=ticker_name(stkcd)+": 财务杠杆对于贝塔系数的贡献度(CFLB)"
850
850
  #plt.title(title1,fontsize=12,fontweight='bold')
851
851
  plt.title(title1)
852
852
  #plt.ylabel("CFLB %",fontsize=12,fontweight='bold')
853
- footnote="注: 基于"+codetranslate(mktidx)
853
+ footnote="注: 基于"+ticker_name(mktidx)
854
854
 
855
855
  import datetime; today = datetime.date.today()
856
856
  footnote2="\n数据来源: 新浪,"+str(today)
@@ -870,7 +870,7 @@ def get_beta_hamada2(stkcd,mktidx,printout=True,graph=True):
870
870
  ticker1=ticker2=stkcd
871
871
  colname1='CFLB%'; colname2='lev ratio'
872
872
  label1='CFLB%'; label2='财务杠杆'
873
- titletxt=codetranslate(stkcd)+": CFLB与财务杠杆之间的关系"
873
+ titletxt=ticker_name(stkcd)+": CFLB与财务杠杆之间的关系"
874
874
  footnote='注: 这里的财务杠杆使用的是负债/所有者权益'
875
875
 
876
876
  plot_line2_twinx(df1,ticker1,colname1,label1,df2,ticker2,colname2,label2, \
@@ -881,7 +881,7 @@ def get_beta_hamada2(stkcd,mktidx,printout=True,graph=True):
881
881
  #ticker1=ticker2=stkcd
882
882
  colname1='CFLB%'; colname2='tax rate'
883
883
  label1='CFLB%'; label2='实际税率'
884
- titletxt=codetranslate(stkcd)+": CFLB与税率之间的关系"
884
+ titletxt=ticker_name(stkcd)+": CFLB与税率之间的关系"
885
885
  footnote='注: 这里使用的是实际税率'
886
886
 
887
887
  plot_line2_twinx(df1,ticker1,colname1,label1,df2,ticker2,colname2,label2, \
@@ -994,7 +994,7 @@ def compare_mhamada(tickers,market_index="000001.SS"):
994
994
  continue
995
995
  else:
996
996
  dft=df_tmp[['CFLB%']]
997
- dft.rename(columns={'CFLB%':codetranslate(t)},inplace=True)
997
+ dft.rename(columns={'CFLB%':ticker_name(t)},inplace=True)
998
998
 
999
999
  if len(df)==0:
1000
1000
  #第一个
@@ -308,8 +308,8 @@ def get_beta_hamada_china_v0(stkcd,mktidx,start,end,printout=True,graph=True):
308
308
  cflb_mean=betas['CFLB%'].mean()
309
309
  plt.axhline(y=cflb_mean,color='b',linestyle=':',label='均值线')
310
310
 
311
- title1=codetranslate(stkcd)+": 财务杠杆对贝塔系数的贡献度(CFLB)"+ \
312
- "\n(基于"+codetranslate(mktidx)+")"
311
+ title1=ticker_name(stkcd)+": 财务杠杆对贝塔系数的贡献度(CFLB)"+ \
312
+ "\n(基于"+ticker_name(mktidx)+")"
313
313
  plt.title(title1,fontsize=12,fontweight='bold')
314
314
  plt.ylabel("CFLB%",fontsize=12,fontweight='bold')
315
315
 
@@ -359,8 +359,8 @@ def draw_hamada_factors_china(stkcd,mktidx,betas):
359
359
  ax2.legend(loc='lower right')
360
360
  ax2.set_xticklabels(betas.index,rotation=45)
361
361
 
362
- title1=codetranslate(stkcd)+": 滨田因子对贝塔系数的影响"+ \
363
- "\n(基于"+codetranslate(mktidx)+")"
362
+ title1=ticker_name(stkcd)+": 滨田因子对贝塔系数的影响"+ \
363
+ "\n(基于"+ticker_name(mktidx)+")"
364
364
  plt.title(title1,fontsize=12,fontweight='bold')
365
365
  plt.style.use('ggplot')
366
366
  plt.show()
@@ -461,9 +461,9 @@ def get_beta_hamada_china(stkcd,mktidx,start,end,period_type='all', \
461
461
  return betas
462
462
 
463
463
  #图1:绘制Hamada对比图
464
- titletxt=codetranslate(stkcd)+":CAPM/无杠杆贝塔系数对比"
464
+ titletxt=ticker_name(stkcd)+":CAPM/无杠杆贝塔系数对比"
465
465
  import datetime; today = datetime.date.today()
466
- footnote="注: 基于"+codetranslate(mktidx)
466
+ footnote="注: 基于"+ticker_name(mktidx)
467
467
  footnote2="\n数据来源: 新浪,"+str(today)
468
468
  #draw2_betas(model,mktidx,stkcd,betas)
469
469
  plot_2lines(betas,'Beta(CAPM)','CAPM贝塔系数', \
@@ -494,7 +494,7 @@ def get_beta_hamada_china(stkcd,mktidx,start,end,period_type='all', \
494
494
  plt.legend(loc='best')
495
495
  plt.show(); plt.close()
496
496
  """
497
- titletxt=codetranslate(stkcd)+": 财务杠杆对于贝塔系数的贡献度(CFLB)"
497
+ titletxt=ticker_name(stkcd)+": 财务杠杆对于贝塔系数的贡献度(CFLB)"
498
498
  plot_line(betas,'CFLB%','CFLB%','财务杠杆对于贝塔系数的贡献度%',titletxt, \
499
499
  footnote+cflb_avg_txt+footnote2,power=6)
500
500
 
@@ -503,7 +503,7 @@ def get_beta_hamada_china(stkcd,mktidx,start,end,period_type='all', \
503
503
  ticker1=ticker2=stkcd
504
504
  colname1='CFLB%'; colname2='lev ratio'
505
505
  label1='CFLB%'; label2='财务杠杆'
506
- titletxt=codetranslate(stkcd)+": CFLB与财务杠杆之间的关系"
506
+ titletxt=ticker_name(stkcd)+": CFLB与财务杠杆之间的关系"
507
507
  footnote='注: 这里的财务杠杆使用的是负债/所有者权益'
508
508
 
509
509
  plot_line2_twinx(df1,ticker1,colname1,label1,df2,ticker2,colname2,label2, \
@@ -514,7 +514,7 @@ def get_beta_hamada_china(stkcd,mktidx,start,end,period_type='all', \
514
514
  #ticker1=ticker2=stkcd
515
515
  colname1='CFLB%'; colname2='tax rate'
516
516
  label1='CFLB%'; label2='实际税率'
517
- titletxt=codetranslate(stkcd)+": CFLB与税率之间的关系"
517
+ titletxt=ticker_name(stkcd)+": CFLB与税率之间的关系"
518
518
  footnote='注: 这里使用的是实际税率'
519
519
 
520
520
  plot_line2_twinx(df1,ticker1,colname1,label1,df2,ticker2,colname2,label2, \
siat/bond.py CHANGED
@@ -703,87 +703,73 @@ if __name__=='__main__':
703
703
  symbol='sh019521'
704
704
  symbol='019521.SS'
705
705
  symbol='sz102229'
706
-
707
706
  symbol='149124.SZ'
708
- fromdate='2023-1-1'
709
- todate='2023-5-30'
707
+ symbol='sh019319' #国债
708
+
709
+ fromdate='2024-1-1'
710
+ todate='2024-3-30'
710
711
  power=4
712
+ graph=True
711
713
 
712
714
  prices=exchange_bond_price(symbol,fromdate,todate,power=power)
713
715
 
714
- def exchange_bond_price(symbol,fromdate,todate,power=0):
716
+ def exchange_bond_price(symbol,fromdate,todate,power=0,graph=True,data_crop=True):
715
717
  """
716
718
  功能:获得沪深债券市场历史成交行情
717
719
  输入:沪深债券代码symbol,起始日期fromdate,截止日期todate。
718
720
  返回:历史价格df
719
721
  输出:折线图
720
722
  """
721
- print(" Searching for pricing info of bond",symbol,"\b, it may take great time ...")
723
+ import pandas as pd
724
+ import akshare as ak
725
+ import datetime
726
+
727
+ print(" Searching for bond",symbol,"\b, it may take great time, please wait ... ...")
722
728
 
723
729
  #检查日期期间的合理性
724
730
  result,start,end=check_period(fromdate, todate)
725
731
  if result is None: return None
726
732
 
727
733
  #变换代码格式
728
- symbol1=symbol.lower()
729
- symbol2=symbol1
730
- if '.ss' in symbol1:
731
- symbol2='sh'+symbol1[:6]
732
- if '.sz' in symbol1:
733
- symbol2='sz'+symbol1[:6]
734
+ symbol2=tickers_cvt2ak(symbol)
734
735
 
735
736
  #抓取历史行情
736
- import akshare as ak
737
737
  try:
738
738
  df=ak.bond_zh_hs_daily(symbol=symbol2)
739
739
  trddate1=str(df.head(1)['date'].values[0])
740
740
  trddate2=str(df.tail(1)['date'].values[0])
741
741
  except:
742
742
  print(" #Error(exchange_bond_price), failed to get exchange bond prices of",symbol)
743
- print(" Currently support bonds traded in Shanghai/Shenzhen exchanges only")
743
+ print(" Currently support bonds traded in exchanges only")
744
744
  return None
745
745
 
746
- #过滤日期期间
747
- """
748
- #解决日期比较时类型不一致问题datetime64[ns, UTC] and Timestamp
749
- import datetime as dt
750
- import pandas as pd
751
- df['sdate']=pd.to_datetime(df.index)
752
- df['s2date']=df['sdate'].dt.date
753
- df1=df.drop(df[df.s2date < start].index)
754
- df2=df1.drop(df1[df1.s2date > end].index)
755
- df2.drop(['sdate','s2date'],axis=1,inplace=True)
756
- """
757
- df.set_index('date',inplace=True)
758
- df['sdate']=pd.to_datetime(df.index)
759
- df['s2date']=df['sdate'].dt.date
760
- df1=df.drop(df[df.s2date < start].index)
761
- df2=df1.drop(df1[df1.s2date > end].index)
762
- df2.drop(['sdate','s2date'],axis=1,inplace=True)
763
-
764
- if len(df2) == 0:
765
- print(" #Warning(exchange_bond_price): no price info of",symbol,"between",fromdate,"and",todate)
766
- print(" Price info of",symbol,"are only available between",trddate1,"and",trddate2)
767
- return None
746
+ #是否过滤日期期间:债券有效时段较短,强制过滤时段可能形成空记录,影响其他函数判断
747
+ if data_crop:
748
+ df['datepd']=df['date'].apply(lambda x: pd.to_datetime(x))
749
+ df.set_index('datepd',inplace=True)
750
+ df2=df[(df.index >= start) & (df.index <= end)]
751
+ df2.rename(columns={'open':'Open','high':'High','low':'Low','close':'Close'},inplace=True)
752
+
753
+ if len(df2) == 0:
754
+ print(" #Warning(exchange_bond_price): no prices of",symbol,"between",fromdate,"and",todate)
755
+ print(" Prices of",symbol,"exist between",trddate1,"and",trddate2)
756
+ return df2
757
+ else:
758
+ df2=df
768
759
 
769
760
  #绘图
770
- import datetime
771
- today = datetime.date.today().strftime("%Y-%m-%d")
772
- lang=check_language()
773
- if lang=='Chinese':
774
- titletxt=texttranslate('沪深债券收盘价历史行情:')+get_exchange_bond_name_china2(symbol)
775
- footnote="\n"+texttranslate("数据来源:新浪财经,")+today
776
- close_txt='收盘价'
777
- ylabel_txt='价格'
778
- else:
779
- titletxt='Exchange Bond Price Trend: '+get_exchange_bond_name_china2(symbol)
780
- footnote="Source: Sina Finance, "+today
781
- close_txt='Close'
782
- ylabel_txt='Price'
783
-
784
- plot_line(df2,'close',texttranslate(close_txt),texttranslate(ylabel_txt),titletxt,footnote,power=power)
761
+ if graph:
762
+ todaydt = datetime.date.today().strftime("%Y-%m-%d")
763
+ titletxt1=text_lang('沪深债券行情:','Exchange Bond Price Trend: ')
764
+ titletxt=titletxt1+ticker_name(symbol,'bond')
765
+ close_txt=text_lang('收盘价','Close')
766
+ ylabel_txt=text_lang('价格','Price')
767
+ footnote0=text_lang('数据来源:新浪,','Data source: sina, ')
768
+ footnote=footnote0+todaydt
769
+
770
+ plot_line(df2,'Close',close_txt,ylabel_txt,titletxt,footnote,power=power)
785
771
 
786
- return df
772
+ return df2
787
773
 
788
774
  if __name__=='__main__':
789
775
  symbol='sh143595'
@@ -893,41 +879,59 @@ if __name__=='__main__':
893
879
 
894
880
  #==============================================================================
895
881
  if __name__=='__main__':
896
- symbol='sz128086'
897
- fromdate='2021-1-1'
898
- todate='2021-9-16'
882
+ symbol='sh019521'
883
+ symbol='sh113565'
884
+ symbol='sh019319'
885
+
886
+ fromdate='2024-1-1'
887
+ todate='2024-3-31'
888
+
889
+ cov=exchange_covbond_price(symbol,fromdate,todate)
899
890
 
900
- def exchange_covbond_price(symbol,fromdate,todate):
891
+ def exchange_covbond_price(symbol,fromdate,todate,power=0,graph=True):
901
892
  """
902
893
  功能:获得沪深市场可转债历史成交行情
903
894
  输入:沪深债券代码symbol,起始日期fromdate,截止日期todate。
904
895
  返回:历史价格df
905
896
  输出:折线图
906
897
  """
898
+ print(" Searching for bond",symbol,"\b, it takes great time, please wait ... ...")
899
+
900
+ import pandas as pd
901
+ import akshare as ak
902
+ import datetime
903
+
907
904
  #检查日期期间的合理性
908
905
  result,start,end=check_period(fromdate, todate)
909
906
  if result is None: return None
910
907
 
908
+ #变换代码格式
909
+ symbol2=tickers_cvt2ak(symbol)
910
+
911
911
  #抓取历史行情
912
- import akshare as ak
913
912
  try:
914
- df=ak.bond_zh_hs_cov_daily(symbol=symbol)
913
+ df=ak.bond_zh_hs_cov_daily(symbol=symbol2)
915
914
  except:
916
915
  print(" #Error(exchange_covbond_price), failed to get info of",symbol)
917
916
  return None
918
917
 
919
- #过滤日期期间:比较时需要注意时区
920
- starttz=start.tz_localize('UTC')
921
- endtz=end.tz_localize('UTC')
922
- df1=df.drop(df[df.index < starttz].index)
923
- df2=df1.drop(df1[df1.index > endtz].index)
918
+ #过滤日期期间
919
+ df['datepd']=df['date'].apply(lambda x: pd.to_datetime(x))
920
+ df.set_index('datepd',inplace=True)
921
+ df2=df[(df.index >= start) & (df.index <= end)]
922
+ df2.rename(columns={'open':'Open','high':'High','low':'Low','close':'Close'},inplace=True)
924
923
 
925
924
  #绘图
926
- titletxt=texttranslate('沪深市场可转债收盘价历史行情:')+codetranslate(symbol)
927
- import datetime
928
- today = datetime.date.today().strftime("%Y-%m-%d")
929
- footnote="\n"+texttranslate("数据来源:新浪财经,")+today
930
- plot_line(df2,'close',texttranslate('收盘价'),texttranslate('价格'),titletxt,footnote,power=4)
925
+ if graph:
926
+ todaydt = datetime.date.today().strftime("%Y-%m-%d")
927
+ titletxt1=text_lang('沪深债券行情:','Exchange Bond Price Trend: ')
928
+ titletxt=titletxt1+get_exchange_bond_name_china2(symbol)
929
+ close_txt=text_lang('收盘价','Close')
930
+ ylabel_txt=text_lang('价格','Price')
931
+ footnote0=text_lang('数据来源:新浪,','Data source: sina, ')
932
+ footnote=footnote0+todaydt
933
+
934
+ plot_line(df2,'Close',close_txt,ylabel_txt,titletxt,footnote,power=power)
931
935
 
932
936
  return df
933
937
 
siat/capm_beta.py CHANGED
@@ -155,8 +155,8 @@ def capm_beta(ticker,mktidx,start,end):
155
155
  #显示回归结果
156
156
  print(" \n===== 计算CAPM贝塔系数 =====")
157
157
  print("回归模型:市场模型")
158
- print(equalwidth("股票",16), codetranslate(ticker))
159
- print(equalwidth("市场指数",16), codetranslate(mktidx))
158
+ print(equalwidth("股票",16), ticker_name(ticker))
159
+ print(equalwidth("市场指数",16), ticker_name(mktidx))
160
160
  print(equalwidth("样本期间开始于",16), start)
161
161
  print(equalwidth("样本期间结束于",16), end)
162
162
  print(equalwidth("截距项",16), round(alpha,4))
@@ -317,17 +317,17 @@ def capm_beta_yearly(ticker,mktidx,yearlist):
317
317
  pd.set_option('display.unicode.east_asian_width', True)
318
318
  pd.set_option('display.width', 180) # 设置打印宽度(**重要**)
319
319
 
320
- print("\n ===== 股票的年度贝塔系数:",codetranslate(ticker),"=====")
320
+ print("\n ===== 股票的年度贝塔系数:",ticker_name(ticker),"=====")
321
321
  print(betas.to_string(index=False))
322
322
  import datetime as dt; today=dt.date.today()
323
- print(" 数据来源:新浪/stooq/fred,基于"+codetranslate(mktidx)+','+str(today))
323
+ print(" 数据来源:新浪/stooq/fred,基于"+ticker_name(mktidx)+','+str(today))
324
324
 
325
325
  betas.set_index('Year',inplace=True)
326
326
 
327
327
  #绘图:年度贝塔系数趋势
328
328
  df=pd.DataFrame(betas['Beta'])
329
- title="股票的年度贝塔系数趋势: "+codetranslate(ticker)
330
- foot="\n数据来源:新浪/stooq/fred,基于"+codetranslate(mktidx)+','+str(today)
329
+ title="股票的年度贝塔系数趋势: "+ticker_name(ticker)
330
+ foot="\n数据来源:新浪/stooq/fred,基于"+ticker_name(mktidx)+','+str(today)
331
331
  plot_trend(title,foot,df,power=3,axhline_value=1,axhline_label='市场风险线')
332
332
 
333
333
  return betas
@@ -488,7 +488,7 @@ def capm_beta_portfolio_yearly(tickerlist,sharelist,mktidx,yearlist):
488
488
  #绘图:年度贝塔系数变化
489
489
  df=pd.DataFrame(betas['Beta'])
490
490
  title="投资组合的年度贝塔系数"+ \
491
- "\n成分股: "+str(codetranslate(tickerlist))+"\n持仓权重: "+str(sharelist)
491
+ "\n成分股: "+str(ticker_name(tickerlist,'bond'))+"\n持仓权重: "+str(sharelist)
492
492
  import datetime; today = datetime.date.today()
493
493
  foot="数据来源: 新浪/stooq/fred,"+str(today)
494
494
  plot_trend(title,foot,df,power=2,axhline_value=1,axhline_label='市场风险线')
@@ -724,20 +724,20 @@ def compare2_betas_yearly(ticker1,ticker2,mktidx,yearlist):
724
724
  betas2.set_index('Year',inplace=True)
725
725
 
726
726
  #绘图:年度贝塔系数变化
727
- plt.plot(betas1['Beta'],label=codetranslate(ticker1),c='red',marker='o',lw=1)
728
- plt.plot(betas2['Beta'],label=codetranslate(ticker2),c='blue',marker='D',lw=2,linestyle='--')
727
+ plt.plot(betas1['Beta'],label=ticker_name(ticker1),c='red',marker='o',lw=1)
728
+ plt.plot(betas2['Beta'],label=ticker_name(ticker2),c='blue',marker='D',lw=2,linestyle='--')
729
729
 
730
730
  #plt.axhline(y=1.0,color='b',linestyle=':',c='green',label='市场平均风险')
731
731
  plt.axhline(y=1.0,color='b',linestyle=':',c='black')
732
732
 
733
733
  plt.ylabel("贝塔系数",fontweight='bold')
734
734
  plt.xticks(rotation=45,fontweight='bold')
735
- trtitle="比较证券之间的贝塔系数"+"\n"+codetranslate(ticker1)+" vs "+codetranslate(ticker2)
735
+ trtitle="比较证券之间的贝塔系数"+"\n"+ticker_name(ticker1)+" vs "+ticker_name(ticker2)
736
736
  plt.title(trtitle,fontweight='bold')
737
737
  plt.legend(loc='best')
738
738
 
739
739
  import datetime; today = datetime.date.today()
740
- plt.xlabel("数据来源:新浪/stooq/fred,基于"+codetranslate(mktidx)+','+str(today))
740
+ plt.xlabel("数据来源:新浪/stooq/fred,基于"+ticker_name(mktidx)+','+str(today))
741
741
  plt.show()
742
742
 
743
743
  return betas1,betas2