跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • 世界
  • 用户
  • 群组
皮肤
  • 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
关于
帖子
5
主题
0
分享
0
群组
0
粉丝
0
关注
0

帖子

最新 最佳 有争议的

  • 关于ETF轮动策略“排序规则”和“卖出规则”
    X xuanyuan1hao

    卖出规则是用来过滤的,比如4个ETF(A,B,C,D),有1个ETF(A)符合卖出条件,且这个ETF动量排名是第1的,那么,按照代码规则,首先是排除掉A(卖出A),然后从剩下的3个ETF(B,C,D)中找排名第一的买入;

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

  • bt框架的常见问题——汇总
    X xuanyuan1hao

    我怀疑bt框架在偷数据;如果我将测试数据的2025-10-15日(包括这一天)及以后的数据给删除,测试的时候get_transactions()方法拿不到2025-10-14日的调仓信息;如果按照收盘价进行调仓换股的话,那么2025-10-14日的数据是有的,2025-10-14日的调仓数据应该是要输出的;我现在增加一条测试数据(日期为2025-10-15,其它OHLC的数据随便填写)这个时候回测就会出来2025-10-14日的调仓信息;按照这个逻辑,它只有后一天的数据出来的时候,前一日的调仓信息才能出来,所以它应该是次日开盘显示前一日的调仓信息的。

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

  • aitrader 开源系统 代码下载说明
    X xuanyuan1hao

    gitee上面的代码不全;我从github上面下载到一份完整的源码;github上面搜索aitrader就有了。

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

  • 关于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
  • 版块
  • 最新
  • 标签
  • 热门
  • 世界
  • 用户
  • 群组