Python量化:ETF资金净流入追踪ETF投资

今天YU股思基给大家介绍一个ETF跟踪因子:ETF资金净流入,通过ETF资金净流入可以随时跟踪各类ETF获资金青睐的情况,然后选择对应ETF进行投资获取目标收益。下面就给大家介绍一下怎么通过量化手段实时跟踪ETF资金净流入的情况。(5)对E

投资无外乎选品、择时、制定交易计划、退出,今天和大家说一说选品环节的一个重要的投资新宠,近几年特别流行的ETF基金

说到ETF,YU股思基就先简单说一说ETF基金是什么,为什么受众多投资者喜爱?

ETF是什么?

ETF是一种指数基金,是一种交易型开放式指数基金,也称为交易所交易基金( Fund,简称ETF),是一种在交易所上市交易(像股票一样买卖)的、基金份额可变的开放式基金。

ETF指数基金的实质,是一篮子股票的所有权,所以,投资者买卖一只ETF,就等同于买卖了它所跟踪的指数,可取得与该指数基本一致的收益。

ETF( Funds)听起来陌生又高大上,但其实就是可以直接在二级市场交易的指数基金,是一种门槛低、简单又高效的投资工具。它诞生于 20 世纪 90 年代的美国,因其基于新型投资组合管理方式以及产品的不断创新,迅速给全球基金行业带来了一场重大革命。

ETF 具有费用低廉、交易效率高等众多优点,作为投资界的明日之星,被大量普通投资者一路看好。

ETF能做什么?

ETF能做什么,我们先看看投资大佬们都怎么说?

巴菲特说:「通过定期投资指数基金,一个什么都不懂的业余投资者往往能够战胜大部分专业投资者」

彼得林奇:「只有少数基金经理能够长期持续战胜市场指数」

罗杰斯:「我非常看好被动投资。ETF 提供了更加便宜、更加方便的交易方式。关键一点是早一点找到好的投资人。」

大佬们力推的指数基金,我们是不是就更应该搞清楚他的奥秘呢,为自己的投资库里增加一个自己看的投资品种。

通过ETF基金我们可以做到以下:

1.指数长期趋势向上:ETF 基金盈利确定性大

ETF 基金所跟踪的市场指数具有内生增长动能,国内主要股指增长保持在 10-20%/年,这可以为 ETF 投资者提供丰厚的收益保障。

2.收益总伴随着风险:ETF 基金可规避诸多市场风险

投资者在热切地期盼高额回报时,却往往面临一个又一个的投资陷阱,ETF 基金用最简单的投资哲学,最透明的投资思路,却能规避投资者所面对的诸多风险。

3.资本永不眠:你可把握多种投资标的投资机会

基于不同市场板块、风格、行业、主题、市场类型或投资地域的差异性判断,市场资金会在各类投资标的间流转,促使各类投资标的呈现结构性的轮动行情,这提供给我们更丰富的投资获利机会。

ETF 能为投资者提供便捷、低成本的工具,提供投资于某个特定市场、行业的关键指数。

全方位认识 ETF,能帮你实现高效资产配置。无论你是理财新手还是投资大亨,无论你了解或者看好哪类行业、国家甚至商品,都可以利用它来进行投资。

ETF作为当今全世界最火爆的投资工具之一,对于ETF有一个360度全方位更深入的认识,才能更好的把握ETF投资的方法。

ETF有什么?

ETF有什么,就是现在ETF的分类有哪些呢?

ETF最常见的分类是按资产标的分类,可以大致分为六大类:股票大盘指数类ETF、行业股票指数类ETF、全球ETF、债券ETF、商品ETF、外汇ETF等。

1、追踪股票大盘指数类,大盘指数也有不同的风格;按指数成分股的风格,有价值型、成长型、混合型;按指数成分股的规模,有大市值型、中市值型、小市值型。有的市况下,价值型ETF的走势会比较好;在有的市况下,小市值型ETF的ETF的走势比较好。因此,即使是选择大盘指数型ETF,也可以根据自己的判断进行选择。

2、追踪某些热门行业指数的ETF。例如半导体、生物科技等,选择此类要对行业走势做出判断再行抉择。

3、全球ETF。美股ETF中,追踪非美国的股票指数的ETF,一般统称为全球ETF。

Python量化:ETF资金净流入追踪ETF投资

4、追踪某一类商品、债券、外汇走势的ETF。例如黄金ETF、追踪原油指数的ETF等,因为金价、油价走势都是非常重要的经济信号,大家可以根据自己的判断来选择相应标的相关的ETF。

ETF不断按照以上分类,还有一个优秀的特质是,ETF基金不但有场内,可以实时买入卖出,还有对应的场外ETF基金黄金交易代码是什么,就是常说的ETF联结基金。

ETF基金的优势也在于此,交易方式较多,更方便更多的投资者进行投资。

介绍完ETF的大致情况后,就要进入我们的主题了:怎么选择ETF呢?选择任何标的我们都是要有理由的,选择ETF的因子是什么。今天YU股思基给大家介绍一个ETF跟踪因子:ETF资金净流入,通过ETF资金净流入可以随时跟踪各类ETF获资金青睐的情况,然后选择对应ETF进行投资获取目标收益。

下面就给大家介绍一下怎么通过量化手段实时跟踪ETF资金净流入的情况。

PART.01 量化:ETF资金追踪解密ETF投资秘决

ETF资金追踪逻辑:

(1)设定需要追踪ETF资金的代码;(宽基ETF、行业主题ETF等)

(2)获取ETF历史行情信息:复权单位净值、基金份额

(3)计算ETF基金规模

(4)计算每日ETF资金净流入

(5)对ETF行情走势和每日资金净流入进行可视化,观察ETF资金净流入因子和净值之间的关系

研究工具:++

#导入相关的工具库import pandas as pdimport tushare as tsfrom dateutil.relativedelta import relativedeltaimport warningsfrom pyecharts import options as optsfrom pyecharts.charts import Line,Bar,Pagefrom pyecharts.commons.utils import JsCode #使用Js代码控制可视化柱子颜色from pyecharts.components import Tablefrom pyecharts.globals import ThemeType

主要函数:ETF规模变化函数

'''定义一个计算ETF规模变化的方法输入:ETF基金代码输出:df 包含:交易日期、单位净值、基金份额、基金规模、规模变化值'''def get_ETF_Capital_Change(code):    #基金净值    df_Nav = pro.fund_nav(ts_code=code)    df_Nav = df_Nav[['nav_date','adj_nav']]    df_Nav.columns = ['trade_date','adj_nav']    # print(df_Nav)    #基金份额    df_Scale = pro.fund_share(ts_code=code)    df_Scale = df_Scale[['trade_date','fd_share']]    # print(df_Scale)    df_net_inflow = df_Nav.merge(df_Scale,on='trade_date',how='left')    df_net_inflow.fillna(method='ffill',inplace=True)    df_net_inflow['Capital'] = round((df_net_inflow['adj_nav'] * df_net_inflow['fd_share'])/10000,2) #亿元    df_net_inflow = df_net_inflow.iloc[::-1,:]    df_net_inflow.reset_index(inplace=True,drop=True)    df_net_inflow['capital_chg'] = round(df_net_inflow['Capital'].diff(),2) #每日ETF资金规模变化值    df_net_inflow.fillna(0,inplace=True)    # print(df_net_inflow)    return df_net_inflow

因子可视化:净值走势和ETF资金净流入

'''ETF资金变化可视化类建立折线图、柱状图'''class Data_Visualization():    #类的初始化    def __init__(self,df,ETF_name):        self.df = df        self.chart_title = ETF_name        # 指定柱子颜色的js代码        self.color_function = """                    function (params) {                        if (params.value  0)                             return 'blue';                    }                    """    #折线图    def plot_line(self):        Line_Close = (            Line(init_opts=opts.InitOpts(theme=ThemeType.ESSOS, width='1920px', height='750px'))                .add_xaxis(self.df['trade_date'].tolist())                .add_yaxis('收盘价',self.df['adj_nav'].tolist(),                            color='red',                           yaxis_index=0, linestyle_opts=opts.LineStyleOpts(width=4))                .extend_axis(yaxis=opts.AxisOpts(type_="value",                                                 axistick_opts=opts.AxisTickOpts(is_show=True),                                                 splitline_opts=opts.SplitLineOpts(is_show=True), ))  # 双坐标轴 这个必须添加,添加虚线                .set_global_opts(title_opts=opts.TitleOpts(title=self.chart_title),                                 toolbox_opts=opts.ToolboxOpts(is_show=True))                .set_series_opts(label_opts=opts.LabelOpts(is_show=False),                                 markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_='max', name='最大值'),                                                                         opts.MarkPointItem(type_='min', name='最小值')]                                                                   )        ))        return Line_Close    #柱状图    def plot_bar(self):        Bar_ETF_capital = (            Bar(init_opts=opts.InitOpts(bg_color='white', width='1920px', height='750px'))                .add_xaxis(self.df['trade_date'].tolist())                .add_yaxis('ETF资金变化', self.df['capital_chg'].tolist(),                           color='blue',                           itemstyle_opts=opts.ItemStyleOpts(color=JsCode(self.color_function)),                           yaxis_index=1) #坐标轴                .set_series_opts(label_opts=opts.LabelOpts(is_show=False),                                 markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_='max', name='最大值'),                                                                         opts.MarkPointItem(type_='min', name='最小值')]                                                                   )        )        )        return Bar_ETF_capital#表格图def plot_table(rows_data):    Table_ETF_captital = (        Table()            .add(headers = ['交易日期','ETF代码','ETF简称', '复权单位净值', '基金份额(万份)', '基金规模(亿元)',                            '当日ETF资金净流入(亿元)','近一周ETF资金净流入(亿元)','近一月ETF资金净流入(亿元)'],                 rows = rows_data,                 attributes={                     "align": "center",                     "border":False,                     "class":"fl-table"                 }        )            .set_global_opts(title_opts=opts.ComponentTitleOpts(title='ETF资金当日净流入明细'))    )    return Table_ETF_captital

量化主函数入口:ETF设定

if __name__ == '__main__':    #资金趋势可视化    '''    1.宽基ETF跟踪    '''    wide_fund_ETF = ['510050.SH','510300.SH','510500.SH','512100.SH']    wide_fund_ETF_name = ['上证50ETF','沪深300ETF','中证500ETF','中证1000ETF']    page_wide_fund = Page(page_title='宽基ETF资金净流入趋势')    #先绘制表格    wide_fund_ETF_capital_Last_Trade_Date_List = []    for i in range(0,len(wide_fund_ETF)):        df_ETF = get_ETF_Capital_Change(code=wide_fund_ETF[i])        #当日资金变化明细        data_row_list = df_ETF.loc[len(df_ETF)-1].tolist()        data_row_list.insert(1,wide_fund_ETF[i])        data_row_list.insert(2,wide_fund_ETF_name[i])        data_row_list[3] = round(data_row_list[3],2) #净值数据保留2位有效小数        #统计近一周和近一月        df_ETF_last_week = df_ETF.loc[(len(df_ETF)-5):(len(df_ETF)-1)]        # print(df_ETF_last_week)        data_row_list.insert(7,round(df_ETF_last_week['capital_chg'].sum(),2))        df_ETF_last_month = df_ETF.loc[(len(df_ETF) - 21):(len(df_ETF) - 1)]        data_row_list.insert(8, round(df_ETF_last_month['capital_chg'].sum(),2))            wide_fund_ETF_capital_Last_Trade_Date_List.append(data_row_list)    page_wide_fund.add(plot_table(rows_data=wide_fund_ETF_capital_Last_Trade_Date_List))        #在绘制走势图    for i in range(0,len(wide_fund_ETF)):        df_ETF = get_ETF_Capital_Change(code=wide_fund_ETF[i])        plot = Data_Visualization(df=df_ETF,ETF_name=wide_fund_ETF_name[i])        Line_nav = plot.plot_line()        ETF_capital_chg = plot.plot_bar()        Line_nav.overlap(ETF_capital_chg)        page_wide_fund.add(Line_nav)    page_wide_fund.render('宽基ETF资金变化与走势.html')        '''    2.医药行业ETF跟踪    '''    Medicine_ETF = ['512170.SH','512010.SH','159992.SZ','512290.SH','159938.SZ','159828.SZ','515120.SH','159837.SZ',                    '159859.SZ','159929.SZ','159883.SZ','159645.SZ','516820.SH','159647.SZ']    Medicine_ETF_name = ['医疗ETF_沪','医药ETF_沪','创新药ETF_沪','生物医药ETF_沪','医药卫生ETF','医疗ETF_深','创新药ETF_深',                         '生物科技ETF','生物医药ETF_深','医药ETF_深','医疗器械ETF','疫苗龙头ETF','医疗创新ETF','中药ETF']    page_medicine = Page()    #先绘制表格    Medicine_ETF_capital_Last_Trade_Date_List = []    for i in range(0,len(Medicine_ETF)):        df_ETF = get_ETF_Capital_Change(code=Medicine_ETF[i])        #当日资金变化明细        data_row_list = df_ETF.loc[len(df_ETF)-1].tolist()        data_row_list.insert(1,Medicine_ETF[i])        data_row_list.insert(2,Medicine_ETF_name[i])        data_row_list[3] = round(data_row_list[3],2) #净值数据保留2位有效小数        # 统计近一周和近一月        df_ETF_last_week = df_ETF.loc[(len(df_ETF) - 5):(len(df_ETF) - 1)]        # print(df_ETF_last_week)        data_row_list.insert(7, round(df_ETF_last_week['capital_chg'].sum(), 2))        df_ETF_last_month = df_ETF.loc[(len(df_ETF) - 21):(len(df_ETF) - 1)]        data_row_list.insert(8, round(df_ETF_last_month['capital_chg'].sum(), 2))        Medicine_ETF_capital_Last_Trade_Date_List.append(data_row_list)    page_medicine.add(plot_table(rows_data=Medicine_ETF_capital_Last_Trade_Date_List))    for i in range(0,len(Medicine_ETF)):        df_ETF = get_ETF_Capital_Change(code=Medicine_ETF[i])        plot = Data_Visualization(df=df_ETF,ETF_name=Medicine_ETF_name[i])        Line_nav = plot.plot_line()        ETF_capital_chg = plot.plot_bar()        Line_nav.overlap(ETF_capital_chg)        page_medicine.add(Line_nav)    page_medicine.render('医药行业ETF资金变化与走势.html')    

其他宽基和行业追踪只需要进行ETF代码替换即可生成。

量化结果

宽基ETF资金净流入追踪

医药行业ETF资金净流入追踪

以上就是量化:ETF资金净流入追踪ETF投资实现的整体过程,感兴趣的朋友可以YU股思基私信获取。

YU说:量化研究ETF资金净流入黄金交易代码是什么,对做好ETF轮动具有重要意义,ETF投资心里有底啊!

坚持理性研究,量化投资,做有价值的事情,做正确的事情,坚定信心,静待开花结果。

​免责声明:投资有风险,投资需谨慎!本文仅为根据市场公开资料及个人理解研究分析,不作为投资依据,文中涉及到的标的仅作为举例,不构成投资建议,所提到的观点仅代表个人的意见,所涉及标的不作推荐,风险自负。

坚持不易,分享,,三连击!

本文到此结束,希望对大家有所帮助。

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至81118366@qq.com举报,一经查实,本站将立刻删除。发布者:简知小编,转载请注明出处:https://www.jianzixun.com/76489.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫

相关推荐

软文友链广告合作联系站长qq81118366