从零开始的量化交易 | 02 模拟:参加阿里web3交易黑客松(已信息脱敏)

1,032 阅读7分钟

黑客松.jpg 我参加的是交易赛道

前置问题一:本金是多少?

答:10000U

前置问题二:数据回测范围?

  • 已有数据的时间范围:170817 —— 230216
  • 比赛范围需回测 21.1.1 - 22.12.31

一、3.31讨论情况汇总

TODO 0

双均线,跟大家普及一下概念;

TODO 1

市面上的研报,会把他的交易策略介绍的很清楚,为什么会这么买。

我们可以通过收集研报,给ChatGPT4去筛选分析:

  • 收集研报
  • GPTPDF
  • GPT分析

TODO 2

老猫:狼喵论坛(币圈大V):关注的十个交易因子

同理,搜索类似大V的交易观念

TODO 3

双均线模型用改成代码实现

需要注意的误差参数:滑点、手续费


二、关键指标计算

最终会综合评价

  • 收益率
  • 最大回撤
  • 夏普比率
  • 胜率
  • 盈亏比

以及有效性等各方面赛出最有效的策略

01 | 收益率

(卖出价格 - 买入价格)/ 买入价格

02 | 最大回撤

最大回撤是衡量一个投资组合或资产价格走势波动的风险指标。它表示资产价格在任何一个时间段内从高点到低点的最大跌幅。计算最大回撤的步骤如下:

  1. 首先找到该资产或组合的历史最高点,记为Peak
  2. 然后在Peak之后找到最低点,记为Trough
  3. 最大回撤就等于(Peak - Trough)/ Peak

举个例子,假设某股票价格的历史最高点是100美元,之后价格下跌到了50美元,然后又反弹到了80美元。

那么最大回撤就等于(100美元 - 50美元)/ 100美元 = 0.5 = 50%。这意味着该股票价格在历史最高点之后曾经跌幅了50%。

03 | 夏普率

Sharpe Ratio = (Rp - Rf) / σp

其中,Rp是投资组合的预期收益率,Rf 是无风险收益率,σp 是投资组合收益率的标准差。

夏普率越高,表示在相同的风险水平下,投资组合的收益越好。通常来说,夏普率在1.0以上被认为是好的表现,而在2.0以上则被认为是非常好的表现。夏普率在0.5以下则被认为是风险过大的投资组合。

无风险收益率:无风险收益率是指在没有任何风险的情况下,投资者所能获得的收益率。在实际应用中,通常将国债利率或银行存款利率作为无风险收益率的参考值

投资组合收益率的标准差:投资组合收益率的标准差是衡量该投资组合风险的一种常用方法,其计算公式如下:

标准差 = SQRT(∑(Ri - Rp)^2 / (n-1))

其中,Ri表示第i个资产的收益率,Rp表示投资组合的平均收益率,n表示投资组合中资产的数量。

具体计算步骤如下:

  1. 计算投资组合的平均收益率Rp,即将所有资产的收益率加总,然后除以资产数量n,即:Rp = (R1 + R2 + ... + Rn) / n。
  2. 对于每个资产,计算其收益率与投资组合平均收益率之差(即(Ri - Rp)),然后将差的平方加总,得到∑(Ri - Rp)^2。
  3. 将∑(Ri - Rp)^2除以(n-1),然后再开平方,即可得到投资组合收益率的标准差。

04 | 胜率

胜率是指在一定的交易次数中,盈利交易所占的比例。胜率通常用百分比表示,计算公式如下:

胜率 = 盈利交易次数 / 总交易次数

需要注意的是,胜率不能单独作为交易策略的评价指标,因为它忽略了每次交易的盈亏比例。

如果每次盈利交易的盈利幅度小于亏损交易的亏损幅度,那么高的胜率并不意味着交易策略是优秀的。因此,在评价交易策略时,还需要考虑其他指标,例如平均盈亏比、期望收益等。

05 | 盈亏比

盈亏比是指在交易中获得的平均盈利与平均亏损之间的比率。它可以用以下公式来计算:

盈亏比 = 平均盈利 / 平均亏损

其中,平均盈利指的是所有盈利交易的平均收益,平均亏损指的是所有亏损交易的平均亏损。

盈亏比越高,表示获得盈利的可能性越大,风险也越小。

举个例子,假设你进行了20次交易,其中10次盈利,10次亏损。在盈利交易中,平均收益为100美元,在亏损交易中,平均亏损为50美元。那么你的盈亏比就是:

盈亏比 = 100美元 / 50美元 = 2

这意味着在这20次交易中,你获得盈利的可能性是亏损的 2 倍。


三、最终展示内容

image.png

📈 收益情况展示

image.png

💡 灵感来源

感觉 炒币的时候我们会有一种感觉,比特币涨,其他币种也会涨,比特币跌,其他币种也会跌,主流币和小币种间好像总是有同上同下的关系。

机会 但会有时差,就是比特币涨了,小币种还没有启动,我们就用比特币买入小币种,等小币种涨上来;等比特币跌了,小币种还没有跟上,我们就用小币种换回比特币,那么我们赚到的比特币就会越来越多。


🔥 验证猜想

优先级: 1 通过研报信息,发现LTC、LINK和DOT与BTC有强烈的相关性

image.png 优先级: 2 同时我们自己通过Johansen协整检验通过长时间序列协整检验,得到协整性验证

# 进行Johansen协整检验
result = coint_johansen(df, det_order=0, k_ar_diff=1)

# 输出结果
print('Eigenvalues:')
print(result.eig)

print('Trace statistic:')
print(result.lr1)

print('Max eigenvalue statistic:')
print(result.lr2)

# 获取置信水平为 95% 的 Trace 级别和 Max Eigenvalue 级别的临界值
trace_critical_values = result.trace_stat_crit_vals[:, 1]
max_eig_critical_values = result.max_eig_stat_crit_vals[:, 1]
print('trace critical values:')
print(trace_critical_values)
print('max eig critical values')
print(max_eig_critical_values)

image.png 3. 根据截止到 2021 年 6 月数据,通过拟合带常数项的多元一次函数得到一个函数式,如下图

image.png


💼 设计策略和执行

原计划策略,将 1000USDT 全部换成 BTC

  • 当差值(Flag)大于 1 个标准差,用 BTC 买入 (LTC + LINK + DOT)
  • 当差值小于 -1 个标准差时,用 (LTC + LINK + DOT) 买入 BTC

image.png

优化策略:通过合约形式进行U本位的优化:

1️⃣ 差值大于 1 个标准差,一半资产买入 BTCUSDT 看跌永续合约,一半资产平均买入 LTCUSDT、LINKUSD 和DOTUSDT 看涨永续合约

2️⃣ 差值达到 0,同时平仓两份永续合约,拿到 USDT 资产,等待下一次开仓机会

3️⃣ 差值小于 -1 个标准差,一半资产买入 BTCUSDT 看涨永续合约,一半资产平均买入 LTCUSDT、LINKUSDT 和 DOTUSDT 看跌永续合约

4️⃣ 差值达到 0,同时平仓两份永续合约,拿到 USDT 资产,等待下一次开仓机会

image.png


💼 普适性价值

image.png

在21年获得80%的收益,回撤仅6%,但在22年资产没有获得增长

⚠️原因:时间不足,没有及时调整系数,如果有更多时间进行系数调整,很有可能持续获得超额回报。


QA环节:小组成员亮相

IMG_2828.JPG


四、比赛结果

IMG_2827.JPG

小组第三,普适性验证小组第一

TODO: 将22年系数拟合出来,保证22年回归能维持良好收益水平,还有进步的空间。

同理23年系数拟合出来,可尝试实盘交易,验证策略合理性