本年度最大的收获之一是自营交易系统走上正轨,从年初每天只能捞几毛钱聊胜于无,到三四月份开始成规模扩张,到现在稳定运行大半年每个月能有近千美元的收入。在此简单记录一下过程中的思考,和自己心目中一套比较成熟的交易系统所需要的基本功能点。
交易系统的策略分类
在我的理解中所有的交易系统无非分成两种类型,一种是基于一定的定价体系,通过在交易所摆Maker盘,在成交后通过某种手段对冲赚取差价的做市商交易系统;另一种则是拥有自己的市场行情分析能力,通过预测市场长短期涨跌进行主动买卖的主动型交易系统。
套利型交易系统也基本可以归入做市商类型,区别在于发现套利机会后可能直接利用taker单抢占低价筹码同时在高价市场即时对冲。
主动型交易则有非常多的具体策略,最常见的例如趋势分析,反转分析,甚至通过基本面等信息进行价格判断。
目前个人的自营系统主要使用做市商策略赚取差价。
交易系统的功能点
一个完善的交易系统至少需要包含如下几个部分:
- 交易和行情模块:与交易所对接实现挂单撤单、持仓查询、行情报价获取及成交查询;
- 定价模块:从自定义的数据源获取数据,分析得到当前的买卖操作及具体下单价格;
- 风控模块:持续监测市场行情变化、订单成交情况,根据策略调整定价参数;
- 仓位控制:也可以算是风控体系的一环,更多从自身持仓的角度出发,降低由于持仓过分集中带来的风险。
币圈的交易接口相当开放,基本都是restful API+websocket的形式提供,对于自研的交易系统来说主要需要做好接口的抽象设计,对上层的交易决策隐藏各个交易所接口的差异,从而能够在后期快速接入更多的交易所。虽然部分交易所提供了sdk直接使用,然而因为各自的封装都各行其是,使用现成的sdk可以快速接入但并不利于横向扩展。
策略计算和定价模块是每个交易系统最大差异的来源,相信每个交易者都有自己的一套交易策略,主动型策略自不必说,MACD、布林线等等技术指标加上若干参数即可排列组合成无数种可能性。而即使都是做市商,如何给资产定价也不存在统一的黄金法则。
风控系统是交易整体上能否赚钱非常关键的一环,特别是在币圈这种一天就是一年的市场上,大幅波动是常态,完善的风控系统要确保在行情超出预期的情况下维持整体资产的稳定,避免巨额亏损的出现。
同样,仓位控制是独立于风控系统的另一套风险管理体系,在交易的世界里鲜有100%确定的事情,分散风险的重要手段就是避免单一持仓导致的风险敞口不可控。正所谓船小好掉头,即使持仓中的某个币种遭遇了极端行情,也不至于整体资产大幅缩水从此回本无望。
交易系统盈利的关键
成熟的交易系统大部份情况下并不追求100%的盈利概率,这种概率既不现实也不必须。只要能达到以下两种情况,长期必然能获得盈利:
- 盈利概率>50%,且单次亏损的金额不比盈利的金额大;
- 盈利概率无法保证,但
盈利的金额*盈利概率 > 亏损金额*亏损概率
上述两项其实可以都归纳为第二点,也就是整体盈利的数学期望应该是正值,从而能够在多次尝试之后依靠大数定律实现稳定的盈利表现。
确保能够盈利是关键的一点,另一方面还需要考虑的是策略本身能够执行的频率,也就是市场的机会有多少。即使是一个盈利期望非常高的策略,如果运行一年都不一定能出现一次交易机会,则最终的表现也不会多好。
正向的盈利期望加上适当的机会频率,是得到理想盈利表现的保障。