程序员如何学习量化交易,一文总结

程序员如何学习量化交易,一文总结最近有位金融行业的朋友想把一个盈利能力很强的策略做成量化程序遇到问题,问题是这样的线程A在while(true)的循环里做条件判断,循环耗时1分钟。循环结束判断条件满足的时候调用交易接口下单建仓。想实现条件成立马上建仓,而不需要等待1分钟的循环。想通过多进程或者多线程方式,但两个线程不知道如何交互。对有经验的开发来说这样的逻辑很简单,只要通过线程通信的方式就可以实现。A线程判断到满足条件就发个消息给B线程,B线程while(true)等待消息就行。技术本身不复杂,只是没接触过编程的不知道还可以这么干

大家好,又见面了,我是你们的朋友全栈君。

最近有位金融行业的朋友想把一个盈利能力很强的策略做成量化程序遇到问题,问题是这样的

线程A在while(true)的循环里做条件判断,循环耗时1分钟。循环结束判断条件满足的时候调用交易接口下单建仓。想实现条件成立马上建仓,而不需要等待1分钟的循环。想通过多进程或者多线程方式,但两个线程不知道如何交互。

对有经验的开发来说这样的逻辑很简单,只要通过线程通信的方式就可以实现。A线程判断到满足条件就发个消息给B线程,B线程while(true)等待消息就行。技术本身不复杂,只是没接触过编程的不知道还可以这么干。很多普通的技术对非计算机行业的来说都很神秘,比如像GET或者POST请求,对程序员来说再熟悉不过,但很多刚入行的交易员对http请求是啥都不了解。转行量化交易,这两个行业各有各的难处,只是计算机出身的天生有比较强的行业兼容性,比起其他行业来说更容易上手。

“更容易上手”不是说有“三天入门,七天精通”的方法,我前后花了至少也有一年半时间才算精通。其间写了几万行代码,光量化数据就有几个G。实盘也是踩了不少坑,交了不少学费才开始盈利。支撑我花这么多精力去做的原因也很简单,上线了一个靠谱的量化模型后每天只需要花两分钟看一下模型是不是正常运行,然后看一下盈利了多少钱就行了,这躺赚的滋味就是我人生的追求啊。

在这里插入图片描述

量化交易本质上是通过把策略程序化实现自动交易的方法,可以分三个部分

· 交易策略
· 支撑系统
· 工作流程

交易策略程序化的优势太多了。有手工交易经验的就知道,在投资市场上最难的是克服人性的缺点,贪婪,恐惧,侥幸。有句话说凭运气赚的钱,也会凭本事亏掉,如果你买入一个股票,但说不出为什么买,给不出合理的理由,那你可能并不是在投资,而是在稳定地亏钱。有了量化程序就像有了个替你24小时工作的机器人,她可以同时关注几十个数据源,在海量数据里找到最可靠的买入时机。她木得感情,不需要休息,每个决策都有理有据,永远不会犯错。

量化交易要求你的策略必须是可回测,可预期的。同样数据的情况下,得到的决策应该只有一个,而不是刚刚买入,看到跌了两个点就开始后悔刚刚不应该买。并且你的策略要经得起推敲,起码要能经得起历史数据的回测。这些年在回测环节被我们废掉的策略太多了,有些策略只是一两个月内看起来不错,而有些策略虽然经得起几年的回测,但它最高的浮亏亏掉本金接近80%,也是我们淘汰的理由。十个策略最终能上线一个就不错了,像下面这个策略,1万本金10年盈利10万,最高峰只亏损10%,我们才有信心把它放到实盘去跑。

在这里插入图片描述

我们做量化交易的,第一件事是程序化策略,这就要求策略本身是可以归纳的,可以是以指标为参考,以财报为参考,或者以市盈率为参考,总归需要能用逻辑描述。有说我炒股就靠盘感的,“我觉得要涨了”,要是你能把“感觉”也程序化请尽快联系我,我想学。实在要是想不出策略那也好办,抄一个就完了。我的第一个策略也是从网上找的,叫“马来28”。上线模拟盘一个星期盈利2000多,可惜好景不长,一个月后就因为浮亏太高爆仓了。

(图)

爆仓的根源在于马来28是一个纯马丁的策略。这是个在数学证明上胜率100%的策略,但在实际操作上要达到100%胜率必须配合无限的资金。它相当于在一个博弈游戏中只有大和小两种情况,第一次押错的情况下第二次继续押同一个,并且翻倍下注量。连续开大或者开小的概率是0.5的n次方,逐渐趋近于无穷小,因此概率上能实现100%胜率。这个策略的问题是在不知道确切概率的情况下只能用无限的资金去加仓,是一个只存在于理论上的策略。

所以策略上线前要经过详细回测,对它的盈利能力和浮亏心里有数,知道用多大资金量可以做到多少盈利。最近上线的这个量化模型经过两个多月的回测和优化,模型刚落地时盈利能力很夸张,一个月翻近10倍,但我们还是要优化掉。优化的目的是知道它的极限盈利能力,然后降低盈利,同时降低它的风险。任何一个投资都不应该超过年化40%的盈利,要是谁跟你说他一年能翻几倍,那你得想想到底谁才是韭菜。

(图)

大部分模型的盈利不是一条直线,稳定盈利是不可能的。下面是我正在用的30天10%盈利的模型。
在这里插入图片描述

不是说没有一年超过40%的吗,这一个月不就10%了?其实单看一个月的话是10%没错,你要是问我能不能保持每个月都10%利润,坦白说我做不到。这里面会用一部分利润去做风险控制。把时间拉长到3个月,利润并没有到30%,不见了的利润去哪了呢?这些利润会被风控平掉,让仓位的风险不至于太高,随时可以平仓走人。

在这里插入图片描述

又有人说,那我只做一个月行不,赚10%就走。理论上当然也行,但我没法跟你保证你进场就能马上开始盈利。要是谁说他知道完美的进场和出场时机,想想他为啥告诉你,告诉你有什么好处,有这本事还不如买彩票去啊。

所以也不要神化量化交易。程序员出身的应该对数学有敏感性,做量化交易是想找到一个数学模型,在概率上能和资金配合并且把资金收益最大化。通过自动化的方式避免人工交易中容易受到情绪影响导致的判断失误。量化交易本身不神秘,只要愿意花时间,找到正确的方法,程序员出身的很快就能上手量化交易。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/153215.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python 爬虫 校花网[通俗易懂]

    Python 爬虫 校花网[通俗易懂]爬虫:是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。福利来了校花网 ,首先说为什么要爬这个网站呢,第一这个网站简单爬起来容易,不会受到打击,第二呢你懂得…。1.第一步

    2022年8月4日
    3
  • QTreeView使用系列教程目录

    QTreeView使用系列教程目录写这篇文章的目的是为了,让大家很容易上手进行QTreeView的开发,所以会先讲下原理,让大家大概明白了,再进行实操。网上很多讲QTreeView+model开发方式的文章,一上来,就是一堆代码,可能对初学者不是很好入手。介于这块知识较多,所以打算出个系列,详细讲解一下各方面的使用。1、《Qt之Model/View框架介绍》:系列教程之一2、《QTreeView+QDirModel…

    2022年6月10日
    47
  • Android视频编码_安卓视频解码器

    Android视频编码_安卓视频解码器SVideoRecorder(https://github.com/yellowcath/SVideoRecorder)使用Android原生的MediaCodec进行视频录制,对比大量使用FFmpeg进行录制的库优点如下:体积小 :编译后的aar只有187K,ffmpeg一个so就7、8M,精简之后也差不多还有一半大小 速度快 :在huaweiP9上,720P的一帧:  FFmpeg编码…

    2022年8月31日
    2
  • 做高通平台安卓驱动感言

    做高通平台安卓驱动感言

    2022年2月2日
    373
  • C++ 序列化和反序列化

    C++ 序列化和反序列化序列化序列化1、背景2、定义3、序列化评价指标4、序列化实例参考序列化1、背景1、在TCP的连接上,它传输数据的基本形式就是二进制流,也就是一段一段的1和0。2、在一般编程语言或者网络框架提供的API中,传输数据的基本形式是字节,也就是Byte。一个字节就是8个二进制位,8个Bit。二进制流和字节流本质上是一样的。对于我们编写的程序来说,它需要通过网络传输的数据是结构化的数据,比如,一条命令、一段文本或者一条消息。对应代码中,这些结构化的数据都可以用一个类或者一个结构体来表示。序

    2022年6月17日
    24
  • 群晖自带内网穿透_群晖内网解析

    群晖自带内网穿透_群晖内网解析1.打开docker程序,注册表搜索blichus找到blichus/wyc_linux_64双击下载2.下载完成在左侧映像找到刚才下载的镜像,双击配置启动3.点高级设置4.勾选启用自动重新启动5.网络勾选使用与dockerhost相同的网络6.环境选项卡点加号前边大写TOKEN(务必大写一致)后边值填写你的隧道token7.最后点应用完成就可以了,每次在网页端修改隧道之后要记得重…

    2022年8月31日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号