問下,已經寫好了程式碼,也完成了策略編輯,並完成回測了.但想使跑完的策略進行選股.這步驟該怎麼操作呢
問下,已經寫好了程式碼,也完成了策略編輯,並完成回測了.但想使跑完的策略進行選股.這步驟該怎麼操作呢
根据您提供的信息,您已经完成了策略的编写和回测,但找不到“策略选股”的选项。在SuperMind平台中,策略选股功能通常与组合优化器相关联,您可以通过组合优化器来实现策略选股。根据您提供的示例代码,您已经正确地使用了组合优化器来优化股票组合。为了进一步实现策略选股,您可以参考以下步骤:
确保策略中使用了组合优化器:您已经在optmize函数中使用了组合优化器来优化股票组合。这一步是正确的。
获取优化后的股票组合:在优化完成后,您可以通过调用optimized_weight()方法来获取优化后的股票权重。这一步您也已经完成了。
根据优化后的权重进行选股:在获取到优化后的权重后,您可以根据这些权重来决定哪些股票应该被选入组合。例如,您可以选择权重大于某个阈值的股票作为选中的股票。
将选中的股票列表输出或使用:您可以将选中的股票列表输出到日志中,或者将其用于后续的交易操作。
以下是根据您的示例代码,进一步实现策略选股的示例:
import random
def init(context):
# 设置基准收益:中证500指数
set_benchmark('000905.SH')
# 打印日志
log.info('策略开始运行,初始化函数全局只运行一次')
# 设置股票每笔交易的手续费为万分之二(手续费在买卖成交后扣除,不包括税费,税费在卖出成交后扣除)
set_commission(PerShare(type='stock', cost=0.0002))
# 设置股票交易滑点0.5%,表示买入价为实际价格乘1.005,卖出价为实际价格乘0.995
set_slippage(PriceSlippage(0.002))
# 设置日级最大成交比例25%,分钟级最大成交比例50%
# 日频运行时,下单数量超过当天真实成交量25%,则全部不成交
# 分钟频运行时,下单数量超过当前分钟真实成交量50%,则全部不成交
set_volume_limit(0.25, 0.5)
# 从中证500中随机选取50股票
stocks = random.sample(list(get_index_stocks('000905.SH', '2017-12-21')), 50)
# 构建股票列表,形式为dict,以便后续使用组合优化器
context.security = {ia: 0 for ia in stocks}
# 构建初始股票权重
context.hold = {ia: 0 for ia in stocks}
# 股票权重限制
context.weight = {ia: [0.0, 100.0] for ia in stocks}
# 周频调仓
run_weekly(func=optmize, date_rule=1, reference_security='000001.SZ')
def optmize(context, bar_dict):
time = get_datetime().strftime('%Y%m%d')
# 构造组合优化器,优化目标设置为最大化效用,使用历史收益率作为预期收益率
opt = OptimizePort(context.security, '2017-12-21', True, opt_focus='UI', benchmark='000905.SH', period='w', holds=context.hold, long_short='long-only')
opt.add_constraint('stock_weight', context.weight)
# 添加跟踪误差约束
opt.add_constraint('tracking_error', (-0.02, 0.02))
# 使用组合优化器进行求解
stock_weight = opt.optimized_weight()
# 根据优化后的权重进行选股
selected_stocks = {stock: weight for stock, weight in stock_weight.items() if weight > 0.01}
# 将选中的股票列表输出到日志中
log.info(f'选中的股票: {selected_stocks}')
# 根据组合优化器结果进行权重调整
for ia in stock_weight.keys():
order_target_percent(ia, stock_weight[ia] / 100)
在这个示例中,我们通过设置一个权重阈值(例如0.01)来选择那些权重大于该阈值的股票,并将这些股票输出到日志中。您可以根据实际需求调整这个阈值。这样,您就可以实现策略选股的功能了。

