因為有網友想要這篇文章【槓桿型 ETF 適不適合長期持有?回測 TQQQ】中提到的 TQQQ mock 的原始碼,就直接貼在這裏了
先算出 QQQ 和 TQQQ 兩者的年化報酬率差距,當時的數據是 2.8437
年化報酬率:57.09% / 20.12% = 2.8437
完整程式碼如下:
import ffn
import matplotlib.pyplot as plt
import pandas as pd
%matplotlib inline
prices = ffn.get('qqq', start='1999-01-01')
prices['qqq_shift'] = prices['qqq'].shift(1)
prices['qqq_diff'] = prices['qqq'].diff(1)
prices['qqq_diff_tqqq'] = (2.8374 * (prices['qqq_diff'] / prices['qqq_shift'])) + 1
prices['tqqq_mock'] = 0
nRow = 0
while(nRow < prices.shape[0]):
if (nRow == 0):
# 初始化資料
tqqq_mock = 1
else:
tqqq_mock = prices['qqq_diff_tqqq'][nRow] * tqqq_mock
prices.iloc[nRow, prices.columns.get_loc('tqqq_mock')] = tqqq_mock
nRow = nRow + 1
print(prices)
這裏就把 tqqq mock 的資料算出來了,再來就可用 ffn 繪圖和計算資料
# 價格走勢圖
prices[["qqq", "tqqq_mock"]].rebase().plot()
plt.grid()
# 最大虧損
prices[["qqq", "tqqq_mock"]].to_drawdown_series().plot()
plt.grid()
plt.show()
# 計算
stats=prices[["qqq", "tqqq_mock"]].calc_stats()
stats.display()
程式很簡單,沒幾行 code ,UPRO 和 TMF 也可以以此類推,不過其實我是 JAVA 工程師,對 Python 不太熟,如果有什麼比較好的寫法,也可以留言告訴我