跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • 世界
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
品牌标识

AI量化投资实验室-社区&知识库

X

xuanyuan1hao

@xuanyuan1hao
关于
帖子
2
主题
0
分享
0
群组
0
粉丝
0
关注
0

帖子

最新 最佳 有争议的

  • 关于trend_score和ROC的计算问题
    X xuanyuan1hao

    我这里修改了一下,拟合直线的斜率改成了暴力两点 斜率

    获取斜率(回归系数)

    slope = model.coef_[0]

    暴力首尾两点斜率
    slope=(close_values[n-1]-close_values[0])/close_values[0]

    这样计算出来总收益为50.57812057000028

    aitrader量化系统 代码学习&问题反馈

  • 关于trend_score和ROC的计算问题
    X xuanyuan1hao

    from sklearn.linear_model import LinearRegression
    from sklearn.metrics import r2_score

    def calculate_R2_with_slope(close_values,K):
    n = len(close_values)
    if n < K:
    return np.nan
    # 获取最新的close_values数据
    close_values = close_values[-K:]
    n = len(close_values)
    # 取close_values窗口滑动向前的20天数据
    x = np.arange(n).reshape(-1, 1)
    model = LinearRegression()
    model.fit(x, close_values)
    # 获取斜率(回归系数)
    slope = model.coef_[0]
    #print(f"斜率(回归系数): {slope}")
    X_test = np.array(x)
    y_test= np.array(close_values)
    # 获取拟合度(R-squared值)
    y_pred = model.predict(X_test)
    r2 = r2_score(y_test, y_pred)
    return r2*slope

    @calc_by_symbol
    def trend_score(se: pd.Series,d):
    # 这里使用滑动窗口获取 斜率*拟合度
    return se.rolling(window=d).apply(lambda x: calculate_R2_with_slope(x.values, d))

    我这里的计算方式是这样的,也回测不出来公开策略的60%多倍收益,只测试出来37倍收益

    aitrader量化系统 代码学习&问题反馈
  • 登录

  • 没有帐号? 注册

Powered by NodeBB Contributors
  • 第一个帖子
    最后一个帖子
0
  • 版块
  • 最新
  • 标签
  • 热门
  • 世界
  • 用户
  • 群组