Eiten 一个构建投资组合的好帮手

Python实用宝典

共 4103字,需浏览 9分钟

 · 2024-04-24

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股,敬请期待。

我们的文章到此就结束啦,如果你喜欢今天的量化投资内容,请持续关注二七阿尔量化。

有任何问题,可以在公众号后台回复:加群,回答相应红字验证信息,进入互助群询问。

希望你能在下面点个赞和在看支持我继续创作,谢谢!

欢迎关注公众号:二七阿尔量化

浏览 43
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报