Eiten 一个构建投资组合的好帮手
共 4103字,需浏览 9分钟
·
2024-04-24 08:50
Eiten是Tradytics的一个开源工具包,它实现了各种统计和算法投资策略,如Eigen组合、最小方差组合、最大夏普比率组合和基于遗传算法的组合。
Eiten允许你用自己的股票组合建立自己的投资组合。Eiten中自带的严格测试框架使你能够对你的投资组合更有自信。
1.准备
开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细Python安装指南 进行安装。
(可选1) 如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda,它内置了Python和pip.
(可选2) 此外,推荐大家用VSCode编辑器,它有许多的优点:Python 编程的最好搭档—VSCode 详细指南。
请选择以下任一种方式输入命令安装依赖:
1. Windows 环境 打开 Cmd (开始-运行-CMD)。
2. MacOS 环境 打开 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 | 你的用于创建投资组合的股票列表 |
└ strategies | python编写的策略代码 |
backtester.py | 回测模块 |
data_loader.py | 数据加载工具 |
portfolio_manager.py | 生成投资组合的代码 |
simulator.py | 使用历史回报生成投资组合的模拟器 |
strategy_manager.py | 策略管理器 |
2.使用方法
把你想要构建投资组合的候选股票列表写入 stocks/stocks.txt 中,尽量保证股票数量在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
各个参数的解释:
is_test: 该值决定了程序是否要保留一些数据用于未来的测试。当这个值为True时,future_bars的值应该大于5。
future_bars: 构建投资组合时将排除的最近n条K线。这也被称为样本外的数据。
data_granularity_minutes: 你想什么频率的数据来建立你的投资组合。对于长期投资组合,你应该使用每日数据,但对于短期策略,你可以使用分钟的数据(3600、60、30、15、5、1)。
history_to_use: 是使用特定数量的数据还是使用我们从雅虎财经下载的所有数据。对于分钟级别的数据,我们只下载了一个月的历史数据。对于日线,我们下载了5年的历史数据。如果你想使用所有可用的数据,该值应该是 all,但如果你想使用较小的数据量,你可以将其设置为一个整数,例如100,这将只使用最后100条k线来建立投资组合。
apply_noise_filtering: 它使用随机矩阵理论来过滤掉随机性的协方差矩阵,从而产生更好的投资组合。值为1将启用它。
market_index: 你想用哪个指数来作为你的投资组合的基准值。比如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: 你想用来建立投资组合的股票列表的文件。
如果你出现了类似下面这样的报错:
这是因为雅虎数据源从2021年开始不在向中国提供服务,你需要挂一个代理下载数据,在data_loader.py的73行,增加proxy参数:
stock_prices = yf.download(
tickers=symbol,
period=period,
interval=interval,
auto_adjust=False,
progress=False,
proxy="http://127.0.0.1:10809" # 此处由你代理地址决定
)
然后重新执行命令便能生成不同策略的投资组合权重分配结果:
同时,程序会弹出一个图表,这个图表能输出所有策略的权重比:
各个策略的累计净值收益曲线(5年):
"未来测试"的累计投资回报(最近90天):
模拟未来的累计投资回报:
感谢大家的阅读,本文关于Eiten使用方式的介绍就到这里。
下篇文章我们就告诉大家如何将Eiten用于A股,敬请期待。
我们的文章到此就结束啦,如果你喜欢今天的量化投资内容,请持续关注二七阿尔量化。
有任何问题,可以在公众号后台回复:加群,回答相应红字验证信息,进入互助群询问。
希望你能在下面点个赞和在看支持我继续创作,谢谢!
欢迎关注公众号:二七阿尔量化