兩年前寫過Tushare的簡單使用:
Python量化交易08——利用Tushare獲取日K數據_skshare-
現在更新一下吧,這兩年用過不少的金融數據庫,akshare,baostock,雅虎的,pd自帶的......發現還是Tushare最穩定最好用,雖然他收費,但是收費的東西質量確實好一點。
可能我以后也會用Tushare偏多了,這里就演示一下怎么用Tushare獲取各種金融或者是宏觀經濟的數據,總比去什么萬德,去什么同花順,去什么統計年鑒一個個復制粘貼好吧.......
本次就獲取K線數據,市盈率,市凈率,換手率,還有宏觀經濟的GDP,LPR,CPI,PPI,PMI,M0,M1,M2,還有財務報表里面的指標,資產負債表,現金流量表,利潤表等進行演示。
代碼實現
先導入包:
import tushare as ts
import numpy as np
import pandas as pd
然后輸入自己的api_token,我這里把我的打碼了。
#獲取api接口
token = '7************************************4b25'
ts.set_token(token)
pro = ts.pro_api()
api_token相當于是自己的賬號標識,tushare用這個表示不同的用戶,以此來看是不是有足夠的積分獲取不同類型的數據。不知道怎么申請的去官網注冊一下,然后看看這里官方文檔就行了:如何獲取token
注意本文可能有的指標需要積分大于2000或者5000才能獲取。
# 初始化一些參數
start_date='20230401' ; end_date='20250431'
index_codes=['000001.SH','399001.SZ','399006.SZ','000300.SH']
stock_codes=['600519.SH','601318.SH','600276.SH']
因為任何經濟數據都有日期范圍的,我們就隨便設一下就好,然后?index_codes是指數代碼,stock_codes是個股代碼,我這里隨便選了幾個,方便演示。例如000001.SH是上證指數,'000300.SH是滬深300指數。399001.SZ是深證成指。
?'600519.SH' 是貴州茅臺,,'601318.SH'是中國平安,'600276.SH是恒瑞醫藥。
下面開始演示怎么用代碼獲取數據。
基礎交易數據
指數交易數據
指數的日K交易數據的接口如下,我們這里面用index_codes[0]第0個,也就是上證指數來作為演示。
trade_data=pro.index_daily(ts_code=index_codes[0], start_date=start_date, end_date=end_date).set_index('trade_date').sort_index()
pe_data=pro.index_dailybasic(ts_code=index_codes[0], start_date=start_date, end_date=end_date).set_index('trade_date').sort_index().drop(columns='ts_code')
trade_data就是K線數據,每日的收盤開盤,成交量,金額什么的,展示前三行看看:
trade_data.head(3)
pe_data里面就是什么市值,市盈率,市凈率,換手率之類的指標,如下:
展示前三行看看:?
pe_data.head(3)
?
個股交易數據
上面是指數數據的,個股的數據是類似的,就是接口有點不一樣。
們這里面用stocks_codes[0]第0個,也就是貴州茅臺來作為演示。
trade_data=pro.daily(ts_code=stock_codes[0], start_date=start_date, end_date=end_date).set_index('trade_date').sort_index()
pe_data=pro.daily_basic(ts_code=stock_codes[0], start_date=start_date, end_date=end_date).set_index('trade_date').sort_index().drop(columns='ts_code')
還是一樣的K線數據和換手率等指標連個表,展示一下前幾行。
trade_data.head(3)
pe_data.head(3)
?
宏觀經濟指標
上面這都是個股的交易K線數據,下面展示一些常見的宏觀經濟指標,論文和研究用的都比較多的:
貸款基礎利率
### 貸款基礎利率
lpr=pro.shibor_lpr(start_date=start_date, end_date=end_date, fields='date,1y').rename(columns={"1y":'LPR'}).set_index('date').sort_index()
lpr.index = pd.to_datetime(lpr.index, format='%Y-%m-%d')
lpr = lpr.resample('D').ffill()
lpr
GDP
### gdp
gdp=pro.cn_gdp(start_q='2023Q2', end_q='2025Q3', fields='quarter,gdp,pi,si,ti')#.set_index('quarter').sort_index()
gdp
需要時間更長的就把start_q='2023Q2', end_q='2025Q3', 里面改成自己需要的時間段就好了。GDP本就是季度數據,每一個季度就只有一個值。
CPI? ?
物價指數
cpi=pro.cn_cpi(start_m='201407', end_m='202407', fields='month,nt_val')
cpi
PPI
ppi=pro.cn_ppi(start_m='201407', end_m='202407', fields='month,ppi_yoy')
ppi
PMI??
PMI=pro.cn_pmi(start_m='201407', end_m='202407', fields='month,pmi010000,pmi030000')
PMI
貨幣供應量
M=pro.cn_m(start_m='201407', end_m='202407', fields='month,m0,m1,m2')
M
社融
## 社會融資
SR=pro.sf_month(start_m='201407', end_m='202407',fields='month,inc_month')
SR
財務報表
財務的同學可能有的需要資產負債表,現金流量表,利潤表里面的東西。
tushare很方便就能獲取一個公式的全部財務數據,數據也是季度的。
利潤表
income_data = pro.income(ts_code=stock_codes[1], start_date=start_date, end_date=end_date)#.drop(columns=columns1)
income_data
?
資產負債表
balance_sheet = pro.balancesheet(ts_code=stock_codes[1], start_date=start_date, end_date=end_date)#.drop_duplicates(['報告期']).drop(columns=columns2)
balance_sheet
現金流量表
cash_flow = pro.cashflow(ts_code=stock_codes[1], start_date=start_date, end_date=end_date)#.drop_duplicates(['報告期'])#.drop(columns=columns3)
cash_flow
有的同學說你這一個表100多個變量,全是英文看不懂怎么辦。
我整理了這些變量的含義在這:
?
# 定義一個空字典來存儲變量名稱和描述
variables_dict = {"ts_code": "TS股票代碼","ann_date": "公告日期","f_ann_date": "實際公告日期","end_date": "報告期","report_type": "報告類型 見底部表","comp_type": "公司類型(1一般工商業2銀行3保險4證券)","end_type": "報告期類型","basic_eps": "基本每股收益","diluted_eps": "稀釋每股收益","total_revenue": "營業總收入","revenue": "營業收入","int_income": "利息收入","prem_earned": "已賺保費","comm_income": "手續費及傭金收入","n_commis_income": "手續費及傭金凈收入","n_oth_income": "其他經營凈收益","n_oth_b_income": "加:其他業務凈收益","prem_income": "保險業務收入","out_prem": "減:分出保費","une_prem_reser": "提取未到期責任準備金","reins_income": "其中:分保費收入","n_sec_tb_income": "代理買賣證券業務凈收入","n_sec_uw_income": "證券承銷業務凈收入","n_asset_mg_income": "受托客戶資產管理業務凈收入","oth_b_income": "其他業務收入","fv_value_chg_gain": "加:公允價值變動凈收益","invest_income": "加:投資凈收益","ass_invest_income": "其中:對聯營企業和合營企業的投資收益","forex_gain": "加:匯兌凈收益","total_cogs": "營業總成本","oper_cost": "減:營業成本","int_exp": "減:利息支出","comm_exp": "減:手續費及傭金支出","biz_tax_surchg": "減:營業稅金及附加","sell_exp": "減:銷售費用","admin_exp": "減:管理費用","fin_exp": "減:財務費用","assets_impair_loss": "減:資產減值損失","prem_refund": "退保金","compens_payout": "賠付總支出","reser_insur_liab": "提取保險責任準備金","div_payt": "保戶紅利支出","reins_exp": "分保費用","oper_exp": "營業支出","compens_payout_refu": "減:攤回賠付支出","insur_reser_refu": "減:攤回保險責任準備金","reins_cost_refund": "減:攤回分保費用","other_bus_cost": "其他業務成本","operate_profit": "營業利潤","non_oper_income": "加:營業外收入","non_oper_exp": "減:營業外支出","nca_disploss": "其中:減:非流動資產處置凈損失","total_profit": "利潤總額","income_tax": "所得稅費用","n_income": "凈利潤(含少數股東損益)","n_income_attr_p": "凈利潤(不含少數股東損益)","minority_gain": "少數股東損益","oth_compr_income": "其他綜合收益","t_compr_income": "綜合收益總額","compr_inc_attr_p": "歸屬于母公司(或股東)的綜合收益總額","compr_inc_attr_m_s": "歸屬于少數股東的綜合收益總額","ebit": "息稅前利潤","ebitda": "息稅折舊攤銷前利潤","insurance_exp": "保險業務支出","undist_profit": "年初未分配利潤","distable_profit": "可分配利潤","rd_exp": "研發費用","fin_exp_int_exp": "財務費用:利息費用","fin_exp_int_inc": "財務費用:利息收入","transfer_surplus_rese": "盈余公積轉入","transfer_housing_imprest": "住房周轉金轉入","transfer_oth": "其他轉入","adj_lossgain": "調整以前年度損益","withdra_legal_surplus": "提取法定盈余公積","withdra_legal_pubfund": "提取法定公益金","withdra_biz_devfund": "提取企業發展基金","withdra_rese_fund": "提取儲備基金","withdra_oth_ersu": "提取任意盈余公積金","workers_welfare": "職工獎金福利","distr_profit_shrhder": "可供股東分配的利潤","prfshare_payable_dvd": "應付優先股股利","comshare_payable_dvd": "應付普通股股利","capit_comstock_div": "轉作股本的普通股股利","net_after_nr_lp_correct": "扣除非經常性損益后的凈利潤(更正前)","credit_impa_loss": "信用減值損失","net_expo_hedging_benefits": "凈敞口套期收益","oth_impair_loss_assets": "其他資產減值損失","total_opcost": "營業總成本(二)","amodcost_fin_assets": "以攤余成本計量的金融資產終止確認收益","oth_income": "其他收益","asset_disp_income": "資產處置收益","continued_net_profit": "持續經營凈利潤","end_net_profit": "終止經營凈利潤","update_flag": "更新標識"
}# 定義一個空字典來存儲變量名稱和描述
variables_dict_2 = {"ts_code": "TS股票代碼","ann_date": "公告日期","f_ann_date": "實際公告日期","end_date": "報告期","report_type": "報表類型","comp_type": "公司類型(1一般工商業2銀行3保險4證券)","end_type": "報告期類型","total_share": "期末總股本","cap_rese": "資本公積金","undistr_porfit": "未分配利潤","surplus_rese": "盈余公積金","special_rese": "專項儲備","money_cap": "貨幣資金","trad_asset": "交易性金融資產","notes_receiv": "應收票據","accounts_receiv": "應收賬款","oth_receiv": "其他應收款","prepayment": "預付款項","div_receiv": "應收股利","int_receiv": "應收利息","inventories": "存貨","amor_exp": "待攤費用","nca_within_1y": "一年內到期的非流動資產","sett_rsrv": "結算備付金","loanto_oth_bank_fi": "拆出資金","premium_receiv": "應收保費","reinsur_receiv": "應收分保賬款","reinsur_res_receiv": "應收分保合同準備金","pur_resale_fa": "買入返售金融資產","oth_cur_assets": "其他流動資產","total_cur_assets": "流動資產合計","fa_avail_for_sale": "可供出售金融資產","htm_invest": "持有至到期投資","lt_eqt_invest": "長期股權投資","invest_real_estate": "投資性房地產","time_deposits": "定期存款","oth_assets": "其他資產","lt_rec": "長期應收款","fix_assets": "固定資產","cip": "在建工程","const_materials": "工程物資","fixed_assets_disp": "固定資產清理","produc_bio_assets": "生產性生物資產","oil_and_gas_assets": "油氣資產","intan_assets": "無形資產","r_and_d": "研發支出","goodwill": "商譽","lt_amor_exp": "長期待攤費用","defer_tax_assets": "遞延所得稅資產","decr_in_disbur": "發放貸款及墊款","oth_nca": "其他非流動資產","total_nca": "非流動資產合計","cash_reser_cb": "現金及存放中央銀行款項","depos_in_oth_bfi": "存放同業和其它金融機構款項","prec_metals": "貴金屬","deriv_assets": "衍生金融資產","rr_reins_une_prem": "應收分保未到期責任準備金","rr_reins_outstd_cla": "應收分保未決賠款準備金","rr_reins_lins_liab": "應收分保壽險責任準備金","rr_reins_lthins_liab": "應收分保長期健康險責任準備金","refund_depos": "存出保證金","ph_pledge_loans": "保戶質押貸款","refund_cap_depos": "存出資本保證金","indep_acct_assets": "獨立賬戶資產","client_depos": "其中:客戶資金存款","client_prov": "其中:客戶備付金","transac_seat_fee": "其中:交易席位費","invest_as_receiv": "應收款項類投資","total_assets": "資產總計","lt_borr": "長期借款","st_borr": "短期借款","cb_borr": "向中央銀行借款","depos_ib_deposits": "吸收存款及同業存放","loan_oth_bank": "拆入資金","trading_fl": "交易性金融負債","notes_payable": "應付票據","acct_payable": "應付賬款","adv_receipts": "預收款項","sold_for_repur_fa": "賣出回購金融資產款","comm_payable": "應付手續費及傭金","payroll_payable": "應付職工薪酬","taxes_payable": "應交稅費","int_payable": "應付利息","div_payable": "應付股利","oth_payable": "其他應付款","acc_exp": "預提費用","deferred_inc": "遞延收益","st_bonds_payable": "應付短期債券","payable_to_reinsurer": "應付分保賬款","rsrv_insur_cont": "保險合同準備金","acting_trading_sec": "代理買賣證券款","acting_uw_sec": "代理承銷證券款","non_cur_liab_due_1y": "一年內到期的非流動負債","oth_cur_liab": "其他流動負債","total_cur_liab": "流動負債合計","bond_payable": "應付債券","lt_payable": "長期應付款","specific_payables": "專項應付款","estimated_liab": "預計負債","defer_tax_liab": "遞延所得稅負債","defer_inc_non_cur_liab": "遞延收益-非流動負債","oth_ncl": "其他非流動負債","total_ncl": "非流動負債合計","depos_oth_bfi": "同業和其它金融機構存放款項","deriv_liab": "衍生金融負債","depos": "吸收存款","agency_bus_liab": "代理業務負債","oth_liab": "其他負債","prem_receiv_adva": "預收保費","depos_received": "存入保證金","ph_invest": "保戶儲金及投資款","reser_une_prem": "未到期責任準備金","reser_outstd_claims": "未決賠款準備金","reser_lins_liab": "壽險責任準備金","reser_lthins_liab": "長期健康險責任準備金","indept_acc_liab": "獨立賬戶負債","pledge_borr": "其中:質押借款","indem_payable": "應付賠付款","policy_div_payable": "應付保單紅利","total_liab": "負債合計","treasury_share": "減:庫存股","ordin_risk_reser": "一般風險準備","forex_differ": "外幣報表折算差額","invest_loss_unconf": "未確認的投資損失","minority_int": "少數股東權益","total_hldr_eqy_exc_min_int": "股東權益合計(不含少數股東權益)","total_hldr_eqy_inc_min_int": "股東權益合計(含少數股東權益)","total_liab_hldr_eqy": "負債及股東權益總計","lt_payroll_payable": "長期應付職工薪酬","oth_comp_income": "其他綜合收益","oth_eqt_tools": "其他權益工具","oth_eqt_tools_p_shr": "其他權益工具(優先股)","lending_funds": "融出資金","acc_receivable": "應收款項","st_fin_payable": "應付短期融資款","payables": "應付款項","hfs_assets": "持有待售的資產","hfs_sales": "持有待售的負債","cost_fin_assets": "以攤余成本計量的金融資產","fair_value_fin_assets": "以公允價值計量且其變動計入其他綜合收益的金融資產","cip_total": "在建工程(合計)(元)","oth_pay_total": "其他應付款(合計)(元)","long_pay_total": "長期應付款(合計)(元)","debt_invest": "債權投資(元)","oth_debt_invest": "其他債權投資(元)","oth_eq_invest": "其他權益工具投資(元)","oth_illiq_fin_assets": "其他非流動金融資產(元)","oth_eq_ppbond": "其他權益工具:永續債(元)","receiv_financing": "應收款項融資","use_right_assets": "使用權資產","lease_liab": "租賃負債","contract_assets": "合同資產","contract_liab": "合同負債","accounts_receiv_bill": "應收票據及應收賬款","accounts_pay": "應付票據及應付賬款","oth_rcv_total": "其他應收款(合計)(元)","fix_assets_total": "固定資產(合計)(元)","update_flag": "更新標識"
}# 定義一個空字典來存儲變量名稱和描述
variables_dict_3 = {"ts_code": "TS股票代碼","ann_date": "公告日期","f_ann_date": "實際公告日期","end_date": "報告期","comp_type": "公司類型(1一般工商業2銀行3保險4證券)","report_type": "報表類型","end_type": "報告期類型","net_profit": "凈利潤","finan_exp": "財務費用","c_fr_sale_sg": "銷售商品、提供勞務收到的現金","recp_tax_rends": "收到的稅費返還","n_depos_incr_fi": "客戶存款和同業存放款項凈增加額","n_incr_loans_cb": "向中央銀行借款凈增加額","n_inc_borr_oth_fi": "向其他金融機構拆入資金凈增加額","prem_fr_orig_contr": "收到原保險合同保費取得的現金","n_incr_insured_dep": "保戶儲金凈增加額","n_reinsur_prem": "收到再保業務現金凈額","n_incr_disp_tfa": "處置交易性金融資產凈增加額","ifc_cash_incr": "收取利息和手續費凈增加額","n_incr_disp_faas": "處置可供出售金融資產凈增加額","n_incr_loans_oth_bank": "拆入資金凈增加額","n_cap_incr_repur": "回購業務資金凈增加額","c_fr_oth_operate_a": "收到其他與經營活動有關的現金","c_inf_fr_operate_a": "經營活動現金流入小計","c_paid_goods_s": "購買商品、接受勞務支付的現金","c_paid_to_for_empl": "支付給職工以及為職工支付的現金","c_paid_for_taxes": "支付的各項稅費","n_incr_clt_loan_adv": "客戶貸款及墊款凈增加額","n_incr_dep_cbob": "存放央行和同業款項凈增加額","c_pay_claims_orig_inco": "支付原保險合同賠付款項的現金","pay_handling_chrg": "支付手續費的現金","pay_comm_insur_plcy": "支付保單紅利的現金","oth_cash_pay_oper_act": "支付其他與經營活動有關的現金","st_cash_out_act": "經營活動現金流出小計","n_cashflow_act": "經營活動產生的現金流量凈額","oth_recp_ral_inv_act": "收到其他與投資活動有關的現金","c_disp_withdrwl_invest": "收回投資收到的現金","c_recp_return_invest": "取得投資收益收到的現金","n_recp_disp_fiolta": "處置固定資產、無形資產和其他長期資產收回的現金凈額","n_recp_disp_sobu": "處置子公司及其他營業單位收到的現金凈額","stot_inflows_inv_act": "投資活動現金流入小計","c_pay_acq_const_fiolta": "購建固定資產、無形資產和其他長期資產支付的現金","c_paid_invest": "投資支付的現金","n_disp_subs_oth_biz": "取得子公司及其他營業單位支付的現金凈額","oth_pay_ral_inv_act": "支付其他與投資活動有關的現金","n_incr_pledge_loan": "質押貸款凈增加額","stot_out_inv_act": "投資活動現金流出小計","n_cashflow_inv_act": "投資活動產生的現金流量凈額","c_recp_borrow": "取得借款收到的現金","proc_issue_bonds": "發行債券收到的現金","oth_cash_recp_ral_fnc_act": "收到其他與籌資活動有關的現金","stot_cash_in_fnc_act": "籌資活動現金流入小計","free_cashflow": "企業自由現金流量","c_prepay_amt_borr": "償還債務支付的現金","c_pay_dist_dpcp_int_exp": "分配股利、利潤或償付利息支付的現金","incl_dvd_profit_paid_sc_ms": "其中:子公司支付給少數股東的股利、利潤","oth_cashpay_ral_fnc_act": "支付其他與籌資活動有關的現金","stot_cashout_fnc_act": "籌資活動現金流出小計","n_cash_flows_fnc_act": "籌資活動產生的現金流量凈額","eff_fx_flu_cash": "匯率變動對現金的影響","n_incr_cash_cash_equ": "現金及現金等價物凈增加額","c_cash_equ_beg_period": "期初現金及現金等價物余額","c_cash_equ_end_period": "期末現金及現金等價物余額","c_recp_cap_contrib": "吸收投資收到的現金","incl_cash_rec_saims": "其中:子公司吸收少數股東投資收到的現金","uncon_invest_loss": "未確認投資損失","prov_depr_assets": "加:資產減值準備","depr_fa_coga_dpba": "固定資產折舊、油氣資產折耗、生產性生物資產折舊","amort_intang_assets": "無形資產攤銷","lt_amort_deferred_exp": "長期待攤費用攤銷","decr_deferred_exp": "待攤費用減少","incr_acc_exp": "預提費用增加","loss_disp_fiolta": "處置固定、無形資產和其他長期資產的損失","loss_scr_fa": "固定資產報廢損失","loss_fv_chg": "公允價值變動損失","invest_loss": "投資損失","decr_def_inc_tax_assets": "遞延所得稅資產減少","incr_def_inc_tax_liab": "遞延所得稅負債增加","decr_inventories": "存貨的減少","decr_oper_payable": "經營性應收項目的減少","incr_oper_payable": "經營性應付項目的增加","others": "其他","im_net_cashflow_oper_act": "經營活動產生的現金流量凈額(間接法)","conv_debt_into_cap": "債務轉為資本","conv_copbonds_due_within_1y": "一年內到期的可轉換公司債券","fa_fnc_leases": "融資租入固定資產","im_n_incr_cash_equ": "現金及現金等價物凈增加額(間接法)","net_dism_capital_add": "拆出資金凈增加額","net_cash_rece_sec": "代理買賣證券收到的現金凈額(元)","credit_impa_loss": "信用減值損失","use_right_asset_dep": "使用權資產折舊","oth_loss_asset": "其他資產減值損失","end_bal_cash": "現金的期末余額","beg_bal_cash": "減:現金的期初余額","end_bal_cash_equ": "加:現金等價物的期末余額","beg_bal_cash_equ": "減:現金等價物的期初余額","update_flag": "更新標志(1最新)"
}
還看不懂就去官網找吧,地址:
全部數據接口
官網上面還有很多數據接口,比如什么黃金,外匯,基金,債券,期貨........時間原因就不演示那么多了。自己去看官網上怎么用的,都很簡單。
注意有的指標可能有的指標需要積分大于2000或者5000才能獲取。像美股這種話需要單獨充錢。