独立开发者Sebastian Dobrincu建了一个神经网络用于高频的股票交易作为业余项目,现在这个机器人每个月能为他赚3500美元。我们一起来看看他是怎么开发这个神经网络并把它做大的。
背景和项目介绍
我叫Sebastian Dobrincu,是一名软件工程师,目前的工作是一名自由职业者。我还是一名热心的产品制造者,热爱开发业余的、疯狂的商业项目。我的职业背景可以用机器学习、移动开发、设计等来概括。
一开始我做Stock Trading Bot(股票交易机器人)只是作为自个人的研究项目。目的是想试试看现代的机器学习方案能不能亿极高的频率用于对当今的股票市场进行预测以及自动化买卖。
结果表明,它在5个月内每个月大概就为我赚了3500美元,而维护成本只有不到90美元/月。目前我自己是主要用户。我打算继续开发这个机器人,目标是尽可能扩充它的规模。
你开发这个机器人用了多长的时间,采用了哪些技术?
我最初的目标是做一个仅聚焦于比特币(主要是因为比特币方面的API很多)的高频交易(HFT)机器人。其巨大优势在于在这里没有跟大型交易机构打交道会遇到的障碍。尽管我认为目前是比特币市场的黄金时代(因为它还不完美),但我很快放弃了这个想法,因为没办法找到足够稳定的基于FIX的API。这里面的技术细节我就不想说太多了因为你会烦的,总之这个交易API基本上是基于REST的,对于我的目标来说表现还不够快。
长话短说,我最终还是选择了美国股票市场,但并不是进入真正意义上的高频交易市场。我的机器人会守住一个点位,市场从数秒到数分钟不等(有时候甚至是数小时),所以它更像是一个自动化的交易商而不是高频交易商。其背后的原因是,作为个体操盘手你是很难跟大型交易商竞争的,因为你缺乏非常强大的硬件、先进的受训练软件等有利条件,服务器放置的位置也没有对方好。离股市越近,你收到信息就越快。那些大型交易商往往要花好几百万美元就为了让自己的服务器离交易所近几英里。
交易的话我推荐 Tradestation证券商,因为它们的平台能轻松实现程序化自动交易。他们的限制是每秒钟3个请求,对于我的新策略来说这个已经足够了。拿到可靠的历史金融数据并不便宜,鉴于有那么多人跑到提供商那里去下载数据,所以他们限制提供信息没有什么好指责的。Intrinio是一个很好的实时股票报价提供商,而且价格也非常便宜。然而,能拿到更深入的数据永远都会获得更好的结果。
第一个原型我大概用了不到一个月的时间。我一般是利用晚上的时间,然后在白天作为自由职业者的工作间歇再写写。这个时候机器人还不是很聪明。后来我又多花了2周的时间来提供数据给它,直到错误率达到令我满意的程度,然后又用了2周的时间来进行测试,最后才投入生产。所以目前这个版本的技术实现前后总共用了4个月的时间,一路上都在不断改进。
你是怎么想到要开发股票机器人的?
冒出这个想法实际上相当偶然。有一次我准备飞去旧金山之前决定先下载一些播客来看看。我觉得要试一些新东西,于是就从金融栏目里面选了最热门的一些内容。在一万英尺的天上,我点击了播放让让自己放松下来。
主持这次谈到的是流动性的话题,流动性被分为了3个尺度:价格、规模以及时间。姐帮你上当流动性充裕时,投资者就可以成功地以当前的价格在短时间内做出更大的定单交易。当他们开始争论高频交易能否通过提供流动性来改善市场时,我打开了手机的笔记本应用,开始奋笔疾书其中一些主要想法。
在这个项目之前,我对金融的了解是相当有限的。我对基础交易的了解很透彻,但除此以外就不甚了了。我希望改变这一点,但我也记得有人说过99%的金融书都是废话。
Sebastian渴望坐下来学习舒适区以外的新东西是极其有益的。
在经过广泛研究之后,我选定了Larry Harris的《Trading and Exchanges》以及John Hull的《股权、期货以及其他衍生品》这两本读物。第一本也许是我读过的最好的金融类书籍。它回答了任何进行过交易的好奇者都可能会提出的所有问题。另一方面,John Hull的书对数学金融进行了的极好介绍,让我从应用角度了解了这门学科。如果你刚刚开始了解交易的话,我高度推荐这两本书。
我相信,我们已经达到了AI领域的巅峰。我们现在既有强大的机器也有足够的数据用于AI处理。想到这一点,我内心的那位工程师对于利用当今的先进技术来涉足这一市场感到兴奋不已。此外,我对于做一些迷人的项目也非常上瘾,这个也不例外。
你的未来目标是什么,你打算如何实现这些目标?
自从我公开发布了这款机器人之后,我已经收到了交易公司的10多份报价。目前这套系统让我取得了相对于其他交易商的优势。如果我把它卖掉的话,我也就失去了对其他交易商的优势了。尽管我不排除将来出售它的可能性,但目前我的打算是专心改进产品并对其进行扩充。
近期我的打算之一是提高交易金额,让机器人经受更大的交易量。我脑子里已经有了很多的改进想法,尤其是在调整位置保持的时间跨度方面,此外还有让它更轻量、促进更大交易量的解决方案。
你面临的最大问题是什么?如果你必须从头开始的话你会怎么做?
我在应用高频交易到比特币上面浪费了太多的时间。一开始这个想法似乎是很棒的,但我很快在试图扩大请求数方面遭遇到很多的技术问题。然而,我现在还不敢肯定说实现加密货币真正的高频交易是不是就没有可能了,所以未来我可能还会回过头来研究一下。
在由于技术限制而抛弃高频交易的想法之后,我盯上了自动化交易的一种更加分析性的方法。那些改变大部分都不能应用到比特币市场上,因为这是高度不可预测的,很难围绕着它建立模型。也就是在那个时候我决定去做股票市场。
知道什么时候该忽略什么很重要。比方说,我看到很多的独立黑客盲从于一些只对有VC资金支持的公司有效的建议。
开始犯的另一个大错误是太过于依赖模型。我没有尝试用不同的办法去分析手头的数据,而是主要靠模型来识别有利润的模式,没有投入时间到其他更为直接的解决方案上面。模型只是现实世界的简单抽象,而我的常识救了我不止一次。
迄今为止,我目前的策略在95%的时间都是有效的。当然,从任何意义上来说这都还不是一个可靠地指标,而且还有很多因素会影响到它。这个机器人还没有经过足够的测试来保证这不是侥幸(可能性一样存在)。大型投资管理公司户不惜任何代价来实现这些指标,我敢肯定在将来的交易当中我大概保持不了这样的成功概率。迄今为止所取得的成功很大程度上也是受到了有利的行情条件、选择的股票,以及机器人只是间歇性运行等因素的影响。
此外,当另5%发生时,情况会变得非常糟糕。我是用非常痛苦的方式来学会这个的。不久之前市场变得相当疯狂,如果我说自己没有料到自己交易的股票出现重大崩盘的话那就是在撒谎。结果真的发生了这样的情况。
尽管我的止损让我避免了重大损失,但如果不是因为我在合适之机介入的话,机器人可能会让我过去几个月的利润付之东流。那次事件让我开始认真思考,我决定停止运行几天,直到我把漏洞给修复好。
这对我来说也是一次很好的学习经历,我认为如果不经历过这些起伏的话,我永远也做不出让它走到今天的算法。我不后悔在比特币上浪费的时间,因为它让我对加密货币交易如何运作有了更深入的了解,而这些东西也许在将来有朝一日就会派上用场。美股投资网 http://www.tradesmax.com
你的最大优势是什么?有没有一些特别有用的东西?
我的最大优势也许是自己是一位乐观过头的年轻梦想家。从某种程度来说,这让我对想法足够相信,愿意投入别人不愿投入的足够精力去实现它。正是这个激励着我坚持要找到市场的那些“后门”。机关许多人认为个体操盘手没有多少机会扳倒武装到牙齿的大公司,但我证明了只要实现得好市场还是有操作空间的。
另一个极其有用的资源是网上公开的研究论文。实际上,我从2006年发表的论文上面得到了极大的帮助。我经常发现这些论文尽管包含着超级有用的分析,但大部分都被为人所忽视。
身为工作狂对取得这一成功也有相当大的贡献。我每天工作10到12小时一点问题都没有。在时间方面,我形成了一种非常有生产力且一致的生活方式,设法排除了大部分的干扰。这让我有时间投入到打磨和研究项目的不同策略上面。
你对有抱负的独立黑客的建议是什么?
我见过几个人,他们在那个论坛上就这么呆呆地等着完美想法出现,或者花费了几年的时间去完善产品。Reid Hoffman(LinkedIn联合创始人)的总结最到位:如果你没有对v1版感到难堪的话,你的产品发布已经太迟了。
要发布东西!如果你全力以赴开发了某个东西但却放弃推出它的话,没人会在意它的。我们生活在一个非常资本主义的社会,大家会根据真正的结果来判断你。没人会在意你的行动计划以及你为什么不发布出去的理由。
正如Sam Altman(YC负责人)所说那样,没人会原谅你没有一个伟大的产品。然而,什么都没有肯定比这还要糟糕。不要第一版就想做到完美。先到市场上吗试试水,收集大量反馈然后不断迭代你的想法。
尽管这并不是一个面向客户的产品(目前暂时不是),但是业余项目的力量再怎么强调也不为过。业余项目让你可以试验疯狂的想法又不会被说成是疯狂的。而且即便大家根据这个来对你做出判断,你也可以抛出这句话来当挡箭牌:“是的,这不过是个业余项目罢了。”
还有,你一定要追求脑子里面最疯狂的想法。大多数成功的公司都是这么创办出来的(比如说Facebook、Uber、AirBnb)。你大概不会想浪费自己最宝贵的资源,去开发出又一个Snapchat的山寨品来吧。每一个问题都有一个解决方案。你只是需要有足够的创意去找到它而已。