【学习资料】量化交易用户一些典型提问的解答

策略模型和技术指标有什么区别?  


模型 =( 技术指标) + (下单、止损等交易内容) + (分配资金、风控等资金管理内容)   

模型加载到k线图后,展现出你从什么时间开始,投了多少钱做交易,交易盈亏曲线是什么样的,模型还包含交易的时间和资金的内容。

形象点说,技术指标一根价格趋势的曲线,策略模型是一根资金权益的曲线。

模型,是给你管理一笔资金的"交易员",你只需要把资金交给它,其他的就不用管了,买卖信号、委托管理、持仓管理、止损、风控这些,模型都能自己完成。

——————-


 以下资料,根据量化用户在论坛的发帖提问总结而来。

1、交易指令如何选择?用单一指令(BK、SP、SK、BP)还是反手指令(BPK、SPK)?
答:在将指标改写成量化交易模型过程中,具体使用哪种交易指令,取决于你的交易思路。如果交易过程中,并不是一直持仓,那么适合选择单一指令;如果交易过程中一直保持有持仓,非多即空,那么可以使用反手指令。
例如:在一波上涨趋势中,空头盈利空间要远小于多头盈利空间,做空甚至有可能不断亏损,这时使用反手指令是不适合的。使用一些判断趋势方向的条件,配合单一方向的指令,规避逆势交易,往往能够获得更高的收益。

2、量化交易能否加减仓?
答:对于绝大多数交易者来说,量化交易都无需加减仓的,所以wh8软件中提供了AUTOFILTER函数,只需加到模型最后一行, 即可启用一开一平的信号过滤机制,无需在模型中写入其他信号判断语句,系统会自动过滤掉同方向的交易指令,简单方便。
当需要进行加减仓的时候,软件也是支持的,需要删掉AUTOFILTER函数,并使用诸如ISLASTBK(判断上一个信号是否是BK)、BKVOL(多头信号手数)等信号记录函数,自定义过滤机制,即可实现加减仓。

3、运行优化函数是什么?
答:运行优化函数是对模型执行过程的微调和运行优化,支持在k线还没有走完的情况下发出交易指令,力求以更好的价格建仓和平仓,从而降低交易成本,提高模型收益。
例如:基本的模型是k线走完发出交易指令的,可以使用CHECKSIG函数,在k线还没有走完但是买入开仓条件已经满足的情况下发出交易指令,不需要等这个根k线走完。这样操作,后续行情继续上涨的前提下,买入价格就比k线走完再买入的价格更好,成本更低。
提醒:运行优化函数本质上不属于策略本身的内容,如果模型研究过程中,严重依赖运行优化函数,可能干扰策略的研究。虽然运行优化函数对短线模型是必须的,但是对长线模型来说意义不大的。

4、信号计算起始时间是什么意思?
答:量化交易回测有两个时间,一个是数据起始时间,一个是信号计算起始时间。
以沪铜2201合约为例,该合约的数据起始时间就是合约的挂牌时间是2021年1月18日,在挂牌初期交易不活跃,交易量很少,缺少流动性,你并不会去交易这个合约。随着时间的推移,到2021年11月份以后,距离交割日时间越来越短了,沪铜2101合约交易活跃起来,成交量逐渐增大,2021年11月1日你决定开始交易这个合约,那么信号计算起始时间就应该设置为2021年11月1日。模型自11月1日以后开始计算信号,此后如果满足信号条件,就会发出交易信号。

5、选择什么k线周期交易?
答:量化交易选择哪一个k线周期?这个问题没有标准答案。越小的周期,交易机会越多,但是随之而来的是更多的手续成本和滑点损失;越大的周期,趋势越明显,单笔盈利空间越大,但是相应的需要承担的回撤风险也越大。
一个模型更适合在哪个周期上运行,可以通过历史数据回测来判断,这也是量化交易的魅力所在。实际研究过程中,可以将模型逐一放到不同的k线周期上进行回测,通过对比模型回测报告中的收益、回撤、胜率、盈亏比、滑点损失等数据,最终找到表现最好的周期,这就是这个模型最适合的周期。

6、品种加权、主力连续回测模型,哪个更接近实战的准确性呢?
答:如果你要对模型做长期数据验证,那就需要使用品种加权、品种主连这类数据了。
品种加权、品种主连是不同的数据,具有不同的特点,有的模型适合用品种加权做回测,有的模型适合用品种主连做回测。
(一)、品种加权
品种加权数据,由各个月份合约的价格做加权平均形成,月份合约的持仓量越大,占的权重就越大,品种加权基本上代表主力月份合约的走势。因为实际交易中各个合约的调仓是逐步进行的,所以品种加权的k线图趋势的连续性较好,没有跳空情况。
品种加权数据适合用来回测长线模型,因为品种加权本身并不是交易合约,所有模型中需要写入trade_other('auto')来指定交易主力合约,主力合约切换月份时支持自动移仓。
长线模型不能包含checksig这类运行优化函数的。运行优化函数具体有哪些,参见 “插入函数” 里的函数分类列表。
建议用SETSIGPRICE函数来控制委托价格,信号价和委托价的价差,是支持纳入回测报告的,提高回测报告的准确性。
也可以使用closekline函数,在模型运行过程中收盘前几秒内下单。但是这个有瑕疵的,因为最后几秒钟内条件满足情况可能发生改变。
***因为品种加权是各个月份的平均价格,本质上是对价格走势做了钝化处理,一些细小的波动反应不出来的,所以不适合做短线交易使用,不适合用来回测短线模型。
(二)、品种主连
品种主连数据,由各个月份合约的数据拼接形成。把每一个月份合约主力期间以前的k线图砍掉,再把主力期间以后的k线数据砍掉,剩下主力期间的部分k线图,然后按照时间顺序拼接在一起,形成品种主连数据
品种主连做模型回测有一定局限性,不是所有的品种都适合的。模型中写入trade_other('auto')语句,跟着品种主连走势做自动移仓的交易方式,只适合沪铜、沪铝、沪锌、沪铅、沪镍、沪锡这类每一个月份都切换主力合约的有色金属品种,主力月份切换时的行情跳空小,新旧主力合约走势一致,品种主连数据可以做用来模型回测。
其他品种换月时间没有规律,主力月份切换时行情跳空很大,有新旧主力合约的走势有不一致的情况,不适合自动移仓交易方式。需要用主连链回测。
(三)、主连链回测
主连链回测,不再使用品种主连自身的k线数据计算信号,而是采用各个月份合约自挂牌以来的全部k线数据计算信号,规避品种主连k线数据换月跳空对量化计算准确性的影响。
调用方法:模型不要写入trade_other('auto')语句,把模型直接加载到品种主连上,系统会自动调用主连链回测。
1、收盘价模型
主图显示信号、权益曲线。
右键菜单 -》回测报告-》月份合约线图,可以查看模型在月份合约k线图上的具体表现,原型指标线、变量数值等。
2、模型带有checksig等运行优化函数
主图上不显示信号和资金曲线。
右键菜单 -》回测报告,进行月份合约回测,可以对主连链包含的各个月份合约分别进行回测,也支持合并回测报告。

7、模型回测为什么不包括最新一天盘中的数据?
答:最新一天盘中的数据是实时变化的,如果回测包含了最新的数据,那么每次回测的结果都是不同的,不利于对回测报告进行对比和研究。
对于量化研究来说,晚一天并不会产生很大影响。每日收盘以后,就可以对当天的数据进行回测了。


8、什么是杠杆倍数?
答:杠杆倍数 = 最大资金使用率 / 保证金。为什么看测试报告一定要看杠杆倍数?因为杠杆倍数直接影响收益率。
例如:同样的模型、初始资金、保证金比例,假设杠杆倍数为1时,收益率是20%。这时加一倍的仓,杠杆倍数变为2,那么收益率就会变成40%。会发现多出的盈利并不是量化策略带来的,是因为加大了资金使用率,但也同时扩大了风险。所以一个模型的收益率,必须是在一个合理的杠杆倍数下才有参考意义。

9、权益和损益有什么区别?
答:权益计算的是账户可用资金和持仓保证金,是包含了浮动盈亏的,但这些浮动盈亏在你没有平仓以前还没真的变现,最后实际平仓变现时候,金额可能会有变化;而损益计算的是每次持仓为0时,账户的可用资金,是不包括浮动盈亏的,所以一般损益回撤更能体现本金真实的回撤情况。

10、胜率和盈亏比哪个更重要?
答:评价一个模型,不能单只看收益率的,胜率和盈亏比是二个更重要的评价指标。
胜率和盈亏比就像一对兄弟,最理想的状态是高胜率的同时又能保证高盈亏比,遗憾的是这种情况只能是理想状态,实盘交易过程中是不存在这种情况的。
不同类型的交易策略对胜率和盈亏比的评价标准和倾向也不同。短线交易,高频、震荡回归策略,具有高胜率、低盈亏比的特点;而长线交易,常见的趋势跟踪策略,往往是低胜率、高盈亏比。理论上盈亏比和胜率的乘积大于0.6的模型就是可以盈利的,乘积越大代表模型越好。
低胜率也是可以盈利的。例如:10次交易,7次亏损3次盈利,胜率仅为30%,但是只要盈亏比超过2.4,相当于每次亏损1元、盈利2.4元,10次交易最终还是盈利的。
对于长线趋势策略而言,一个品种一年中出现明显趋势的次数并不多,模型能否成功的关键是抓住大的趋势波动,所以胜率是很难达到很高的水平的,这时想办法提高盈亏比,让利润充分奔跑,更容易获得较高的收益。

11、夏普比率是什么意思?
答:夏普比率代表了每承受一个单位的风险,会产生多少的超额收益。夏普比率大于1,代表收益高于风险。
期货交易中有个显著特点,预期收益越高,需要承担的交易风险也越大;预期收益较低,承担的交易风险也相对较低。而对于一个理性的交易者,追求的往往是在固定所能承受的风险下,追求最大的收益;或在固定的预期收益下,追求最低的风险。而夏普比率正是衡量风险收益比的指标,收益相同的两个模型,一般会选择夏普比率更高的模型,因为这个模型相对风险较低。


12、参数优化中枚举和遗传是什么意思?
答:参数优化的计算实际上就是将所有参数的全部排列组合都计算一遍,找到最优的结果。但是在参数较多的情况下,即使是在较高的计算机硬件水平下,也可能需要几个小时,甚至几天时间才能计算完成,这样效率实在太低了。
参数优化中的“枚举”是一个初选的过程,通过设定计算步长、参数关系表达式,降低计算量、提高优化效率。虽然是初选,但实际不影响优化效果,因为量化交易要选择的参数是需要具备一定适应性的,不能是极值。一个“孤岛”型的参数,往往会带来过度优化的问题。
当从软件里以排序的方式显示出的参数组中选择好了参数以后,可以继续使用遗传功能进行精调,通过对比不同参数的收益、胜率、盈亏比等信息,最终确定最佳参数组合。

13、敏感性测试是做什么用的?
答:模型回测时,滑点越大,模型收益率肯定越低,但是滑点对收益率的影响幅度有多大,是很难从测试报告中看出来的。敏感性测试可自动绘制出滑点逐渐增大时,收益率、胜率、回撤等数据的变化曲线,评估的是模型的实战能力。
实际交易过程中发现,很多模型回测报告中的收益非常好,但是一到实盘运行收益就大打折扣。很多时候是因为回测报告是在固定的手续费和滑点状态下测试的,实战中,一旦手续费或滑点增大,有些模型收益就会大幅降低。敏感性测试就是为了让投资者提前发现策略的这种风险。

14、策略模型,实盘运行和回测效果一致?
答:运行模组,是运行模型的功能模块,支持全自动交易,运行效果和回测是一致的。
模组,支持256个运行单元,实现多品种、多策略、多周期组合交易。模组为每个单元分配独立的资金,用来管理当前策略的持仓和资金变化,各单元独立运行,互不干扰。模组运行时,你需要把你实盘资金账号的资金,分配给各个运行单元,各个运行单元的资金的总和,不能超过账户总资金的。
对于做信号监测的初级量化需求,可以把模型加载到页面盒子里运行。页面盒子支持256个模型的信号监测,信号满足条件会弹出下单提示窗口。页面盒子适合运行那些只包含信号策略语句,不涉及资金管理的基础模型;页面盒子也适用于模型开发阶段,监测和验证基础策略部分的信号计算的有效性。

15、模组新建运行单元,数据起始时间、信号计算起始时间怎么设?
答:数据起始时间根据你模型里对历史k线数据的统计参数来定,例如你的模型用到了20日均线,那么数据起始时间就需要指定为1个月以前的日期(一个月22个交易日)即可。不适合把回测用到的很多年的k线数据都加载到模组的,那会影响模组运行速度。
    信号计算起始时间,一般指定下一个交易日,因为你从下一个交易日开始做实盘交易,以前的历史信号对你没有用处的。

 
 
 
 

 
 
 
 
 
 
 

[此问答已经被作者于2022/7/31 6:11:20编辑过]

(来源:文华财经)

领主 管理员

热门评论
:
该帖子评论已关闭
图片审查中...
编辑答案: 我的回答: 最多上传一张图片和一个附件
x
x
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索