保温杯中性
只做大币种和指数的合约(远离妖币,资金容量大) 长周期持仓(可以手动交易) 策略原理清晰可理解,追求稳定性,长期性 中性/保温杯中性,是量化策略之王,永远有生命力的策略。 中性策略收益有波动,不能保证稳赚,但是长期收益不会差。 未来方向: 1.适当扩展选币池子,可以手工增加你觉得不错的币。现在只有5个。 2.成交量前30%的币中做中性 3.增加多空数量不平衡的设置 ,降低回测。中性最怕妖币。在现阶段不用加,因为都是大币种和指数。不存在暴涨的情况。 4.将现货加入多头的币池。 5.将某个板块的币,比如gaMefi,小市值30%的币,作为一个指数。自己构建指数。 6.增加基本面数据。最近一段时间消耗的gas费等
常见问题
会一直更新: 1,360freewifi无法启动成功 驱动问题,安装360freeap_whole_setup_5.3.0.5020.exe 2,微信聊天记录无法迁移 需要在手机设置里把微信的本地网络开关打开。
中性策略概述
20221030 D:\天翼云盘下载\coin\part3\b圈量化课程高清版(文件较大,建议网速快的同学下载)\ 3.3.01 中性策略概述.mp4 观后感: 刑不行2022年新加的课程。 1,皮尔逊选股策略,有个柱状图,特别规律,从前0-10%,10%-20%,直至90%-100%收益一直递减。这样就很好的说明了这个策略的有效性非常高。需要深入研究一下这个策略。 2,中性策略在股票圈做多股票,做空股指,因为没法做空个股。但是在币圈,做空的对象换成打分在90%-100%这些币种,做多的是打分最高的10%币种。 如何做空股指? 3,对冲基金用的就是这种中性策略。选股策略是策略之王。最容易出成果。 4,alpha指的是选股策略收益,beta是大盘收益。对冲基金都是alpha - beta。 5,币圈现在由于有合约的存在,且bn上已经有100多种的币种可以同时做多做空,这就为在币圈用中性创造了条件,币种越多可以取得的alpha越多。 6,刑不行不太看好未来的中国的beta。 7,刑不行根据历史行情,预测还有一波下跌。 打算把这个皮尔逊策略和中性策略实盘起来。
保温杯中性
只做大币种和指数的合约(远离妖币,资金容量大) 长周期持仓(可以手动交易) 策略原理清晰可理解,追求稳定性,长期性 中性/保温杯中性,是量化策略之王,永远有生命力的策略。 中性策略收益有波动,不能保证稳赚,但是长期收益不会差。 未来方向: 1.适当扩展选币池子,可以手工增加你觉得不错的币。现在只有5个。 2.成交量前30%的币中做中性 3.增加多空数量不平衡的设置 ,降低回测。中性最怕妖币。在现阶段不用加,因为都是大币种和指数。不存在暴涨的情况。 4.将现货加入多头的币池。 5.将某个板块的币,比如gaMefi,小市值30%的币,作为一个指数。自己构建指数。 6.增加基本面数据。最近一段时间消耗的gas费等
常见问题
会一直更新: 1,360freewifi无法启动成功 驱动问题,安装360freeap_whole_setup_5.3.0.5020.exe 2,微信聊天记录无法迁移 需要在手机设置里把微信的本地网络开关打开。
中性策略概述
20221030 D:\天翼云盘下载\coin\part3\b圈量化课程高清版(文件较大,建议网速快的同学下载)\ 3.3.01 中性策略概述.mp4 观后感: 刑不行2022年新加的课程。 1,皮尔逊选股策略,有个柱状图,特别规律,从前0-10%,10%-20%,直至90%-100%收益一直递减。这样就很好的说明了这个策略的有效性非常高。需要深入研究一下这个策略。 2,中性策略在股票圈做多股票,做空股指,因为没法做空个股。但是在币圈,做空的对象换成打分在90%-100%这些币种,做多的是打分最高的10%币种。 如何做空股指? 3,对冲基金用的就是这种中性策略。选股策略是策略之王。最容易出成果。 4,alpha指的是选股策略收益,beta是大盘收益。对冲基金都是alpha - beta。 5,币圈现在由于有合约的存在,且bn上已经有100多种的币种可以同时做多做空,这就为在币圈用中性创造了条件,币种越多可以取得的alpha越多。 6,刑不行不太看好未来的中国的beta。 7,刑不行根据历史行情,预测还有一波下跌。 打算把这个皮尔逊策略和中性策略实盘起来。
Share Dialog
Share Dialog
Subscribe to KeepLearning
Subscribe to KeepLearning
<100 subscribers
<100 subscribers
1,
现象:空头偶尔会出现19个,默认选择20个空头
打印log发现是由于经过
transfer_swap函数后,币种名称出现了空的现象。

这个函数的作用是用合约的symbol来确定现货的symbol,用的转换关系是
df_swap['symbol_spot'] = df_swap['symbol'].map(lambda x: x.split('1000')[1] if '1000' in x else special_symbol_dict.get(x.replace('USDT', ''), x.replace('USDT', ''))+'USDT')
special_symbol_dict.get(x.replace('USDT', ''), x.replace('USDT', '')) 的作用是从 special_symbol_dict 中获取键为 x.replace('USDT', '') 对应的值,如果该键不存在,则返回 x.replace('USDT', '')。这个操作实际上是在尝试查找 x.replace('USDT', '') 在字典中的映射关系,如果有映射关系就返回映射值,否则返回原始的 x.replace('USDT', '')。
如果合约symbol包含1000的字符串,则取[1]第一个字符作为输出
如果symbol不包含1000的字符串,则判断symbol.replace('USDT', '')是否在special_symbol_dict中,如果在,则返回对应的value值,如果不在special_symbol_dict中,则返回symbol.replace('USDT', '')。
两个如果最后都加上USDT。
一个新的币种 现货和合约symbol都是1000sats,如果还用上面的逻辑,则会出现问题,导致从合约倒推spot名称出来是satsusdt,导致在现货中找不到这个现货,因为现货也是1000satsusdt。
修改如下
df_swap['symbol_spot'] = df_swap['symbol'].map(lambda x: '1000SATSUSDT' if x == '1000SATSUSDT' else (x.split('1000')[1] if '1000' in x else special_symbol_dict.get(x.replace('USDT', ''), x.replace('USDT', ''))+'USDT'))
对1000SATSUSDT做了特殊处理,其实应该是把1000SATSUSDT加入到special_symbol_dict,然后先判断是否在special_symbol_dict里,再判断是否包含1000,先不搞了。关系不大。
可以在网站上看看历史的BUG修正
2,
实盘与回测有些选币对不上的问题。
应该是由于提前获取K线计算的因子排序不一样,所以会有差异。但是这个差异还是比较大,大概看了下,20个币种里有7个不一样。再对了另外一个时间点,3个不一样的。正常么?不好确认。那么我将选币个数调整到30个,看看回测效果会不会有很大不同?如果回测结果差异不大,那么就不管它了。如果差异大,则需要继续定位研究。

回测结果和选20个币还是有差异的。不过选30个本来就会导致收益降低,不一定是由于这个选币不一直引起的。发现一个好的思路,如果我取数据的时候,把最新的一根K线去掉,也就是去掉最近的K线,然后计算因子值,回测的时候也这么做,那么选币应该是一样了吧?
修改成以下方式:
df[factor_name] = df[factor_name].shift(2)
回测效果如下,和df[factor_name] = df[factor_name].shift(1)差的有点多。

1,
现象:空头偶尔会出现19个,默认选择20个空头
打印log发现是由于经过
transfer_swap函数后,币种名称出现了空的现象。

这个函数的作用是用合约的symbol来确定现货的symbol,用的转换关系是
df_swap['symbol_spot'] = df_swap['symbol'].map(lambda x: x.split('1000')[1] if '1000' in x else special_symbol_dict.get(x.replace('USDT', ''), x.replace('USDT', ''))+'USDT')
special_symbol_dict.get(x.replace('USDT', ''), x.replace('USDT', '')) 的作用是从 special_symbol_dict 中获取键为 x.replace('USDT', '') 对应的值,如果该键不存在,则返回 x.replace('USDT', '')。这个操作实际上是在尝试查找 x.replace('USDT', '') 在字典中的映射关系,如果有映射关系就返回映射值,否则返回原始的 x.replace('USDT', '')。
如果合约symbol包含1000的字符串,则取[1]第一个字符作为输出
如果symbol不包含1000的字符串,则判断symbol.replace('USDT', '')是否在special_symbol_dict中,如果在,则返回对应的value值,如果不在special_symbol_dict中,则返回symbol.replace('USDT', '')。
两个如果最后都加上USDT。
一个新的币种 现货和合约symbol都是1000sats,如果还用上面的逻辑,则会出现问题,导致从合约倒推spot名称出来是satsusdt,导致在现货中找不到这个现货,因为现货也是1000satsusdt。
修改如下
df_swap['symbol_spot'] = df_swap['symbol'].map(lambda x: '1000SATSUSDT' if x == '1000SATSUSDT' else (x.split('1000')[1] if '1000' in x else special_symbol_dict.get(x.replace('USDT', ''), x.replace('USDT', ''))+'USDT'))
对1000SATSUSDT做了特殊处理,其实应该是把1000SATSUSDT加入到special_symbol_dict,然后先判断是否在special_symbol_dict里,再判断是否包含1000,先不搞了。关系不大。
可以在网站上看看历史的BUG修正
2,
实盘与回测有些选币对不上的问题。
应该是由于提前获取K线计算的因子排序不一样,所以会有差异。但是这个差异还是比较大,大概看了下,20个币种里有7个不一样。再对了另外一个时间点,3个不一样的。正常么?不好确认。那么我将选币个数调整到30个,看看回测效果会不会有很大不同?如果回测结果差异不大,那么就不管它了。如果差异大,则需要继续定位研究。

回测结果和选20个币还是有差异的。不过选30个本来就会导致收益降低,不一定是由于这个选币不一直引起的。发现一个好的思路,如果我取数据的时候,把最新的一根K线去掉,也就是去掉最近的K线,然后计算因子值,回测的时候也这么做,那么选币应该是一样了吧?
修改成以下方式:
df[factor_name] = df[factor_name].shift(2)
回测效果如下,和df[factor_name] = df[factor_name].shift(1)差的有点多。

No activity yet