程序化交易与资金管理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序化交易与资金管理
为什么选择程序化交易
程序化交易通常是指利用计算机编程的机械交易系统(即程序化交易系统)进行交易。机械交易系统最大的优点是可以强迫交易者摆脱那些极具破坏性的交易行为,养成良好的交易习惯。尽管这个过程漫长且痛苦,但它确实是一个有效的工具,能使交易者逐渐学会控制情绪、遵守纪律、拥有耐心并坚持价格风险管理的原则。
机械交易系统另一个优点是可以将风险与回报定量化。没有风险与回报的定量化,就无法对未来收益进行预测。更重要的是,尽管谨慎的价格风险管理从本质上说不依赖于交易系统本身,但把系统的当前表现与历史表现进行比较,就可以发现当前收益与预期收益之间的偏差到底是在可容忍的范围内,还是由于市场性质已发生重大变化而变得不可接受。这一点无论对于交易者,还是价格风险管理者来说,都是无价的。
程序化交易相比普通投资者根据自己的判断来做交易有以下几个优点:
第一,计算机能够持续稳定、精确严格地按原则工作,能够大规模地进行数据处理,而人灵活有余、原则不足且不能长时间地机械工作。
第二,犯了错误不愿意纠正,贪婪、恐惧等是人的天性,而计算机会按照既定的规则来处理错误信号发出的指令和生成的持仓。
第三,期货市场与其他行业相比,有着无可比拟的高效率和丰富的市场机会(短、中、长线甚至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个周期收盘价的简单移动平均线时,发出买入开仓交易指令;