搜索了720组参数后:创业板动量收益率提升至26.48%,回撤率下降至43%

最近的思路,从“七年实现财富自由”(七年赚到500万实现财富自由,这是我的计划,也适合大多数普通人)演化到“以交易为生”。

大类资产配置计划,恒定市场定投,这个基本上不需要花太多时间,算是一个“被动收入”管道,静待花开即可。

因此,星球引入下一个目标:我想测试一下,拿10%的本金,测试一下是否能够以交易为生。

这里有一个悖论就是:最合适以交易为生的人,是那些不需要以交易为生的人。

仔细读这句话,不是绕口令。

世间事,很多都是如此。

你对它没有执念了,反倒更容易成功。

这就好比财富自由的人,创业更容易成功。因为不受当下波动所扰,可以目光长远,格局就大。不着急赚钱,就能坚持长期主义正确的事情。

如果你把交易看成是一个游戏,只想看看如何晋级和通关,修炼自己的认知和技术,不断精进。

从我自己的背景出发,即便是交易为生,也是从构建自动化(智能化)系统开始的。能交给系统的,都交给系统,系统开发对我而言是很简单的事情。

超参数优化对于CTA策略非常重要:

from backtesting import Strategy
from utils.indicators import ROC


class RocPickTime(Strategy):
    n = 20
    upper_bound = 0.02
    lower_bound = 0

    def init(self):
        #print(self.data.Close)
        self.roc = self.I(ROC, self.data.Close, self.n)

    def next(self):
        if self.roc[-1] > self.upper_bound:
            if self.position.size < 0:
                self.position.close()
            self.buy()

        if self.roc[-1] < self.lower_bound:
            if self.position.size > 0:
                self.position.close()

self.sell()

咱们这个策略,有三个参数,一是动量的周期,二是做多和空的两个值:

   n = 20
    upper_bound = 0.08
    lower_bound = 0

图片

图片

优化之后,收益率提升至26.48%,回撤率下降至43%

图片

最优参数是:n=20,upper_bound=0.02, lower_bound=0.0。

也就是20日动量(之前很多同学问我,为什么设为20,因为机器优化的),动量值超过0.02时做多,低于0时做空(或者平仓)。

图片

代码在如下位置,notebook里AI量化实验室——2024量化投资的星辰大海

图片

国际知名交易者——埃尔德,有一个交易系统叫“三重滤网”

它引用了不同的时间周期,比如周线上看大势,日线上看反转,小时线上看入场点。这就需要支持多时间窗口的指标计算。

1、把日线数据resample为周线,在周线上计算指标后,然后把index还原成日线的频率,用ffill前向填充的方式对齐。

2、这里有一个问题,只能小周期往大周期resample,日线数据肯定无法拆分小时线。如果要使用三重滤网小时操作的话,回测数据应该使用小时线的数据即可以,然后resample为日线和周线。

def resample_apply(rule: str,
                   func: Optional[Callable[..., Sequence]],
                   series: Union[pd.Series, pd.DataFrame, _Array],
                   *args,
                   agg: Optional[Union[str, dict]] = None,
                   **kwargs):
    """
    
    if func is None:
        def func(x, *_, **__):
            return x

    if not isinstance(series, (pd.Series, pd.DataFrame)):
        assert isinstance(series, _Array), \
            'resample_apply() takes either a `pd.Series`, `pd.DataFrame`, ' \
            'or a `Strategy.data.*` array'
        series = series.s

    if agg is None:
        agg = OHLCV_AGG.get(getattr(series, 'name', ''), 'last')
        if isinstance(series, pd.DataFrame):
            agg = {column: OHLCV_AGG.get(column, 'last')
                   for column in series.columns}

    resampled = series.resample(rule, label='right').agg(agg).dropna()
    resampled.name = _as_str(series) + '[' + rule + ']'

    # Check first few stack frames if we are being called from
    # inside Strategy.init, and if so, extract Strategy.I wrapper.
    frame, level = currentframe(), 0
    while frame and level <= 3:
        frame = frame.f_back
        level += 1
        if isinstance(frame.f_locals.get('self'), Strategy):  # type: ignore
            strategy_I = frame.f_locals['self'].I             # type: ignore
            break
    else:
        def strategy_I(func, *args, **kwargs):
            return func(*args, **kwargs)

    def wrap_func(resampled, *args, **kwargs):
        result = func(resampled, *args, **kwargs)
        if not isinstance(result, pd.DataFrame) and not isinstance(result, pd.Series):
            result = np.asarray(result)
            if result.ndim == 1:
                result = pd.Series(result, name=resampled.name)
            elif result.ndim == 2:
                result = pd.DataFrame(result.T)
        # Resample back to data index
        if not isinstance(result.index, pd.DatetimeIndex):
            result.index = resampled.index
        result = result.reindex(index=series.index.union(resampled.index),
                                method='ffill').reindex(series.index)
        return result

    wrap_func.__name__ = func.__name__

    array = strategy_I(wrap_func, resampled, *args, **kwargs)
    return array

下图就是RSI指标在日线和周期上的图象。

图片

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/103456
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 2024 年 7 月 29 日
下一篇 2024 年 7 月 29 日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注