写点什么

现货合约量化机器人开发对冲交易策略

  • 2023-03-16
    广东
  • 本文字数:1547 字

    阅读完需:约 5 分钟

现货合约量化机器人开发对冲交易策略

自动交易系统由几个元素组成。您需要决定要交易的市场,创建特征来识别交易逻辑并制定策略来实施该逻辑来买卖货币。您的系统应该决定何时进入和退出交易,考虑交易成本并通过回测(但不是过度拟合)进行优化。


首先要先确定量化投资组合研发的框架:


一、图表和数据:利用第三方网站或者软件的数据下载后建立组合。


二、策略和回测:利用第三方平台建立组合,对策略进行优化和调整。


三、智能投资:公司自己购买数据,建立自己的底层平台,拥有自己的核心算法


第二步我们要知道正期望的交易系统需要满足哪些条件?


一个交易系统,假设胜率是 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 参数表示的字典。这样就可以生成任意的行情数据类了。

用户头像

技术开发咖 2020-10-28 加入

区块链开发技术观察员

评论

发布
暂无评论
现货合约量化机器人开发对冲交易策略_量化策略_薇電13242772558_InfoQ写作社区