
投注机器人与API:自动化,又不被拒之门外
机器人在凌晨3点运行,早上9点你的账户应该还在。要做到这一点有两条路,Betfair在两者之间划了一条真实的界线,而这条线并不是大多数论坛帖子所说的那一条。
投注机器人,就是不靠手点鼠标来下注或管理投注的脚本。在Betfair Exchange,决定它是否被允许的不是“机器人”这个词,而是“API”:条款把通过其他自动化手段下的投注视为可疑活动,随即又把通过API下的投注明确排除在外。第二条规则同样管到API用户:账户必须保持个人使用,不能替别人开办服务。动真钱之前,先用Delayed key的延迟数据测试逻辑,并按API自身对请求、并发和登录的限制来设计。各把密钥的费用,以及四家经纪商对自家工具的说法,另有一页专讲,链接见下。
这条规则究竟把什么分开了
自动化是本站所讲的更广泛的职业投注方法中的一条线,之所以单独成页,是因为这里的规则比“sharp投注者都用软件”这句话具体得多。论坛里的简称把“机器人”当成一回事:下注的软件。Betfair的条款要精确得多。第12.1.4条在它视为可疑的活动中,列出了一笔“不是由账户持有人逐笔手动下注”(“otherwise than through the Account holder placing each Bet manually”,引文均为译文,以英文原文为准)的投注,单独来读,这句话会把有史以来写过的每一个脚本都网罗进去。但它不是单独来读的:同一条款自带一个例外,为免疑义而写明,“通过应用程序编程接口(API)”(“via the Application Programming Interface (API)”)下的投注不包括在内。把这两个片段合起来,界线就很清楚:靠点击普通网站来操作的脚本,是这条条款针对的对象;与API对话的脚本,则是这条条款自己点名的例外。
顺带一提:这句话里“机器人”这个词担了不少活,可条款里其实一次也没出现过这个词。Betfair的律师写的是“不是由账户持有人逐笔手动下注”,意思相同,说法更长,却是一句难得多、不容易被误引的话。好了,回到它对你意味着什么。
所以这条规则既不是“机器人被禁止”,也不是“机器人没问题”。它要窄得多:非官方的脚本像一双飞快的手那样操作网站,落在一条讲可疑活动的条款里;同样的逻辑接到官方API上,则落在例外里。手动操作价格阶梯的人和通过API做同一件事的脚本,在同一份文件里受到不同对待,区别在于走的是哪扇门,而不是门后的策略。
个人使用这条线,以及机器人在哪里会越线
第二条条款同样要紧,却被读得少得多。Betfair可以把一个账户的使用视为被禁止的使用,只要它“(合理行事的前提下)怀疑你账户的使用属于‘商业用途’”(“if we suspect (acting reasonably) that your Account's usage represents 'business usage'”),而这个定义被刻意放得很宽:“‘商业用途’包括投注运营商所作的任何使用,也包括向投注运营商提供数据或服务的个人或组织所作的任何使用”(“'business usage' includes any use by a betting operator or any use by an individual or organisation supplying data or services to a betting operator”,第11.2.13条)。这与上面的API例外毫无关系。一个脚本完全可以稳稳落在12.1.4的例外之内,却仍然违反11.2.13,只要它实际上是在替别人下注、在给订阅服务供数,或者是卖给其他投注者的某个产品的后端。
我会把这两条条款看作在回答不同的问题。第12.1.4条问的是:这笔投注是怎么下的。第11.2.13条问的是:这到底是谁的钱、谁的决定。只替一个人自己的账户行事的机器人,默认就通过了第二个问题。替好几个人管理投注额,或者出售自己信号的机器人,则通不过,不管它用哪扇门来下注。
进入API的每一条路,都从一个已核验的账户开始。Betfair自己的开发者帮助说得很直白:没有Betfair账户,就“无法继续办理授权”(“you cannot proceed with licensing”),而在任何一把密钥之前,都先摆着核验实际要经过的身份核查。商业性质的自动化有它自己单独的路径,走Betfair的商务一侧,而不是给一把个人密钥再加一笔更大的预算。
API是那扇门,网站上的脚本不是。
给Live key出资之前,该先测试什么
每个写机器人的人,都想直接跳到下注那一步。诚实的顺序恰恰相反:先用刻意比实时更慢的数据,以场所允许的最小投注额,证明逻辑成立,然后才轮到付费密钥或一笔像样的投注本金靠近它。
这个范围,最好是一秒,最差可达三分钟,可不是能耸耸肩带过的四舍五入误差。脚本上一次看到觉得合理的赔率,等脚本行动时可能早已越过它很远,而且没有任何沙盒来缓冲:Betfair自己的文档说明,没有任何测试环境能让人不用真实资金来测试。Delayed key下的每一笔投注,都是有真实结果的实时投注,所以以场所允许的最小投注额来跑这个阶段,是唯一理智的做法。
一个假设的情形,所有数字都只是为了算术而虚构。假设某个脚本盯着一个停在2.10的赔率,决定back(买入)它,而就在这一刻,API交回的是一份180秒前的快照。三分钟里可能发生一个进球、一张红牌或一次临场退赛,所以脚本以为自己在back的赔率,和订单落地时实际挂着的赔率,可能是两个不同的数字。上游再聪明的逻辑,也救不了一个建立在过时信息上的决定;值得最先测试的,是延迟本身,而不是架在它上面的策略。
场所只是画面的一半;另一半是机器人真正对其作出反应的数据流,建立在稀薄历史之上的脚本,不管用哪把密钥都会失灵。在相信脚本自己给出的数字之前,先用计算器手算一遍,并记住交易所佣金仍然要从每一笔赢的投注里扣;在认定一个策略在纸面上成功之前,值得读一读它对机器人净数字的影响。
脚本必须围绕着去设计的那些上限
这些都与自动化是否被允许无关。它讲的是API本身对脚本行为设下的天花板,用明白的数字写出,而不是留给人去猜。脚本还在图纸阶段时,其中四条最要紧,连同上面Delayed key自己的延迟窗口,它们都是Betfair可以修订的数字;围绕其中任何一个去设计正式上线的代码之前,请先查看现行条款。
- 市场数据请求的200点上限。成本按所请求的市场和数据类型累加;超过总额,返回的是错误,而不是数据。
- 订单和头寸类调用,同时最多3个请求。在前面的调用还在运行时,同时查询当前订单、盈亏或已结算的订单超过三次,会被拒绝,而不是排队。
- 下单、撤单、更新或替换订单,每秒最多1,000条指令。它涵盖整个账户、每一个打开的连接,而不是孤立的某一个脚本。
- 登录失败次数过多之后,锁定20分钟。在这段时间里,每一次再登录的尝试都会被自动拒绝,不管先前的失败是什么原因造成的。
第二个假设的情形,也是真正让人栽跟头的那一个。某个脚本的登录处理有个漏洞,没能及时刷新会话,于是不退避,而是在一个紧凑的循环里不停重试。二十分钟差不多是足球比赛的一个半场;开球时触发了锁定,脚本错过的比赛,比它曾经赶上的还多。补救办法比这个故事乏味得多:保持住会话,把一次登录失败当作停下来的理由,而不是立刻重试的理由。
经纪商自己的条款还会再加一层
上面讲的一切,都是Betfair自己的规则手册,只适用于直接持有的Betfair账户。经纪商的交易所工具是另一种产品,是向经纪商而不是向Betfair开立的,所以Betfair的API条款并不会自动延伸到那里。要紧的是各家经纪商自己的条款,而它们对脚本的说法并不一致:有的公布了自己的API,有的则干脆不允许自动化访问。把经纪商的反抓取条款当作它自己要遵守的内部规矩,它一旦变化就如实报告,千万不要当成可以绕开的东西。各家经纪商对机器人已经说了什么逐家列出了细节,并附有密钥的费用;本页不再重复。
如果你真正想要的并不是编写和维护一个脚本,经纪商已经把其中一部分打包好了:改用经纪商内置的自动化涵盖了现成的东西,无需写代码。一个因第12.1.4条下的可疑活动而被标记的账户,不管是不是自动化,也不会被悄悄放过;账户受限实际是什么样子讲的就是这一面。
在读过具体某家经纪商的现行条款(而不是论坛里的摘要)之前,我不会搭建任何东西。把四家经纪商的条款并排比较,是最快看清哪里欢迎自动化、哪里没有提、哪里干脆不允许的办法。
常见问题
在Betfair Exchange上使用投注机器人违反规则吗?
不一定。Betfair的条款把通过其他自动化手段下的投注(不是账户持有人逐笔手动下注)视为可疑活动,随后又在同一条款里明确排除通过官方API下的投注。通过API运行的脚本属于例外;像飞快的手一样去操作普通网站的脚本,则不属于。
投注机器人可以替别人运行,或者当作生意来做吗?
那越过的是另一条线。如果Betfair有合理理由怀疑某个账户的使用属于商业用途,就可以把这个账户的使用视为被禁止,而商业用途的定义,包括投注运营商所作的使用,以及任何向运营商提供数据或服务的人所作的使用。个人账户用于持有人自己的投注,不管是不是自动化。
投注机器人和Betfair API,实际区别是什么?
“机器人”是软件的简称;API则是Betfair专为自动化访问搭建的、获得认可的特定通道。条款不按软件贴的标签来评判它,只看这笔投注是通过哪个通道下的。
投注机器人能在不动用真钱的情况下测试吗?
用Delayed key(免费的开发选项)不行:Betfair说,不存在能让人不用真实资金来测试的测试环境,所以用它下的每一笔投注都是有真实结果的实时投注,在逻辑还在验证的阶段,最好把投注额压到最小。
投注机器人下单多快,API才会限流?
Betfair列出的上限是:单次请求能索取的市场数据最多200点,订单和头寸类调用同时最多3个请求,整个账户一秒钟内最多1,000条订单指令。登录失败过多,还要再加20分钟的锁定。在把其中任何一个用于正式上线的代码之前,请先查看现行文档。
本站介绍的体育投注经纪商允许投注机器人吗?
各家不一样,本页不再重复细节;讲各家经纪商对API和自动化各持什么立场的那一页逐家列出,并附有Betfair密钥的费用。