# 从北向资金走向-衍生的交易策略

策略实现是从华泰证券的金工研报而来，研报名称《北向资金走向预示市场短期或震荡华泰金工量化资产配置7月月报》

> 中国证监会于 2014 年和 2016 年分别批准了沪港通和深港通，建立了大陆 和香港股市的互联互通机制，市场通常把沪股通和深股通的合计流入资金称 为北向资金。本文基于北向资金的流入规模数据构建布林带策略，并配置沪 深 300 指数，结果发现北向资金对于判断沪深 300 涨跌具有较好的预示作 用。最近一次北向资金给出买入信号是在 4 月 7 日，而在 7 月 14 日给出了 卖出信号，暂未发出买入信号，说明短期市场可能仍以震荡调整为主导。

简单来说，就是通过北向资金的流入资金来判断沪深300涨跌。在这个基础之上，我用python分析及编制了一个简单的交易策略。

研报逻辑：

> 基于北向资金变动数据构建布林带择时策略能有效判断 A股市场短期涨跌 基于北向资金流入规模数据，计算布林带策略的上轨和下轨，并构建沪深 300 的择时策略。当北向资金突破上轨时买入沪深 300，突破下轨时清仓 沪深 300。回测结果显示，北向资金布林带策略明显优于沪深 300 指数或 用沪深 300 本身构建的布林带策略，并且北向资金布林带策略对参数不敏 感，在各种参数下的表现更优。

**核心指标逻辑：**

北上资金净流入 = 沪股通每日净流入 + 深股通每日净流入

每日净流入 = 每日额度余额-每日额度

**上轨下轨逻辑：**

（1） 当该日北向资金流入规模 > 过去 252 个交易日的北向资金均值 + 1.5 倍标准差， 则全仓买入沪深 300

（2） 当该日北向资金流入规模 < 过去 252 个交易日的北向资金均值 - 1.5 倍标准差， 则清仓卖出沪深 300

**Python代码实现：**

```
df['total_flowin'] = df['flowin_shen'] + df['flowin_hu']
df['252_std'] = df['total_flowin'].rolling(252).std()
df['252_mean'] = df['total_flowin'].rolling(252).mean()
df['lower_interval'] = df['252_mean'] - 1.5*df['252_std']
df['upper_interval'] = df['252_mean'] + 1.5*df['252_std']
```

北上资金每日净流入变动情况：

北上资金净流入与沪深300进行相关性分析，研报里做的比较严谨，我自己用pandas.corr()的相关性函数简单调用了一下，如下图：

即北上资金净流入最近252天（交易日即一年）标准差与沪深300etf的收盘价，相关性0.5

> 通常情况下通过以下取值范围判断变量的相关强度：相关系数绝对值 ：
>
> * 0.8-1.0 极强相关
> * 0.6-0.8 强相关
> * 0.4-0.6 中等程度相关
> * 0.2-0.4 弱相关
> * 0.0-0.2 极弱相关或无相关

再取平安银行（北上持股比例较高）看看相关性：

相关性达到了0.76

**综上得出结论，北上资金净流入与沪深300涨跌有相关性，通过设定上轨和下轨进行交易，应该可以获得一定的收益。**

再画图：加入上轨和下轨之后：

写成策略试一试，策略思路是超过上轨买，低于下轨卖。

策略从2018到2020回测，策略收益59.69%，基准为沪深300，明显好于单纯的沪深300收益，特别是19年和20年，北上资金影响沪深300越来越明显。

把这个策略加入到邮件自动化提醒里，实现自动监控北上资金动态。

提醒逻辑为：

```
  try:
        if "当日净流入" > “上轨”:
            beishang_message = "北上在狂买，跟着大部队买入股票"
        elif "当日净流入" < “下轨”:
            beishang_message = "北上在跑路，跟着大部队能卖一点是一点"
        else:
            beishang_message = "北上很无聊，大概都在喝茶"
    except:
        pass
```

用这个逻辑实现系统自动邮件，每日通知北上资金动态。

…end…

原版研报放在星球了，当然如需要收到提醒和策略代码，欢迎加入我的知识星球，后续将逐步丰富量化指标的分析与建模。
