昨天(2019.05.06)的国内股市大家也都看到了,川普的一句推特威力真的太可怕了......(虽然今天涨了一点回去,但是本质上还是亏了呀)
但是不用担心,这个机器人(本项目)会追踪唐纳德·特朗普(Donald Trump)的推文,并且在他提及到任何一家上市公司时会进行通知。当他发推特的时候,它会使用情绪分析来确定他的意见对这些公司是积极的还是消极的。然后,机器人将会根据预期的市场反应自动执行相关股票的交易。它还在推特 @Trump2Cash 上实时发布其调查结果的摘要。
有关本项目的背景信息,点击底部【阅读原文】戳链接看论文:https://medium.com/@maxbraun/this-machine-turns-trump-tweets-into-planned-parenthood-donations-4ece8301e722
Github项目地址:
https://github.com/maxbbraun/trump2cash
项目代码用Python编写,你可以在Google Compute Engine实例上运行。每当特朗普发推文时,它都会使用Twitter Streaming API得到通知。实体检测和情绪分析使用Google的Cloud Natural Language API(云自然语言API)完成,Wikidata Query Service(Wikidata查询服务)提供公司数据,用TradeKing API进行股票交易。
main模块定义了一个回调函数,处理传入的推文并开始将特朗普的推文分析结果传输出去:
def twitter_callback(tweet):
companies = analysis.find_companies(tweet)
if companies:
trading.make_trades(companies)
twitter.tweet(companies, tweet)
if __name__ == "__main__":
twitter.start_streaming(twitter_callback)
核心算法在分析和交易模块中实现。前者在特朗普推特的文本中检索对公司的提及,寻找它们的股票代码,并给推文打情绪分。后者则选择一种交易策略,即要么现在买进,然后在收盘时卖出;要么现在卖空,然后在收盘时买进以回补。twitter模块处理流媒体和发推输出摘要。
请按照以下步骤自行运行代码:
查看快速入门,使用GoogleComputeEngine创建云平台项目和Linux虚拟机实例,然后通过SSH执行以下步骤。选择与你的首选价格和性能相匹配的预设机器类型。
或者,你可以使用Dockerfile构建Docker容器并在ComputeEngine或其他平台上运行它。
docker build -t trump2cash .
docker tag trump2cash gcr.io/<YOUR_GCP_PROJECT_NAME>/trump2cash
docker push gcr.io/<YOUR_GCP_PROJECT_NAME>/trump2cash:latest
从shell环境变量中读取不同API的身份验证密钥。每项服务都有不同的步骤来获取它们。
登录你的Twitter帐户并创建一个新应用程序。在应用程序的Keys and Access Tokens(密钥和访问令牌)选项卡下,你将找到Consumer Key和Consumer Secret。导出到环境变量:
export TWITTER_CONSUMER_KEY="<YOUR_CONSUMER_KEY>"
export TWITTER_CONSUMER_SECRET="<YOUR_CONSUMER_SECRET>"
如果你希望推文来自拥有该应用程序的同一帐户,只需在同一页面上使用访问令牌和访问令牌密钥即可。如果你想用其他帐户发送推文,请按照步骤获取访问令牌。然后导出到环境变量:
export TWITTER_ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"
export TWITTER_ACCESS_TOKEN_SECRET="<YOUR_ACCESS_TOKEN_SECRET>"
按照Google Application Default Credentials的说明创建、下载和导出服务帐户密钥。
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/credentials-file.json"
你还需要为你的Google云平台项目启用云自然语言API。
登录你的TradeKing帐户并创建一个新应用程序。在应用程序的Details 按钮后面,你将找到Consumer Key,Consumer Secret,OAuth (Access) Token和Oauth (Access) Token Secret。将它们全部导出到环境变量:
export TRADEKING_CONSUMER_KEY="<YOUR_CONSUMER_KEY>"
export TRADEKING_CONSUMER_SECRET="<YOUR_CONSUMER_SECRET>"
export TRADEKING_ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"
export TRADEKING_ACCESS_TOKEN_SECRET="<YOUR_ACCESS_TOKEN_SECRET>"
同时导出你的TradeKing帐号,你可以在My Accounts(我的帐户)下找到:
export TRADEKING_ACCOUNT_NUMBER="<YOUR_ACCOUNT_NUMBER>"
有一些库依赖项,你可以使用pip进行安装:
pip install -r requirements.txt
通过使用下面的命令运行pytest测试,验证是否运行正常:
export USE_REAL_MONEY=NO && pytest *.py -vv
基准测试报告显示了分析和交易算法的当前实现将如何对历史数据执行。你可以再次运行它来对你可能做出的任何更改进行基准测试:
python benchmark.py > benchmark.md
启用使用你的资金的真实订单:
export USE_REAL_MONEY=YES
使用以下命令让代码在后台运行:
nohup python main.py &
Copyright 2017 Max Braun
根据Apache许可证2.0版(“许可证”)获得许可;除非符合许可,否则你不得使用此文件。你可以在以下位置获取许可证副本:
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则根据许可证分发的软件将按“原样”分发,不附带任何明示或暗示的担保或条件。有关管理许可下的权限和限制的特定语言,请查看LICENSE。