Eiten 一個構建投資組合的好幫手
共 4103字,需瀏覽 9分鐘
·
2024-04-24 08:50
Eiten是Tradytics的一個開源工具包,它實現(xiàn)了各種統(tǒng)計和算法投資策略,如Eigen組合、最小方差組合、最大夏普比率組合和基于遺傳算法的組合。
Eiten允許你用自己的股票組合建立自己的投資組合。Eiten中自帶的嚴格測試框架使你能夠對你的投資組合更有自信。
1.準備
開始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上,如果沒有,可以訪問這篇文章:超詳細Python安裝指南 進行安裝。
(可選1) 如果你用Python的目的是數(shù)據(jù)分析,可以直接安裝Anaconda:Python數(shù)據(jù)分析與挖掘好幫手—Anaconda,它內置了Python和pip.
(可選2) 此外,推薦大家用VSCode編輯器,它有許多的優(yōu)點:Python 編程的最好搭檔—VSCode 詳細指南。
請選擇以下任一種方式輸入命令安裝依賴:
1. Windows 環(huán)境 打開 Cmd (開始-運行-CMD)。
2. MacOS 環(huán)境 打開 Terminal (command+空格輸入Terminal)。
3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.
git clone https://github.com/tradytics/eiten.git
cd eiten
pip install -r requirements.txt
pip install yfinance --upgrade --no-cache-dir
如你無法下載github上的內容,請到 https://pythondict.com/下載/eiten-源代碼/ ?上下載。
目錄結構如下:
| 路徑 | 描述 |
|---|---|
| eiten | 主目錄 |
| └ figures | 倉庫用到的圖表(無需關注) |
| └ stocks | 你的用于創(chuàng)建投資組合的股票列表 |
| └ strategies | python編寫的策略代碼 |
| backtester.py | 回測模塊 |
| data_loader.py | 數(shù)據(jù)加載工具 |
| portfolio_manager.py | 生成投資組合的代碼 |
| simulator.py | 使用歷史回報生成投資組合的模擬器 |
| strategy_manager.py | 策略管理器 |
2.使用方法
把你想要構建投資組合的候選股票列表寫入 stocks/stocks.txt 中,盡量保證股票數(shù)量在5~50只左右。
接下來就可以嘗試構建投資組合了:
python portfolio_manager.py --is_test 1 --future_bars 90 --data_granularity_minutes 3600 --history_to_use all --apply_noise_filtering 1 --market_index QQQ --only_long 1 --eigen_portfolio_number 3 --stocks_file_path stocks/stocks.txt
各個參數(shù)的解釋:
is_test: 該值決定了程序是否要保留一些數(shù)據(jù)用于未來的測試。當這個值為True時,future_bars的值應該大于5。
future_bars: 構建投資組合時將排除的最近n條K線。這也被稱為樣本外的數(shù)據(jù)。
data_granularity_minutes: 你想什么頻率的數(shù)據(jù)來建立你的投資組合。對于長期投資組合,你應該使用每日數(shù)據(jù),但對于短期策略,你可以使用分鐘的數(shù)據(jù)(3600、60、30、15、5、1)。
history_to_use: 是使用特定數(shù)量的數(shù)據(jù)還是使用我們從雅虎財經(jīng)下載的所有數(shù)據(jù)。對于分鐘級別的數(shù)據(jù),我們只下載了一個月的歷史數(shù)據(jù)。對于日線,我們下載了5年的歷史數(shù)據(jù)。如果你想使用所有可用的數(shù)據(jù),該值應該是 all,但如果你想使用較小的數(shù)據(jù)量,你可以將其設置為一個整數(shù),例如100,這將只使用最后100條k線來建立投資組合。
apply_noise_filtering: 它使用隨機矩陣理論來過濾掉隨機性的協(xié)方差矩陣,從而產生更好的投資組合。值為1將啟用它。
market_index: 你想用哪個指數(shù)來作為你的投資組合的基準值。比如SPY/QQQ,由于我們分析的是科技股,所以例子中使用了QQQ。
only_long: 是否只做多。
eigen_portfolio_number: 可閱讀這篇文章了解更多:
https://srome.github.io/Eigenvesting-I-Linear-Algebra-Can-Help-You-Choose-Your-Stock-Portfolio/
stocks_file_path: 你想用來建立投資組合的股票列表的文件。
如果你出現(xiàn)了類似下面這樣的報錯:
這是因為雅虎數(shù)據(jù)源從2021年開始不在向中國提供服務,你需要掛一個代理下載數(shù)據(jù),在data_loader.py的73行,增加proxy參數(shù):
stock_prices = yf.download(
tickers=symbol,
period=period,
interval=interval,
auto_adjust=False,
progress=False,
proxy="http://127.0.0.1:10809" # 此處由你代理地址決定
)
然后重新執(zhí)行命令便能生成不同策略的投資組合權重分配結果:
同時,程序會彈出一個圖表,這個圖表能輸出所有策略的權重比:
各個策略的累計凈值收益曲線(5年):
"未來測試"的累計投資回報(最近90天):
模擬未來的累計投資回報:
感謝大家的閱讀,本文關于Eiten使用方式的介紹就到這里。
下篇文章我們就告訴大家如何將Eiten用于A股,敬請期待。
我們的文章到此就結束啦,如果你喜歡今天的量化投資內容,請持續(xù)關注二七阿爾量化。
有任何問題,可以在公眾號后臺回復:加群,回答相應紅字驗證信息,進入互助群詢問。
希望你能在下面點個贊和在看支持我繼續(xù)創(chuàng)作,謝謝!
歡迎關注公眾號:二七阿爾量化
