小米智能摄像头:程序化交易可以让我们遵守期货交易的三原则打印 | 推荐 | 评分

来源:百度文库 编辑:中财网 时间:2024/04/27 10:35:48
为什么选择程序化交易

程序化交易通常是指利用计算机编程的机械交易系统(即程序化交易系统)进行交易。机械交易系统最大的优点是可以强迫交易者摆脱那些极具破坏性的交易行为,养成良好的交易习惯。尽管这个过程漫长且痛苦,但它确实是一个有效的工具,能使交易者逐渐学会控制情绪、遵守纪律、拥有耐心并坚持价格风险管理的原则。


机械交易系统另一个优点是可以将风险与回报定量化。没有风险与回报的定量化,就无法对未来收益进行预测。更重要的是,尽管谨慎的价格风险管理从本质上说不依赖于交易系统本身,但把系统的当前表现与历史表现进行比较,就可以发现当前收益与预期收益之间的偏差到底是在可容忍的范围内,还是由于市场性质已发生重大变化而变得不可接受。这一点无论对于交易者,还是价格风险管理者来说,都是无价的。

程序化交易相比普通投资者根据自己的判断来做交易有以下几个优点:
第一,计算机能够持续稳定、精确严格地按原则工作,能够大规模地进行数据处理,而人灵活有余、原则不足且不能长时间地机械工作。
第二,犯了错误不愿意纠正,贪婪、恐惧等是人的天性,而计算机会按照既定的规则来处理错误信号发出的指令和生成的持仓。
第三,期货市场与其他行业相比,有着无可比拟的高效率和丰富的市场机会(短、中、长线甚至T+0),但由于对行业或品种认识上的局限性,人们往往不能精通每一个期货品种,因而错过了很多投机机会。有了捕捉市场机会的程序,就不必顾虑个人对某一品种的熟悉程度,因为价格已经把基本面及一些不为人知的其他因素包容进去。
总之,程序化交易除完成了一些特殊的交易功能外,还弥补了人类机械化工作能力的不足、克服了人性的弱点、解决了多个品种同时交易的难题。


什么是完整的交易系统

一个完整的交易系统包含了成功的交易所需的每项决策:
1.市场——买卖什么
首要的决策是买卖什么期货品种,或者在哪个市场进行交易。如果你只在很少的几个市场中进行交易,你就大大减少了赶上趋势行情的机会。同时,你不想在成交量太少(流动性很差)或者趋势不明朗的市场中进行交易。


2.头寸规模——买卖多少
有关买卖多少的决策绝对是最基础的,然而通常却又是被大多数交易员曲解或错误对待的。买卖多少既影响多样化(Diversification)分散投资,又影响资金管理(Money Management)。多样化就是努力在诸多投资工具上分散风险,并且通过增加抓住成功交易的机会而增加赢利的机会。正确的多样化投资要求在多种不同的投资工具上进行类似的(如果不是同样的话)分仓投资。资金管理实际上是通过合理的仓位来控制风险,以便在良好的趋势到来之时尚有足够的可用资金。买卖多少是交易中最重要的一个方面。大多数交易新手喜欢在单笔交易中冒太大的风险,因而即使他们在其他方面拥有有效的交易风格,但也大大增加了他们破产的机会。


3.入市——何时买卖
何时买卖的决策通常称为入市决策。自动运行的系统产生入市信号,这些信号说明了进入市场买卖的明确的价位和市场条件。


4.止损——何时退出亏损的头寸
长期来看,不会止住亏损的交易员不会取得成功。关于止损,最重要的是在你建立头寸之前预先设定退出的点位。


5.离市——何时退出赢利的头寸
许多被当作完整的交易系统出售的“交易系统”并没有明确说明赢利头寸如何离市。但是,何时退出赢利头寸这个问题对于系统的收益性是至关重要的。任何不说明赢利头寸何时离市的交易系统都不是一个完整的交易系统。  


6.技巧——如何买卖  
信号一旦产生,关于执行的机械化方面的技巧考虑就变得重要起来。尤其对于规模较大的账户是个实际问题,因为其头寸的建仓平仓可能会导致显著的反向价格波动或市场冲击成本。


程序化交易系统的分类

根据触发系统的因素不同,机械交易系统可以分为两类:价格触发的系统以及指标触发的系统(当然也可以是两者的有机结合)。价格触发通常是指在市场接近或突破关键支撑位或阻力位时交易系统产生交易信号。指标触发是指交易系统利用技术指标产生交易信号。技术指标又有两类:一类是利用市场的均值回归特性(振荡行情)获利的指标,譬如摆荡指标;一类是利用趋势特性(单边行情)获利的指标,譬如移动平均。

一般而言,好的程序化交易系统多为趋势追随(Trend-following)系统,也就是利用趋势分析指标来建立的交易系统。本文主要介绍的通道突破系统(Channel Breakout)、单条移动平均线系统以及双移动平均线交叉系统都属于趋势追随系统。

交易系统测试中的问题

1.期货合约的期限
如果需要对交易系统进行较长(譬如10年)历史数据的测试,那么我们就需要解决期货合约到期的问题。传统的处理期货合约到期问题的方法是将每个时间点的最近月份的期货合约连接起来形成所谓的连续合约。我们始终采用最近到期的合约的价格资料,当最近一张合约停止交易后,同一商品的下一张合约就成为新的最近到期的合约,这样简单地把一串合约的价格图表接续起来就成了。


使用这样的数据图表存在一个问题,那就是过期合约的收盘价与新合约的开盘价往往存在一定的差异。这两个数据之间的差异有可能形成一个巨大的价格跳空,这样对大多数中长线趋势追随系统来说,非常可能触发错误的交易信号。

2.历史数据的完整性与准确性
期货交易历史数据是由行情软件提供的。需要提醒交易者的是,行情商提供的数据不一定完整和准确,有可能会出现诸如“坏点”等问题。如果要保证机械交易系统的质量,我们必须要不惜一切代价保证数据质量,确保数据的完整性与准确性是不能打任何折扣的。


机械交易系统的局限性

1.机械交易系统总体局限性
首先也是最明显的问题:交易系统的基础是针对历史数据的统计分析。未来市场的行为不可能正好是过去行为的重现,由于所有的模型都是通过历史数据外推的结果,我们只能寄希望于市场的未来行为与历史行为之间有着很强的正相关关系。


其次,机械交易系统中包含一些指标及其相关参数的设置,通常我们是通过对历史数据的分析研究来选取这些参数。在交易系统的研发过程中我们应采用一定的方法来弥补这个缺陷,从而保证系统的稳健性。尽管这个道理简单易懂、大家都明白,但却不那么容易做到。对这个问题的低估会导致交易系统研发过程中出现大量的问题。

2.趋势追随系统的局限性
趋势追随系统最主要的一个缺陷是,在振荡行情中将无法避免地遇到频繁交易且可能连续亏损的情况。我们可以编写辅助指标来过滤假信号,避免频繁交易。另外,我们也可以设法在不同的条件范围内使用不同的交易模型,比如趋势模型与振荡模型交替使用。


常用趋势追随系统举例

1.通道突破系统(Channel Breakout)
当价格向上突破前20日最高价时,发出买入开仓交易指令;
当价格向上突破前20日最高价时,发出买入平仓交易指令;
当价格向下突破前20日最低价时,发出卖出平仓交易指令;
当价格向下突破前20日最低价时,发出卖出开仓交易指令。
2.单移动平均线系统
当收盘价向上穿越10个周期收盘价的简单移动平均线时,发出买入开仓交易指令;
当收盘价向上穿越10个周期收盘价的简单移动平均线时,发出买入平仓交易指令;
当收盘价向下穿越10个周期收盘价的简单移动平均线时,发出卖出开仓交易指令;
当收盘价向下穿越10个周期收盘价的简单移动平均线时,发出卖出平仓交易指令。
3.双移动平均线交叉系统
当5个周期收盘价的简单移动平均线向上穿越20个周期收盘价的简单移动平均线时,发出买入开仓交易指令;
当5个周期收盘价的简单移动平均线向上穿越20个周期收盘价的简单移动平均线时,发出买入平仓交易指令;
当5个周期收盘价的简单移动平均线向下穿越20个周期收盘价的简单移动平均线时,发出卖出开仓交易指令;
当5个周期收盘价的简单移动平均线向下穿越20个周期收盘价的简单移动平均线时,发出卖出平仓交易指令。


资金管理策略

资金管理的策略有无数种,归纳而言存在着两种基本的资金管理策略:鞅(Martingale)策略和反鞅(Anti-Martingale)策略。鞅策略是在经历了亏损的交易之后交易账户资金减少时增加开仓的大小,而反鞅策略则在经历了盈利的交易后账户资金增加时,增加开仓。鞅策略是有巨大风险的,如果在一连串的亏损之后,交易者不断加大下一笔交易的仓位时将面临更大的风险,这样迟早会导致其破产。反鞅策略是在一连串的盈利后来加大开仓从而冒更大的风险。在投资领域,聪明的交易者会在他们盈利的时候在一定限度内增加开仓。有多少种入市法则就有多少种资金管理策略。本文测试的账户金额百分比模式是反鞅的资金管理模式。

所谓账户金额百分比模式,是指交易者计划采用账户金额固定比例来开仓,例如20%。假设账户初始金额为100万元,这时他会拿出其中的20%也就是20万元来开仓,如果所交易品种的保证金要求为10%,这时他可以开仓持有价值200万元的期货合约,这也就相当于使用了2倍的杠杆进行交易;过了一段时间,该交易者盈利了,账户余额升至150万元,这时会用其中的20%也就是30万元来开仓。

指期货程序化交易测试

在进行程序化交易的测试(back-test)时,我们所采用的是沪深300股票指数的日线数据,时间是2005年4月8日(沪深300股票指数正式发布之日)至2009年4月7日,四年共计972个交易日K线。我们之所以采用沪深300股指(现货)的历史数据,而没有用中国金融期货交易所的沪深300股指期货仿真交易的历史数据,其原因主要是基于以下考虑:首先中金所仿真交易数据最早只能回溯至2006年10月30日,可测的时间周期太短;其次或许是由于股指期货仿真交易缺乏期现套利交易者与避险交易者的有力参与,仿真交易的价格等数据的“失真”现象比较明显,对真金白银的实盘交易的参考意义较为有限。另外,股指期货合约在形成所谓的连续合约时,过期合约的收盘价与新合约的开盘价往往存在一定差异,这两个数据之间的差异有可能形成一个巨大的价格跳空,这样对大多数中长线趋势追随系统来说,非常可能触发错误的交易信号。按照沪深300股指期货的合约设计,合约乘数为300元/指数点,保证金比例为合约价值的18%,单边交易手续费(包括交易所收费及期货公司佣金)为合约价值的0.25‰,这样的设置较为真实地反映了市场的实际情况。

假设2005年4月8日开始测试时交易者账户初始资金为100万元人民币。简便起见,我们不考虑给交易系统设置止损与止盈。在进行程序化交易系统测试时,我们关注的主要指标包括期末金额、年化收益率、敞口百分比、交易总笔数、盈利交易总笔数、盈利交易百分比(胜率)、最大连续盈利交易笔数、最大连续亏损交易笔数、账户资金最大回撤比例以及系统整体分值,其中敞口百分比(Exposure %)是按K线周期统计的未平仓头寸的百分比,账户资金最大回撤比例是指账户权益(以收盘价位计)曲线从波峰到波谷的最大跌幅,系统整体分值是通过对收益率、资金使用效率及风险等多项指标综合权衡后得到一个简单的指标,用以评价交易系统的整体性能,分值越大说明系统的整体性能越好。
表一:不同交易系统、相同资金管理策略的测试结果比较


表一列出了通道突破系统、单移动平均线系统以及双移动平均线交叉系统等三个交易系统,在采用账户金额36%固定比例(鉴于股指期货保证金比例为合约价值的18%,36%固定比例相当于2倍的杠杆)开仓这一相同的资金管理策略下,针对沪深300股指测试的结果。总体上说,用这三个趋势追随系统来交易的测试效果都不错,这说明沪深300股指的趋势特性比较好,适合进行趋势交易。在三个趋势追随系统中,双移动平均线交叉系统各项指标明显占优,年化收益率高达90.39%,而敞口百分比仅为26.73%,说明仓位很轻、持仓风险很小,盈利交易百分比(胜率)为46.15%应该说也还不错,最大连续盈利交易笔数为4笔,最大连续亏损交易笔数3笔应该在投资者可以承受的范围之内,账户资金最大回撤比例-43.98%显得略大,不很理想,但与90.39%的年化收益率相比还是可以接受的。这个交易系统总体分值189.45,相当不错。
表二:双移动平均线交叉系统、不同资金管理的测试结果比较
 

表二列出了双移动平均线交叉系统在采用账户金额1倍、1.5倍、2倍、2.5倍杠杆固定比例开仓等四种资金管理方法下的测试结果。显然,资金管理方法对于交易总笔数、盈利交易总笔数、盈利交易百分比、最大连续盈利交易笔数以及最大连续亏损交易笔数等系统指标没有任何影响,这些指标仅仅是由交易信号(建仓与平仓信号)决定的,而资金管理方法也不能改变某笔既定交易是盈还是亏的特性;但资金管理方法确实可以影响期末金额、年化收益率、敞口百分比、账户资金最大回撤比例乃至系统整体分值。在仓位较轻的情况下,开仓(持仓)的百分比越高,年化收益率会相应提升,但对应的风险也增加了,这体现在敞口百分比与账户资金最大回撤比例数值的上升。投资者应对年化收益率与账户资金最大回撤比例加以权衡,以确定适合自己风险收益偏好的资金管理策略与方法。
图一 双移动平均线交叉系统、2倍账户资金杠杆开仓 利润曲线图


图二 双移动平均线交叉系统、2倍账户资金杠杆开仓 每笔交易利润分布图

综上所述,沪深300指数是非常适合进行趋势追随的程序化交易的投资标的。在股指期货尚未推出之前,投资者可以考虑将类似的趋势追随系统运用于与沪深300指数具有高度相关性的投资品种,例如上证50ETF或深证100ETF或两者的投资组合。将来股指期货正式推出之后,也许会出现两种情况:一种是由于套利交易者的大力参与,沪深300股指期货与沪深300指数现货之间的走势相当吻合,高度相关,在这种情况下投资者完全可以考虑针对沪深300股指期货进行趋势追随的程序化交易;另一种情况是沪深300股指期货与沪深300指数现货之间的走势差别很大,此时投资者可以考虑由于错误定价(Mis-pricing)而形成的两者之间的期现套利这种风险极低的盈利机会。