美文网首页
用python编定投基金程序的基本思路

用python编定投基金程序的基本思路

作者: 旺财叔 | 来源:发表于2023-06-13 09:57 被阅读0次

    1、导入基金数据,形成DataFrame数据形式df,数据包含日期和每一日的基金净值;

    注:任何一直创业板指数基金的数据都可以,大同小异。

    df = pd.read_excel(r"D:\python\fund_110026.xls") #导入excel表格

    print("导入数据完成!")

    并落实看是否需要逆序操作,确保第一行为最老的日期。

    2、构造定投信号模块

    为df数据新增一列“invest”,用来存储定投信号;

    比如,每周一次定投,将定投日的信号“invest”设置为1,其余非定投日设置为0。

    df.at[indexs,'invest'] = 1

    3、构造定投模块;

    1)构造收益计算模块,为df数据增加收益数据;

    计算过程为:增加多列数据:每日的累计定投份额,每日的基金价值,每日的累计投入资金等,最后计算总收益率,年化收益率。

    df2.at[indexs,'total_yield_rate'] = (df2.at[indexs,'total_value'] - df2.at[indexs,'total_invest']) / df2.at[indexs,'total_invest']

    df2.at[indexs,'annual_yield'] = df2.at[indexs,'total_yield_rate'] * 365 / int(df2.at[indexs,'days'].days)

    2)设置清仓条件,当符合清仓条件时,将定投的收益模块终值定投;

    获得清仓时的日期,从而获得清仓与第一次开始定投的时间差,获得真实的清仓日历天数,清仓时的真实总收益和真实年化收益率等信息。

    if ((int(df2.at[indexs,'days'].days) > 60) and (df2.at[indexs,'total_yield_rate'] > 0.5))and (df2.at[indexs,'annual_yield'] > 0.2): 

                    indexs_sign = indexs

                    break;

    4、构建不同日期开始定投的反复定投程序;

    可设置清仓条件,将条件传入收益计算模块。

    每一个开始日期,调用一次定投模块,最后形成一个新的DataFrame数据,存储每一个日期(开始定投)及其对应的清仓日历天数,真实总收益和真实年化收益率。

    df5 = df1.iloc[i:(len(df1)-1)]           #选取第i行到最后一行的数据

    5、统计所有日期的清仓天数的数据特征。

    包括平均清仓周期,最大清仓周期,最小清仓周期,清仓周期中位数等。

    甚至可以利用统计函数得出概率最大的清仓周期。

    days_mean = df100['days'].mean()

    days_median = df100['days'].median()


    6、最后,可以变换不同的清仓条件(总收益率和年化收益率),寻找每一种组合下的清仓周期,最后通过下列条件来确定清仓条件。

    1)确保无论哪一天投入都不会出现无法卖出的情况;

    2)确保清仓周期不会过长(比如大于3年半);

    3)满足前两个条件下能获得更好的年化收益率,并确定对应的最大概率的清仓周期,清仓周期区间(用于一笔资金分批投入时,衡量单笔资金量)。

    相关文章

      网友评论

          本文标题:用python编定投基金程序的基本思路

          本文链接:https://www.haomeiwen.com/subject/bzbzedtx.html