首页 > 其他分享 >量化交易开发之初识量化(一)

量化交易开发之初识量化(一)

时间:2024-01-19 14:02:48浏览次数:20  
标签:策略 平均价 回测 初识 开发 量化 交易 模拟


量化交易开发之初识量化(一)

如果你想量化交易快速入门

1. 从零开始教编程。 本教程中则会从零开始教编程,解决量化入门过难过编程门槛这一问题,绝不讲复杂的程序语法。
2. 量化与编程相结合。本教程不仅会教少量的编程,而且会尽量结合量化场景,减少"我要做量化交易,为什么要学习编程?!"的愤懑。
3. 简易精炼,快速入门。尽量讲解最核心最常用的知识,助你快速摆脱想学习量化却处处陌生不知所措的茫然的新手阶段。

本系列课程将开启手把手保姆级实战课程,开发属于你自己的量化策略!!!


一、为什么需要量化交易?

它能让你的交易效率提高百倍,量化交易之于传统交易方法,如同大型收割机之于锄头镰刀,机枪大炮之于刀剑棍棒。

也就是说,传统交易方法是这样的:

量化交易开发之初识量化(一)_实战教学

而量化交易是这样的:

量化交易开发之初识量化(一)_实战教学_02

在金融最为发达的国家,美国,量化交易已大行其道,占据了70%以上的股市成交量。可以说量化交易是未来的趋势。当然,只言片语不能解释清楚,接下来,我们具体介绍下量化交易。


二、何为量化交易?

量化交易是指借助现代统计学和数学的方法,利用计算机技术来进行交易的证券投资方式。便于理解的说,量化交易主要是做这样的事:

1. 从一个灵感开始

  • 灵感就是指那些你想验证的可能会盈利的方法,比如银行股可能是良好的投资品种、一旦跨过20日后股价会继续涨、流传许久的羊驼交易法等等。灵感获取的方式可以是阅读、听人说、自己悟等。
    这里我们以一个简单的情况为例进行讲解。比如你的灵感是这样的:
如果股价显著低于近几日的平均价,则买入;

如果股价显著高于近几日的平均价,则卖出;

2. 把灵感细化成明确的可执行的交易策略

  • 一般灵感都很模糊,需要将其细化成明确的可执行的策略,目的是为了能得到确定的结果,以及为后续程序化准备。
    比如,你通过阅读了解到索罗斯的反身性概念,想将它应用到股市,这个反身性就很模糊,就需要明确什么条件下买卖,买卖什么品种,买卖多少量等,从而形成一个明确的交易策略,让不同人根据你的描述在相同情形下都能做出相同的操作。
  • 继续以之前那个关于平均价的灵感为例:
如果股价显著低于近几日的平均价,则买入;

如果股价显著高于近几日的平均价,则卖出;
  • 显然它是不够明确的。比如多低叫显著低于?多高叫显著高于?近几日究竟是几日?买入卖出是买卖多少?我们把它细化:
如果股价低于近20日平均价10%,则用全部可用资金买入;

如果股价高于近20日平均价10%,则卖出全部所持的该股票;
  • 还有一点不明确的地方,买卖哪个股票呢?我们认为这个交易方法盈利与否应该跟交易哪个股票关系不大,但st股票除外(知道st股票是一类有风险特别大的股票就好,详情请百度),所以股票的选择范围是除st股外的国内A股的所有股票。所以我们进一步细化:
每个交易日监测是除st股外的国内A股的所有股票的股价;

如果股价低于近20日平均价10%,则用全部可用资金买入该股票;

如果股价高于近20日平均价10%,则卖出全部所持有的该股票;

(5) 现在我们基本已经把之前的灵感细化成明确的可执行的交易策略。当然,可能还有些地方不够明确,也可能有些细节还不确定要改动,这些可以随时想到随时再改,不必一次做到完美。

3. 把策略转成程序

  • 就是把明确后的策略通过编程转成程序,好让计算机能根据历史数据模拟执行该策略,以及能根据实际行情进行反应并模拟交易或真实交易。
  • 简言之,就是把刚刚的策略翻译成计算机可识别的代码语言,即把这个:
    每个交易日监测是除st股外的国内A股的所有股票的股价;
    如果股价低于近20日平均价10%,则用全部可用资金买入该股票;
    如果股价高于近20日平均价10%,则卖出全部所持有的该股票;
  • 写成类似这样的代码(下面的代码并不完全符合,只是展示下大概的样子):
def initialize(context):
        g.security = ['002043.XSHE', '002582.XSHE']
    
    def handle_data(context, data):
        for i in g.security:
            last_price = data[i].close
            average_price = data[i].mavg(20, 'close')
            cash = context.portfolio.cash
            if last_price > average_price:
                order_value(i, cash)
            else last_price < average_price:
                order_target(i, 0)
  • 这样一来,就把刚才细化好策略转成了代码程序,计算机就能运行了。这个过程你可以理解成用计算机能听懂的语言(代码),把你的策略告诉给计算机了。

4. 检查策略效果

现在计算机理解了你的策略,你现在可以借助计算机的力量来验证你的策略了。基本的检验策略方法有回测和模拟交易两种方法。

回测是让计算机能根据一段时间的历史数据模拟执行该策略,根据结果评价并改进策略。继续之前的那个均价的策略例子的话就是这样的:

设定初始的虚拟资产比如500000元、一个时期比如20060101到20160101,把这一时期的各种数据如估计股价行情等发给计算机,计算机会利用这些数据模仿真实的市场,执行你刚才告诉它的策略程序。最后计算机会给你一份报告,根据这个报告你就会知道,在20060101的500000元,按照你的策略交易到20160101,会怎样?一般包括盈亏情况,下单情况,持仓变化,以及一些统计指标等,从而你能据此评估交易策略的好坏。

如果结果不好,则需要分析原因并改进。如果结果不错,则可以考虑用模拟交易进一步验证。

模拟交易是让计算机能根据实际行情模拟执行该策略一段时间,根据结果评价并改进策略。与回测不同,回测是用历史数据模拟,模拟交易使用实际的实时行情来模拟执行策略的。举例就是这样:

设定初始的虚拟资产比如500000元,选择开始执行模拟交易的时间点,比如明天。那么从明天开始,股市开始交易,真实的行情数据就会实时地发送到计算机,计算机会利用真实的数据模仿真实的市场,执行你的策略程序。同时,你会得到一份实时更新的报告。这报告类似于回测得到的报告,不同的是会根据实际行情变化更新。同样你能据此评估交易策略的好坏。

可见,回测是用历史数据模拟执行策略,模拟交易是用未来的实际行情模拟执行策略。如果策略在回测与模拟交易的表现都非常好,你可以考虑进行完全真实的真金白银的实盘交易。

1. 实盘交易

实盘交易就是让计算机能自动根据实际行情,用真金白银自动执行策略,进行下单交易。注意,这时不再是用虚拟资产模拟交易,亏损和盈利都是真实资金。实盘交易一般也会给出一份类似模拟交易的会不断更新的报告,从而不断要观察策略的实盘表现并及时调整与改进策略,使之持续平稳盈利。


三、量化交易的价值何在?

  • 量化交易的价值有很多,只提下最突出的价值所在。
  • 可以利用大量历史数据检验策略,效率提升百倍。当我们想验证交易策略的时候,一个基本的想法是想知道它在历史上表现如何,这往往需要大量的历史数据与计算量,量化交易做一次回测可能几分钟就可以得到结果了,相比于传统人工做法效率的提升是成百倍的。
  • 更科学更客观的衡量交易策略的效果。比如一个关于某技术指标的策略,人工的进行了10个交易日的验证,效果都不错,但这就能说明这指标不错吗?不,10次太少了,你需要更多的验证,比如1000个交易日,人工验证不可行,量化交易则又快又准。而且量化交易还可以利用数学与统计学自动给出客观的结果,比如年化收益率、最大回撤率、夏普比率等。
  • 全市场实时捕捉交易机会。当你知道一个盈利条件,当股价一旦满足这条件,你就可以操作盈利。问题是,市场几千个股票,股价时时刻刻都在变动,你能盯住几个,你会错失多少个机会。但量化交易可以利用计算机全市场实时盯盘,可以不错过任何交易机会,加倍你的盈利能力。
  • 更多的盈利机会。量化交易可以利用计算机对海量数据分析得到常人难以发现的盈利机会,而且有些机会只有量化交易才能利用。比如你发现一种交易方法,其特点是盈亏的额度相等,但盈利的概率是55%,亏损概率45%。首先这种小差距的概率规律,非量化交易不能发现,其次,要利用这个规律盈利需要大量次数的交易才能稳定盈利,这也非量化交易不可。


四、做量化交易需要什么?

  • 通常一个投资者做量化交易所需要做的准备,就如同让一个农民自己去造一个大型收割机,从0开始做起,极度困难,所以量化交易最初在金融与科技最为发达的美国由少数顶级精英发起的。
  • 要有各种数据。要有能方便使用的各种投资相关的数据。这要考虑到各种数据的收集、存储、清洗、更新,以及数据取用时的便捷、速度、稳定。
  • 还要有一套量化交易的系统,要有能编写策略、执行策略、评测策略的系统。这要考虑到系统对各种策略编写的支持、系统进行回测与模拟的高仿真、系统执行策略的高速、系统评测策略的科学可靠全方面。


五、未完待续

下章将继续介绍量化策略的基本框架。

欢迎关注知乎:北京不北

欢迎关注douyin:near.X (北京不北)

欢迎+V:beijing_bubei

获得免费答疑,长期技术交流。


六、参考文献

标签:策略,平均价,回测,初识,开发,量化,交易,模拟
From: https://blog.51cto.com/u_16419576/9329354

相关文章

  • #星计划# 浅谈OpenHarmony的NDK开发
    背景NativeAPI(NDK)入门NativeAPI是OpenHarmonySDK上提供的一组native开发接口与工具集合(也称为NDK),方便开发者使用C或者C++语言实现应用的关键功能。NativeAPI只覆盖了OHOS基础的一些底层能力,如libc,图形库,窗口系统,多媒体,压缩库等,并没有完全提供类似于JSAPI上的完整的OHOS平台......
  • 如何使用MindStudio轻松搞定大模型全流程开发
    本文分享自华为云社区《【如何使用MindStudio轻松搞定大模型全流程开发》,作者:华为云社区精选。大模型的规模和能力在迅猛发展,更大的参数、更长的序列及更多的模态是未来大模型技术的发展趋势。更大的规模的模型意味着更大规模的算力平台,算力设备的部件与任务之间的复杂关系导致......
  • 小程序开发实战案例五 | 小程序如何嵌入H5页面
    在接入小程序过程中会遇到需要将H5页面集成到小程序中情况,今天我们就来聊一聊怎么把H5页面塞到小程序中。 本篇文章将会从下面这几个方面来介绍:小程序承载页面的前期准备小程序如何承载H5小程序和H5页面如何通讯小程序和H5页面的相互跳转 小程序承载页面的......
  • 基于 SpringBoot + magic-api + Vue3 + Element Plus + amis3.0 快速开发管理系统
    Tansci-Boot基于SpringBoot2+magic-api+Vue3+ElementPlus+amis3.0快速开发管理系统Tansci-Boot是一个前后端分离后台管理系统,前端集成amis低代码前端框架,后端集成magic-api的接口快速开发框架。包含基础权限、安全认证、以及常用的一些组件功能。项目......
  • HarmonyOS SDK,助力开发者打造焕然一新的鸿蒙原生应用
    鸿蒙生态千帆启航仪式于1月18日正式启动。从2019年HarmonyOS正式发布到2020年“没有人能够熄灭漫天星光”,今天,满天星光终汇成璀璨星河,HarmonyOSNEXT鸿蒙星河版重磅发布,带来了全新架构、全新体验、全新生态。作为支撑鸿蒙原生应用开发的技术源动力,HarmonyOSSDK将系统......
  • Flask企业级后台管理 Python 应用开发框架
    项目介绍一款Python语言基于Flask、Layui、MySQL等框架精心打造的一款模块化、高性能、企业级的敏捷开发框架,本着简化开发、提升开发效率的初衷触发,框架自研了一套个性化的组件,实现了可插拔的组件式开发方式:单图上传、多图上传、下拉选择、开关按钮、单选按钮、多选按钮、图片裁......
  • C# 开发经验
    C#泛型作为返回类型的写法publicstaticTGetObj<T>(Employeemodel){Tresult=default(T);if(modelisT){result=(T)(object)model;//或(T)((object)model);}returnre......
  • 初识Java
    初识Java一场旷日持久的战争故事:Java帝国的诞生C&C++1972年C诞生贴近硬件,运行极快,效率极高。操作系统,编译器,数据库,网络系统等指针和内存管理1982年C++诞生面向对象兼容C图形领域、游戏等反抗我们要建立一个新的语言:语法有点像C没有指......
  • 首次公开发声,OpenAI CEO 奥特曼回忆“宫斗门”丨 RTE 开发者日报 Vol.129
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(RealTimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑的个人观......
  • 开发者的API利器:Apipost
    在当今的数字化时代,数据流通是推动社会进步的关键因素之一。其中,API(应用编程接口)已经成为跨平台数据交互的标准。然而,API开发和管理并非易事,Apipost一体化研发协作赋能平台,支持从API设计到API调试再到API测试覆盖整个API生命周期的API管理平台,一起来看看Apipost有什么不同吧。一......