许多年后,你会觉得这篇文章是你投资生涯中最有价值的文章——搞清楚收益来源和风险来源

Author: 子楠, Created: 2020-11-11 17:19:59, Updated: 2020-11-13 11:44:50

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

……

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

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

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

“你凭什么赚钱”

或者延伸一下:

“凭啥你不亏钱”

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

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

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

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

img

你说现在是高点是低点?

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

img

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

                               

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

 

你说不算数,让我再来一截? img 来,2次突破压力位了,你说是涨是跌?

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

                               

img

不好意思,一路上涨。

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

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

img

这就是波形理论的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.cn/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的收益。)。


Related

More

lefarcen refresh

dsaidasi 你说的意思其实就是演绎法,高频和套利都属于这种。演绎法的好处是逻辑明确,稳定,但西蒙斯也说过,你能看到的逻辑,别人也能看到,实际上是非常容易失效的。想拉开与被人的差距,靠的还是归纳法。

女也 涨知识。视频很好。

ukcc2020 给子楠大神点赞!

ukcc2020 盘口抄作业型策略,策略逻辑简单,盈利点思路清晰,难点在执行部分。首先要能同步获取足够多的交易所行情,并且处理好时间戳同步问题(同时请求行情,返回行情的时间切片不一定是同步的,根据不同交易所所在地域和服务器内部时钟以及撮合引擎切片逻辑来决定的),然后根据数据分析lead&follower,搞清楚哪些交易所经常“领导”行情,哪些交易所“跟随”行情,这之间的lag可以处理成时间序列,用多因子模型回归得到多交易所lead权重和交易信号signal,最后才是高速执行,因为同类型策略很多,为了更低成本的执行订单,并且尽可能的提高成交率(高频交易中成交率决定收益率),越早挂出订单,排队越靠前,成交的概率越大。此类抢盘口型高频策略是非常适合入门高频策略的,解决基础设施之后就能赚到钱,一般足以负担个人生活开支,然后再继续修炼,攀爬更高阶的策略!

makebit 这个D交易所是传说中的 利用头部交易所的 盘口来做市的 野鸡交易所吗?

子楠 很多交易所都是这样的……这里的D交易所,在排名前50的交易所里都能经常看到。

子楠 是的,这种策略是高频交易入门非常适合的。涉及深度,价格,延时等多方面的信息,容量小,成本低,但是可以了解各方面的信息,很多时候大交易所交易量足够时,很少发生的bug(比如我同样的策略,币安跑的时候,收益基本上都在理论收益的误差内,但是在小交易所就不行。这就是交易深度好,交易频繁时,会覆盖掉很多问题,从而难以发现一些应该改的错误),在这种对标时小交易所就会更快看到,而更好的优化策略。