# BWB3实盘代码修改

By [KeepLearning](https://paragraph.com/@keeplearning-2) · 2024-01-31

---

1，

现象：空头偶尔会出现19个，默认选择20个空头

打印log发现是由于经过

transfer\_swap函数后，币种名称出现了空的现象。

![](https://storage.googleapis.com/papyrus_images/f67308a9f4fab6842b1b4a24f5e50565c1e2b071370c0e86b75583752485abe0.png)

这个函数的作用是用合约的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个，看看回测效果会不会有很大不同？如果回测结果差异不大，那么就不管它了。如果差异大，则需要继续定位研究。

![](https://storage.googleapis.com/papyrus_images/5a7e0de8183f773ee286e4019f94a21c4ab0f8a7e9de9e9ddd75653a9aaa8053.png)

回测结果和选20个币还是有差异的。不过选30个本来就会导致收益降低，不一定是由于这个选币不一直引起的。发现一个好的思路，如果我取数据的时候，把最新的一根K线去掉，也就是去掉最近的K线，然后计算因子值，回测的时候也这么做，那么选币应该是一样了吧？

修改成以下方式：

df\[factor\_name\] = df\[factor\_name\].shift(2)

回测效果如下，和df\[factor\_name\] = df\[factor\_name\].shift(1)差的有点多。

![](https://storage.googleapis.com/papyrus_images/2b13a0edfb9ae6bef722cf8181df031c829bdbaa582d0094f50c9fc31cd3d5a3.png)

---

*Originally published on [KeepLearning](https://paragraph.com/@keeplearning-2/bwb3-3)*
