ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [파이썬/백테스트/적립식] 매달 비트코인을 10만원씩 구입했다면?
    Python/파이썬과 주식 2025. 2. 19. 20:54
    반응형

    2018년부터 매달 비트코인을 10만원씩 적립했다면... 

    from datetime import datetime
    
    import FinanceDataReader as fdr
    import matplotlib.pyplot as plt
    import pandas as pd
    
    buy_money = 100_000
    start_date = datetime.strptime('2018-01-01', '%Y-%m-%d')
    end_date = datetime.strptime('2025-01-01', '%Y-%m-%d')
    
    df = fdr.DataReader('BTC/KRW', start_date, end_date)
    df = df[(start_date <= df.index) & (end_date > df.index)]
    close_sr = df['Adj Close'].resample('ME').last()
    
    money_sr = pd.Series([buy_money] * len(close_sr), index=close_sr.index)
    money_cumsum = money_sr.cumsum()
    btc_num = money_sr / close_sr
    btc_cumsum = btc_num.cumsum()
    btc_cumsum_KRW = btc_cumsum * close_sr
    
    print('[', df.index[0].date(), '~', df.index[-1].date(), ']',
          f"{money_cumsum.iloc[-1]:,} => {btc_cumsum_KRW.iloc[-1]:,.0f} / "
          f"ROI: {btc_cumsum_KRW.iloc[-1] / money_cumsum.iloc[-1]:.2f}"
          )
    
    plt.plot(btc_cumsum_KRW.index, btc_cumsum_KRW, label='backtest', color='violet')
    plt.plot(money_cumsum.index, money_cumsum, label='cumulative', color='b')
    plt.legend(loc='upper left')
    plt.show()

    결과는?

    [ 2018-01-01 ~ 2024-12-31 ] 8,400,000 => 72,315,229 / ROI: 8.61

    2020년부터 시작했다면?

    [ 2020-01-01 ~ 2024-12-31 ] 6,000,000 => 27,393,674 / ROI: 4.57

    월복리 연리 52~53% 정도?

    반응형
Designed by Tistory.