返回介绍

第一部分 新手入门

第二部分 股票量化相关

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

第四部分 衍生品相关

银行股轮动

发布于 2022-02-20 22:26:18 字数 2152 浏览 900 评论 0 收藏 0

策略说明:持续持有两支市净率最低银行股,每月换仓

import numpy as np
import pandas as pd
from pandas import DataFrame
import datetime

start = '2011-01-01'
end = '2015-08-14'
benchmark = 'HS300'
universe = ['000001.XSHE','002142.XSHE','600000.XSHG','600015.XSHG','600016.XSHG','600036.XSHG','601009.XSHG','601166.XSHG','601169.XSHG','601288.XSHG','601328.XSHG','601398.XSHG','601818.XSHG','601939.XSHG','601988.XSHG','601998.XSHG']

capital_base = 10000000
refresh_rate = 20

def initialize(account):
    pass

def handle_data(account):
    cal = Calendar('China.SSE')
    lastTDay = cal.advanceDate(account.current_date,'-1B',BizDayConvention.Preceding)
    today_str = lastTDay.strftime("%Y%m%d")        

    tickers = []
    for stk in account.universe:
        if not np.isnan(account.referencePrice[stk]):
            tickers.append(stk[0:6])
    try:
        d=DataAPI.MktEqudGet(secID=u"",ticker=tickers,tradeDate=today_str,beginDate=u"",endDate=u"",field="secID,PB",pandas="1")

        d=d.sort(columns='PB',ascending=1)        
        d=d.head(2) 
        buylist = d['secID'].tolist()
        for stk in account.valid_secpos:
            if stk not in buylist:
                order_to(stk, 0)

         # 等权重买入所选股票
        portfolio_value = account.referencePortfolioValue        

        for stk in buylist:
            if stk not in account.valid_secpos:
                order_to(stk, int(portfolio_value / account.referencePrice[stk] / 100.0 / len(buylist))*100) 
    except:
        return

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

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

发布评论

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