量化交易中收益来源和风险来源

许多年后,已经成长为韭菜盒子的阿韭,回忆自己还是韭儿的青葱岁月,他忘了金叉死×,忘了爆仓和心态,甚至忘了当年陪着他的那个她,但是他一定依稀记得,看过第五期的子楠讲量化。


量化交易中收益来源和风险来源_第1张图片
image

……

因为这一期讲到的东西,让他意识到了“弄清楚收益来源和风险来源”的重要性。

为了方便没有编程背景的人也能从“子楠讲量化”中受益,我会在专栏文章中,尽量不用代码,非要用也尽量用伪代码来实现功能。

每一个做投资的人,都接受过来自亲朋好友的一句灵魂拷问

“你凭什么赚钱”

或者延伸一下:

“凭啥你不亏钱”

大部分人只当遇到了踏谑自己的,反唇相讥回去。然而若细细思考,这便是一个好问题,而且是非常重要的问题。

你凭啥赚钱,换句话说就是,你的收益来源是什么。

大部分人面对这个问题,非常朴实地说“低买高卖”啊,我在低点买,高点卖,它不就赚了吗?那这就引申出了下一个问题。你凭啥判定一个点位是低点还是高点?

啥,你说你就是能感觉出来?瞎扯。我给你一截K线,你告诉我是高点是低点

量化交易中收益来源和风险来源_第2张图片

你说现在是高点是低点?

啥,你说你要看一下布林线?

量化交易中收益来源和风险来源_第3张图片

你说突破压力位了,低点无疑?接下来肯定涨?

量化交易中收益来源和风险来源_第4张图片

没想到吧?突破了一堆大V说的布林线,接下来跌跌不休。

你说不算数,让我再来一截?


量化交易中收益来源和风险来源_第5张图片

来,2次突破压力位了,你说是涨是跌?

吃到了刚才的教训,这作者肯定要戏谑我。于是你说,跌,肯定是跌:

量化交易中收益来源和风险来源_第6张图片

不好意思,一路上涨。

那你说涨到现在,是高点还是低点了呢?

不敢说了吧?接下来一个瀑布。

量化交易中收益来源和风险来源_第7张图片

这就是波形理论的SB之处。当前波形不符合,他就会去说这个只是暂时的,下一个波形肯定符合,下一个不符合,他就再说下一个肯定符合。
这就和生男生女一样,猜错了他就说你下一胎肯定男的/女的。

扯远了,我说这个的意思就是告诉你。这类的东西,你没确认他是有效的,那它就是无效的。就像吃药一样,所有的药物上市,都是先假设它是无效的,它必须证明他有效,才可以上市(除了中药,中药是除非治死一大堆人,且压不下去了被报道出来的时候,才能说他无效,否则被治死只能说命不好,不能说是富含毒素的中草药有问题。敢说他有问题还会被跨省抓人……啧啧)。

你的收益来源也是一样。你必须假设你现在的想法是错的,得通过“逻辑”或者“统计”的方式,证明它是有效的

你才能说他有效。

通过了证明的“盈利来源”,才是可信的盈利来源。

那么,接下来问题就很简单了。如何通过“逻辑”来证明有效呢?

很简单,比如我知道一个交易所,他raw_Kline_info的生成,是通过币安,火币等的价格和深度信息生成的。那么它相对于他对标的交易所,一定有一个延迟是不?

那么只要我能找到他的对标交易所,拟合出他画K线价格的算式,那么就能在他画K之前,获取他接下来画K的信息。通过这个价格信息。我们就知道了几百毫秒以内的,某个交易所的价格趋势信息。

看到这里,没有耐心的韭菜开开心心地准备写东西了。有耐心的韭菜还在继续做笔记。

因为到这里你还是没法获取收益……

为毛?因为交易是有手续费的。几百毫秒以内的价格变动,一般在万分之0.5左右。而交易所的手续费,也差不多是万分之一上下。而且此时你还得考虑你是taker还是maker,因为从逻辑上而言,taker,也就是吃别人的挂单,显然是更快,更稳能抓住趋势的。但是交易所的taker手续费往往比maker高一大截。而maker虽然手续费较低,经常还能拿到0手续费账户(比如这篇你给我转发出去,并给朋友称赞子楠讲量化是你看过最靠谱的节目,那我说不准下一期就分享一个拿前20的数字货币交易所2个月0maker手续费的方法……嘘。)但是maker的问题在于你得挂单等别人吃,根据我的经验,10次趋势判定,能被吃到一次就烧高香了。

发现问题没有?就算你能判定趋势,你也不一定能赚钱。那么这里你的收益来源,除了“能判定趋势”以外,就多出了一条你之前忽略的信息“并且能抓住趋势。”

能抓住趋势又分为2块:
1、能抢到单。
2、趋势涨跌带来的获利,能cover掉抢单的成本(手续费)。

这些加起来,才是你的收益和风险的来源。

来,复读一下:
1、找到一个对标A,B,C交易所价格的D交易所
2、拟合出D交易所对标其他交易所画K的算法
3、根据拟合出的算法,判定出D交易所某个交易对的短期趋势情况
4、根据判定好的趋势情况,通过挂单或者吃单来改变仓位
5、保证改变仓位的成本,低于你趋势带来的收益。

好的,这5点组成了你这一个策略的收益来源和风险来源。接下来布置第一个作业,把收益来源和风险来源从这5点中提取出来~

提取出来了以后干嘛呢?

回答你自己2个问题

1、你的收益来源靠谱不,你对盈利的假设,是否能通过逻辑,或者统计的证明?
2、你的风险来源能解决不?

每当你看着自己的交易系统,先对自己来这两个灵魂拷问,然后你才能理直气壮地回答“你凭什么赚钱”以及“你凭什么不亏钱”。

至于你如果嫌作业还不够,请在子楠讲量化子楠讲量化里把每一个教学策略的收益来源和风险来源分析出来。

有看到这里的同学可能要问了。那你光说了逻辑证明,统计证明呢?
回测啊……如果是数字货币的话,用FMZ回测:https://www.fmz.com/sign-up/1974419 ,用我的链接注册送5块钱的实盘额度哦~。
统计的话,一般是多个不同周期的数据回测,然后回测证明有效后,上模拟盘,实盘,实际跑一阵,即,(实盘)实践是(统计方法)检验(策略有效)真理的唯一标准。

策略伪代码(这里假设你看过子楠讲量化,写过中间层,这里只做逻辑层伪代码,不填充内容,容错,优化,完善策略你得自己做。):

class high_freq():
    def __init__(self,mid_class):
    '''
    这个用来初始化各项数据,自己根据需要做
    '''
        pass
        
    def refreash_data(self):
    '''
    这个用来刷新行情,深度,账户信息
    '''
        pass
        
    def refreash_target_data(self):
    '''
    这个用来刷新对标用交易所数据
    '''
        pass
        
    def make_price_condition(self):
    '''
    这个用来处理价格信息
    '''
        pass
        
    def make_amount_condition(self):
    '''
    这个用来处理数量信息
    '''
        pass
        
    def make_deal_condition(self):
    '''
    根据价格信息和数量信息,给出判断交易条件,是做bids,还是asks,还是等待
    '''
        pass
    
    def make_trade_dict(self):
    '''
    根据交易条件和深度,生成需要交易的订单簿
    '''
        pass
        
    def do_trade_and_cancel(self):
    '''
    根据订单簿信息,取消老单,范围过远单,并且填充新的挂单价格,并挂单
    '''
        pass
        
    def check_deal(self):
    '''
    检查挂单情况,是否成功挂单,是否有网络问题遗漏单,仓位风险
    '''
        pass

    def lower_risk(self):
    '''
    根据自己的设置,降低仓位风险。比如倾向于持币,则平时多进微小买单
    倾向于空仓,则平时多卖出微小单。
    这个很容易理解吧,上行期设置倾向持币,下行期设置倾向空仓
    '''
        pass
    
    def trade_controller(self):
    '''
    处理和交易相关的逻辑,整合到一个函数里
    '''
        pass
        
    def clear_info_controller(self):
    '''
    处理和清理线程相关的逻辑,整合到一起
    '''
        pass
    
    def target_controller(self, target_class):
    '''
    处理和对标用交易所信息相关的逻辑,整合到一起
    '''
        pass
    
def main():
    raw_base_class = mid_class(exchanges[0])
    base_class = high_freq(base_class)
    
    raw_target_class =  mid_class(exchanges[1])
    target_class =  high_freq(target_class)
    
    While True:
        Sleep(100)
        
        base_class.refreash_data()
        target_class.refreash_target_data()
        
        base_class.target_controller(target_class)
        base_class.clear_info_controller()
        base_class.trade_controller()

那么,这篇文章就到这里结束了。多点赞多转发。我下一期分享一下怎么忽悠中小型交易所给你0手续费测试期(于是你就可以你可以实际操纵一下本文举例的策略了。这里我没分享代码,但是这个做市策略目前我自己跑出来,根据交易所和交易对不同,一天约千分之1~5的收益。)。

你可能感兴趣的:(量化交易中收益来源和风险来源)