[风格轮动初体验] 国家持股 VS 小盘股

2017-04-12 11:57:35 +08:00
 raquant

[风格轮动初体验] 国家持股 VS 小盘股

市场上的投资者是有偏好的, 有时候会偏好价值股, 有时候偏好成长股, 有时候偏好大盘股, 有时候偏好小盘股。由于投资者的这种不同的交易行为,形成了市场风格, 因此在投资中,利用市场风格的变化,进行轮动投资会比一直持有的效果好很多。

小编是个很粗犷的人,所以经常被老板骂不精细,这次也是选了个很粗犷的策略:

1 )当上证指数 20 日均线在 30 日均线上方时,买入流通盘绝对数值最小的股票前五名

2 )反之,则买入国家持股绝对数值比较大的前五名 我说的绝对数值,是相对于比值计算来说的啊,因为这里用比值也不太好,各种因素太多,做人,有时候简单点更犀利。

代码如下,加空白行不到 30 行,里面我定的是每月 10 号调仓,你懂得, 10 号前老板给我发工资。

def init(context):
    context.bench_mark="sha-600498"
    schedule_function(change_stocks,DateRule.month(10),TimeRule.once_per_day() )
    ma20=SMAFactor(20,"close")
    reg_factor("ma20",ma20)
    ma30=SMAFactor(30,"close")
    reg_factor("ma30",ma30)

def change_stocks(context,data):
    for pos in context.portfolio.positions.keys():
        order_target(pos,0)  
    out20=factor_output("ma20","shz-000001")["ma20"]
    out30=factor_output("ma30","shz-000001")["ma30"]
    if out20>out30:
        chase_little(context,data)
    else:
        for pos in context.portfolio.positions.keys():
            order_target(pos,0)  
        follow_country(context,data)
        
def chase_little(context,data):
    df = get_fundamentals("share_limit_sale").sort(['share_limit_sale'],ascending=False).head(5)
    for stock in df.get("share_limit_sale").keys():
        order_percent(stock,18)
                
def follow_country(context,data):
    df = get_fundamentals("share_limit_sale_country").sort(['share_limit_sale_country'],ascending=False).head(5)
    for stock in df.get("share_limit_sale_country").keys():
        order_percent(stock,18)

我们看看回测结果,还是蛮犀利的,胜过大盘很多很多。

  • 更多优化

我相信看到这里你也会有更多想法:

1 )更多轮动思路,不一定纠结与国家持股

2 )更多精细的控制,包括加入止损止盈等等

3 )更复杂的仓位控制

如果你真的是程序员,进入镭矿 raquant量化平台亲自试试吧。

1287 次点击
所在节点    问与答
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/354306

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX