请选择 进入手机版 | 继续访问电脑版
楼主: _wallstreetcat_
1826 0

[交易策略] 大师系列之价值投资法 [推广有奖]

  • 0关注
  • 36粉丝

讲师

9%

还不是VIP/贵宾

-

威望
0
论坛币
98 个
通用积分
40.6554
学术水平
14 点
热心指数
13 点
信用等级
13 点
经验
6402 点
帖子
257
精华
0
在线时间
234 小时
注册时间
2017-3-16
最后登录
2023-11-21

_wallstreetcat_ 企业认证  发表于 2017-7-20 09:07:32 |显示全部楼层 |坛友微信交流群
相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
国外证券市场比较悠久,曾出现过本杰明·格雷厄姆、彼得·林奇、詹姆斯·奥肖内西、查尔斯·布兰德斯等多位投资大师,这些投资大师有一个共同点,他们在证券市场上保持了常年的稳定持续盈利,他们的投资法则及选股标准在一些著作中有详细的描述。值得欣慰的是,申万宏源证券研究所发布了<申万宏源-申万大师系列价值投资篇>(https://bbs.pinggu.org/thread-3975134-1-1.html)系列第一季共20篇研究报告。学习这些报告主要有两个目的:

一是我们自身想去认真的学习经典,复制这些策略本身就是自我学习过程,我们深信向这些被市场证明长期优秀,被后世尊为经典的投资大师学习,必然值得,必有所得;

二是复制和验证大师策略的过程, 会自然的驱使我们更多的从投资逻辑和投资思维上思考收益之源,而不再是不停的数据挖掘和数理分析。大师系列的尝试,于我们是一个求道,而非求术的旅程。

本贴主要是帮助用户怎样开发大师系列的策略,让大家更了解我们的平台,同时帮助大家在我们的平台上开发更丰富的策略。因此我们介绍一种简单的价值投资法来选取股票,规则如下:


    策略逻辑:当股票处于价值洼地时,具备投资价值

    策略内容:每月月初买入市盈率小于15倍、市净率小于1.5倍的30只股票,持有至下个月月初再调仓

    资金管理:等权重买入

    风险控制:无单只股票仓位上限控制、无止盈止损

第一步:获取数据

BigQuant平台具有丰富的金融数据,包括行情数据和财报数据,并且具有便捷、简单的[API](https://bigquant.com/docs/data_history_data.html)调用接口。获取数据的代码如下:


start_date = '2013-02-01'
end_date = '2017-07-18'
instruments = D.instruments()
# 获取市盈率、市净率、成交额数据
history_data = D.history_data(instruments, start_date=start_date,
               end_date= end_date, fields=[ 'pb_lf', 'pe_ttm','amount'])

在上面的代码中,history_data是我们平台获取数据的一个重要API。fields参数为列表形式,传入的列表即为我们想要获取的数据。

第二步:整理买入股票列表


# 该函数的目的是通过history_data这个大的原始数据,获取每日满足价值投资股票列表
def seek_symbol(df):
    selected = df[(df['pb_lf'] < 1.5)
        & (df['pe_ttm'] < 15)
        & (df['amount'] > 0)
        & (df['pb_lf'] > 0)
        & (df['pe_ttm'] > 0 ) ]

    # 按pe_ttm和pb_lf 升序排列
    selected = selected.sort_values(['pe_ttm','pb_lf'])
    return list(selected.instrument)[:30] # 记得转化成list

daily_buy_stock = history_data.groupby('date').apply(seek_symbol)




第三步:回测主体
我们平台策略回测有丰富的文档介绍,请参考:

def initialize(context):
    # 设置交易费用,买入是万三,卖出是千分之1.3,如果不足5元按5元算
    context.set_commission(PerOrder(buy_cost=0.0003,   
                                        sell_cost=0.0013, min_cost=5))
    # 设置换仓规则,即每个月月初换仓,持有至下个月,再换仓
    context.schedule_function(rebalance,
                                          date_rule=date_rules.month_start(days_offset=0))
    # 上面schedule_function函数的这句代码,其实可以写到一行,分两行是为了便于展示


def handle_data(context,data):
    pass

# 换仓
def rebalance(context, data):
    # 日期
    date = data.current_dt.strftime('%Y-%m-%d')

    # 买入股票列表
    stock_to_buy = daily_buy_stock[date]
    # 目前持仓列表   
    stock_hold_now = [equity.symbol for equity
                               in context.portfolio.positions]
    # 继续持有股票列表
    no_need_to_sell = [i for i in stock_hold_now
                               if i in stock_to_buy]
    # 卖出股票列表
    stock_to_sell = [i for i in stock_hold_now if
                           i not in no_need_to_sell]
   # 执行卖出
    for stock in stock_to_sell:
        if data.can_trade(context.symbol(stock)):
            context.order_target_percent(context.symbol(stock), 0)

    if len(stock_to_buy) == 0:
        return
    # 等权重
    weight = 1 / len(stock_to_buy)
    # 执行买入
    for  cp in stock_to_buy:
        if data.can_trade(context.symbol(cp)):
            context.order_target_percent(context.symbol(cp), weight)


第四步:回测接口

# 使用第四版的回测接口,需要传入多个策略参数
m=M.trade.v2(
    instruments=instruments,
    start_date=start_date,
    end_date=end_date,
    # 必须传入initialize,只在第一天运行
    initialize=initialize,
    #  必须传入handle_data,每个交易日都会运行
    handle_data=handle_data,
    # 买入以开盘价成交
    order_price_field_buy='open',
    # 卖出也以开盘价成交
    order_price_field_sell='open',
    # 策略本金
    capital_base=1000000,
    # 比较基准:沪深300
    benchmark='000300.INDX',
)

好嘞,策略就完全写好了。我们运行完曲线如下:

1.png


整体来看,该策略算得上是正收益系统策略。

是不是发现我们平台很方便开发策略?之前朋友问我,为什么Python运行速度不是最快但会成为量化的主流语言。其实对于量化研究人员来说,虽然速度是一方面考虑,但更多的是为了验证策略思想,Python语言的优势就是在此,有一个思想就可以很快的将思想验证,然而C++虽然速度快,但要验证一个简单的思想却要编写大量的代码。好比为什么飞机速度快,但市里面上班开汽车就足够了(不考虑其他因素),因为汽车足够灵活。所以,还在犹豫选择什么语言从事量化投资的小伙伴们,Python就是你比较好的选择。本文到此就要结束了,策略的完整代码分享在文末。
https://i.bigquant.com/user/iquant/lab/share/%E5%A4%A7%E5%B8%88%E7%B3%BB%E5%88%97%E4%B9%8B%E4%BB%B7%E5%80%BC%E6%8A%95%E8%B5%84%E6%B3%95.ipynb?_t=1500372929564?rsdfgx



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝


您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-3-28 21:58