美文网首页
基金定投能赚钱吗?

基金定投能赚钱吗?

作者: 圣_狒司机 | 来源:发表于2019-06-27 10:07 被阅读0次

    用随机函数模拟出一段四年的走势,在均匀的时间点买入走势基金:

    import numpy as np
    import matplotlib.pylab as plt
    
    TOTALMONEY = 1e5
    
    def genData():
        data = np.random.normal(0,1,2000).cumsum()[1000:]
        if data.min()<0:
            data+=-data.min()+1
        return data
    
    def test_mindata():
        minData = 1
        for _ in range(10000):
            data = genData()
            if data.min()<minData:
                minData = data.min()
        assert minData>0 
    
    test_mindata()
    

    模拟出的走势大概是这样的:

    plt.plot(genData())
    
    模拟走势

    三种不同的时间段投资策略:

    def simulate_market():
    #     无交易手续费,每日定投
        data = genData()
        money_for_each = TOTALMONEY/len(data)
        number_of_purchases = (money_for_each/data).sum()
        market_value = number_of_purchases*data[-1]
        growth_rate_of_funds = market_value/TOTALMONEY-1
    #     plt.plot(data)
        return growth_rate_of_funds
    
    def simulate_market_with_trading_fee(fee=0.0015):
    #     有交易手续费,每日定投
        data = genData()
        money_for_each = TOTALMONEY/len(data)*(1-fee)
        number_of_purchases = (money_for_each/data).sum()
        market_value = number_of_purchases*data[-1]
        growth_rate_of_funds = market_value/TOTALMONEY-1
    #     plt.plot(data)
        return growth_rate_of_funds
    
    def simulate_market_with_trading_fee_months(fee=0.0015):
    #     有交易手续费,每月定投
        data = genData()
        data_for_trading = data[::5]
        money_for_each = TOTALMONEY/len(data_for_trading)*(1-fee)
        number_of_purchases = (money_for_each/data_for_trading).sum()
        market_value = number_of_purchases*data[-1]
        growth_rate_of_funds = market_value/TOTALMONEY-1
        return growth_rate_of_funds
    

    按照三种策略模拟十万次走势生成、投资操作:

    ax1 = plt.subplot(311) #     无交易手续费,每日定投
    ax2 = plt.subplot(312) #     有交易手续费,每日定投
    ax3 = plt.subplot(313) #     有交易手续费,每月定投
    
    growth_rate_of_funds_set = []
    for _ in range(100000):
        growth_rate_of_funds_set.append(simulate_market())
    
    ax1.hist(growth_rate_of_funds_set,bins=np.linspace(-7.5,7.5,300))
    
    growth_rate_of_funds_set = []
    for _ in range(100000):
        growth_rate_of_funds_set.append(simulate_market_with_trading_fee())
    
    ax2.hist(growth_rate_of_funds_set,bins=np.linspace(-7.5,7.5,300))
    
    growth_rate_of_funds_set = []
    for _ in range(100000):
        growth_rate_of_funds_set.append(simulate_market_with_trading_fee_months())
    
    ax3.hist(growth_rate_of_funds_set,bins=np.linspace(-7.5,7.5,300))
    

    四年的总投资收益率是这样的:


    定投收益率

    注意有一半可能是负收益。

    相关文章

      网友评论

          本文标题:基金定投能赚钱吗?

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