返回介绍

第一部分 新手入门

第二部分 股票量化相关

第三部分 基金、利率互换、固定收益类

第四部分 衍生品相关

ROE选股指标

发布于 2022-02-20 22:26:13 字数 2894 浏览 1012 评论 0 收藏 0

简单的ROE选股:按ROE排序选前10%的股票,等权重买入

import numpy as np
import pandas as pd
start = '2015-01-01'                       # 回测起始时间
end = '2016-01-01'                         # 回测结束时间
benchmark = 'HS300'                        # 策略参考标准       
universe = set_universe('HS300')            # 证券池,支持股票和基金
capital_base = 100000                      # 起始资金
freq = 'd'                             # 策略类型,'d'表示日间策略使用日线回测,'m'表示日内策略使用分钟线回测
refresh_rate = 20   # 调仓频率,表示执行handle_data的时间间隔,若freq = 'd'时间间隔的单位为交易日,若freq = 'm'时间间隔为分钟



def initialize(account):                   # 初始化虚拟账户状态
    pass

def handle_data(account):                  # 每个交易日的买入卖出指令

    factor = DataAPI.MktStockFactorsOneDayGet(secID=account.universe,tradeDate=account.previous_date,field='secID,ROE',pandas="1").dropna()    #获取所有股票的相关因子

    sec_val = {'symbol':[], 'factor_value':[]}

    for index, row in factor.iterrows():
        sec_val['symbol'].append(row['secID'])
        sec_val['factor_value'].append(row['ROE'])

    sec_val = pd.DataFrame(sec_val).sort(columns='factor_value').reset_index()
    sec_val = sec_val[int(len(sec_val)*0.9):]           #排序并选择前10%

    buylist = list(sec_val.symbol)           #买入股票列表

    for stock in account.valid_secpos:
        if stock not in buylist:
            order_to(stock, 0)
    for stock in buylist:
        if stock not in account.valid_secpos:
            order(stock, account.cash/len(buylist))
    return

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文