比特币「瀑布式」跌破 8000 美金,我却在大跌中赚了些钱,靠的竟是最朴素的量化策略。steemCreated with Sketch.

in cn •  7 years ago 

生怕被各位看官说我是标题党,赶紧晒出收益截图,如下:

lianghuatouzi-bitmex.png

使用的平台是:Bitmex.com

解释一下:

  1. 我在 9890.00(开仓价格)做空了 1000 美金等值的比特币;
  2. 我用了 5 倍的杠杆,也就是相当于我实际上花 200 美金的保证金;
  3. 如果爆仓,也就是价格涨到强平的价格 12254.5 美金,我就会损失这 200 美金;
  4. 幸运的是,比特币大跌,而我截图的时候,比特币价格是 8083.02 美金,因此我的收益率差不多是 111.81%
  5. 因为收益自动加到了保证金里面,所以你看到了 0.0429XBT 里面既有我的收益又有我最开始的保证金,差不多 350 美金。

问题来了,为什么我会在 9890.00 这个点位做空?

一、朴素的 MA 移动平均线策略

lianghuatouzi-bitmex-down

这两天随便搜一下「比特币」,满眼都是「暴跌」、「崩塌」、「腰斩」、「猛跌」,但如果你要看到这些新闻再去做空,可能已经晚了。

那看看下面这张图,你第一反应,一定是在开始下跌的时候,就做空一定是最好的。你还会凑巧地发现,那个地方有个蓝色的十字,对应的价格差不多就是 9900 美金上下。

lianghuatouzi-bitmex-ma-cross-sel

而这个十字信号的产生就要归功于这个朴素的量化投资策略——「MA 均线策略」

双均线策略是量化策略中经典的策略之一,其属于趋势跟踪策略,基本实现思想如下

  1. 预设两条均线:比如一个 ma = 5,一个 ma = 60, 短期均线 5 被称作快线,长期均线 60 被称作慢线
  2. 快线比慢线更活跃,上蹿下跳
  3. 当短期均线上穿长期均线(ma5 上穿 ma60)称为形成金叉买点信号,执行买入
  4. 当短期均线下穿长期均线(ma5 下穿 ma60)称为形成死叉卖点信号,执行卖出

上图中的红线和绿线就分别代表短期均线和长期均线,那个卖空点就是因为红线下穿绿线,产生了死叉,执行卖出。

二、打造一个量化投资机器人

大家都知道,虚拟货币交易市场是 24 小时交易,这个点位还算好,是下午 4 点,不过日期是 2 月 1 日,星期四,我可能是在开会或者是在忙工作上的事情,这个做空操作完全是量化投资程序自动执行的,这就是量化投资的另一个优势,自动化程序交易。

为了简化描述这个量化程序,我们写一些伪代码作为示意,重点说说这个朴素的 MA 双均线策略的实现。

# -*- coding: utf-8 -*-
"""
@author: davidfnck
@wechat: fromfriend020 
@email: [email protected]
"""
import pandas as pd

# === 策略产生信号
# 计算移动平均线(使用小时 K 线)
def signal_ma(df, ma_short=9, ma_long=26):

    # ===计算均线
    df['ma_short'] = df['Close'].rolling(ma_short, min_periods=1).mean()
    df['ma_long'] = df['Close'].rolling(ma_long, min_periods=1).mean()

    # ===产生买入信号
    # 最新一个 K 线计算出的短期均线大于等于长期均线
    condition1 = (df['ma_short'] >= df['ma_long'])
    # 上个一根 K 线计算出的短期均线小于长期均线
    condition2 = (df['ma_short'].shift(1) < df['ma_long'].shift(1))
    # 发出信号
    if condition1 and condition2:
        return '买入信号'

    # ===产生卖出信号
    # 最新一个 K 线计算出的短期均线小于等于长期均线
    condition3 = (df['ma_short'] <= df['ma_long'])
    # 上个一根 K 线计算出的短期均线大于长期均线
    condition4 = (df['ma_short'].shift(1) > df['ma_long'].shift(1))
    # 发出信号
    if condition3 and condition4:
        return '卖出信号'

# === 执行操作
if __name__ == '__main__':
    While true:
        # 通过交易所 API 读取最新数据和 K 线数据
        df = 获取数据()
        # 获取信号并执行
        signal = signal_ma(df, ma_short=9, ma_long=26)
        if signal = '买入信号':
            print '我买入了'
            
        elif signal = '卖出信号':
            print '我卖出了'
            
        else:
            print '我闲着' 
        Sleep(60000)   

以上代码只是演示,在数据整理、定时程序的设置等还有很多细节,但思路就是每分钟甚至每秒钟读取最新价格数据,计算均线,产生信号,自动执行操作。其中最要注意的就是「上穿下穿」,这个判断是要判断两个时间段的数据大小,需要同时发生,才能最终确定是穿越。

三、量化策略真的那么好?

如果你觉得这个朴素的策略真好的时候,我必须要破一盆冷水。

1、如果你就在那个点位做空了,什么时候平仓?如下图,平仓完了还再做空吗?那为什么先要平仓浪费手续费呢?

lianghuatouzi-bitmex-ma-cross-decide.png

2、看了上图你会觉得这个 MA 双均线策略挺准,就算损失点手续费也行,完全照这个来,你再看看下图,怎么抗住这个震荡?你就会看到收益曲线「瀑布式」暴跌了。

所以,如果你感受到了这其中魅力,想立马就投身到这个行业,你会体会到短暂的喜悦,回头看看不会量化的自己,就像一个手持木棍的原始人,在金融投资领域张牙舞爪「喔喔~吼吼~」,不知道面对的对手是手持重机枪的现代战士。幸运的你,看完这篇文章,开始学习的话,已经算是小米加步枪了。

这之后便是漫长的摸索,数据梳理、策略研究、参数调优、投资理念、思想提升……每一个环节你都应该找到一个最好的老师来教你。

四、老师,我想学量化!

嗯,不知道你内心是不是这个想法,假如是,那么经管之家量化投资学院 2018 年的推出「成就下一位投资大师」就业班,就是你最好的选择。

北京、上海现场开班,全国远程授课,最近一期 3 月开课,火热报名ing!扫码了解详情,或直接找我咨询。

人物海报03-竖版海报

如果你对课程感兴趣,也可以直接联系魏老师:

魏老师
QQ: 2881989714
Tel: 010-68478566
Mail: [email protected]

或者可以点击「课程链接」了解详情。

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

A good advertisement