现货合约量化机器人开发对冲交易策略
自动交易系统由几个元素组成。您需要决定要交易的市场,创建特征来识别交易逻辑并制定策略来实施该逻辑来买卖货币。您的系统应该决定何时进入和退出交易,考虑交易成本并通过回测(但不是过度拟合)进行优化。
首先要先确定量化投资组合研发的框架:
一、图表和数据:利用第三方网站或者软件的数据下载后建立组合。
二、策略和回测:利用第三方平台建立组合,对策略进行优化和调整。
三、智能投资:公司自己购买数据,建立自己的底层平台,拥有自己的核心算法
第二步我们要知道正期望的交易系统需要满足哪些条件?
一个交易系统,假设胜率是 P,赢亏比是 R=W/L,系统期望值为 M。
M=P*W-(1-P)*L
正期望系统一共有三个
一、高盈亏比及高胜率
二、低盈亏比及高胜率
三、高盈亏比及低胜率
正期望值系统:
给大家分享两种常见的盈利系统:
1、操作方式是盈亏比放大,运用趋势跟踪交易,靠放大盈亏比获利。
模型:海龟趋势交易系统
2、盈亏比为 1:1 的趋势交易,止损适当放大,靠胜率优势来获利。
模型:日内随机交易系统
第三步就是量化投资组合研发:好的组合能让整个账户的资金曲线更好的增长,那怎么设计组合呢?
1.智能组合生成:根据投资者的投资回报率,生成该回报率下性价比最高(风险最低)的投资组合。
2.智能组合筛选:查看投资组合过往表现及预期未来投资结果,筛选投资组合。
3.智能组合购买:一键购买,同步买入组合所有品种。
4、智能组合收藏:方便管理,保存购买组合的详细信息,包括品种名字和品种占比
5、智能组合账户跟踪:通过手机 App 和微信查询投资组合的净值变动,月度提醒组合的调仓管理。
我们在其中保存市场行情信息。我们希望我们的系统可以处理各种市场行精,所以我们先讲一下通用的方法。但是我们要开发的是一个简单的回测系统,所以在初期版本中,我们尽量将问题简化,等核心功能全部实现之后,我们再添加这些可扩展功能比较合理。
我们先来定义一个金融分析系统的配置类:
class FasConfig(object):
TDT_ASDK='asdk'#A 股日 K 线数据
def init(self):
self.name='fas.bktr.FasConfig'
def new_tick_data(self,tick_data_type,symbol,timestamp,**args):
if tick_data_type==FasConfig.TDT_ASDK:
return AsdkTickData(symbol,timestamp,
open_price=args['open_price'],
high_price=args['high_price'],
low_price=args['low_price'],
close_price=args['close_price'],
total_volume=args['total_volume']
)
return None
fas_config=FasConfig()
我们在其中定义了 FasConfig 类和一个实例,在类中我们定义了 TickData 类型的常量,目前我们只研究 A 股 K 线行情,因此只有一个常量定义,后面随着系统越来越完善,会定义更多的常量。
我们在 new_tick_data 方法中,生成一个新的 TickData 子类实例。tick_data_type 指定子类类型,symbol 是金融标的代码,timestamp 是时间点,**args 是以字典形式传过来的可变数量参数。由上面的代码可以看到,这个方法最终会生成一个 AsdkTickData 类实例。
下面我们来看市场数据类:
class MarketData(object):
def init(self):
self.name='fas.bktr.MarketData'
self.__tick_datas={}
def add_close_price(self,symbol,timestamp,close_price):
if symbol not in self.__tick_datas:
tick_data=fas_config.new_tick_data(
fas_config.TDT_ASDK,symbol,timestamp,
open_price=1.0,high_price=2.0,low_price=3.0,
close_price=4.0,total_volume=5.0
)
print('tick_data:{0};'.format(tick_data.close_price))
在这个类中,我们定义私有属性__tick_datas 来保存行情数据,其是一个字典,键值为标的代码。
在 add_close_price 方法中,如果标的代码不在行情字典中,则生成一个新的对应的 TickData 子类实例。请大家注意,前面 3 个参数分别指定的 TickData 的子类,标的代码和时间点,后面的参数会形成**args 参数表示的字典。这样就可以生成任意的行情数据类了。
评论