2005年,格林布拉特将自己长达20年的投资经验浓缩成一本仅有150页的小书——《股市稳赚》(The Little Book That Beats The Market),他创造的这一投资方法因此广为流传,并被称为“神奇公式”。
格林布拉特的投资理念来源于价值投资,他要做的就是找到物美价廉的公司,尤其是在市场出现特殊情况的背景下低价买入拥有好业务的公司。价廉物美简单说就是一方面寻找好的业务,另一方,面寻找便宜的股票。在《股市稳赚》中,格林布拉特指出:好的业务是指有形资本回报率高的公司,而便宜的股票则是指净收益率高的股票。乔尔·格林布拉特认为,好企业就是资本回报率高(ROIC)的企业,便宜也就是低估值,可以用PE、PB、EBIT/EV等来衡量。
神奇公式筛选股票函数实现

排除不适合ROIC衡量的企业,例如银行等。
将股票以ROIC与EP排序,再将ROIC和EP的序数相加。
最后得到序数之和选取最大的30只股票。
import numpy as np
import pandas as pd
import datetime
def MagicFormulaSelect(universe,date):

"""
给定股票列表和日期,返回神奇公式评分最高的股票的30只股票
Args:universe (list of str): 股票列表(有后缀)date (str or datetime): 常见日期格式支持
Returns:list: 神奇公式评分最高的股票的30只股票Examples:>> universe = set_universe('HS300')>> buy_list = MagicFormulaSelect(universe,'20160909')
"""trade_date = date if isinstance(date,datetime.datetime) else parse(date)
trade_date = trade_date.strftime('%Y%m%d')
df_roic = DataAPI.MktStockFactorsOneDayProGet(tradeDate=trade_date,secID=universe,ticker=u"",field=u"secID,tradeDate,ROIC",pandas="1")
df_roic = df_roic.dropna()
df_roic = df_roic.reset_index()
df_roic['rank_roic'] = df_roic['ROIC'].rank()
df_pe = DataAPI.MktStockFactorsOneDayProGet(tradeDate=trade_date,secID=df_roic['secID'].tolist(),ticker=u"",field=u"secID,tradeDate,PE",pandas="1")
df_pe['EP'] = 1.0/df_pe['PE']
df_pe['rank_ep'] = df_pe['EP'].rank()
df_rank = pd.concat([df_roic[['secID','rank_roic']],df_pe[['rank_ep']]],axis=1)
df_rank['rank_sum'] = df_rank['rank_roic'] + df_rank['rank_ep']
return df_rank.sort_values(['rank_sum'],ascending=False)['secID'].tolist()[0:30]

start = ‘2013-01-01’ # 回测起始时间
end = ‘2016-09-19’ # 回测结束时间
benchmark = ‘HS300’ # 策略参考标准
universe = DynamicUniverse(‘A’) # 证券池,支持股票和基金
capital_base = 1000000 # 起始资金
freq = ‘d’ # 策略类型,’d’表示日间策略使用日线回测,’m’表示日内策略使用分钟线回测
refresh_rate = 20 # 调仓频率,表示执行handle_data的时间间隔,若freq = ‘d’时间间隔的单位为交易日,若freq = ‘m’时间间隔为分钟

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

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

buy_list = MagicFormulaSelect(account.universe,account.previous_date)for stk in account.avail_security_position:if stk not in buy_list:order_to(stk, 0)
if len(buy_list) > 0:weight = min(0.1,1.0/len(buy_list))
else:weight = 0
for stk in buy_list:if stk not in account.security_position:order_pct_to(stk,weight)

乔尔·格林布拉特的神奇公式相关推荐

  1. 【翻译】乔尔测试:改进代码的12步

    翻译文章:<乔尔测试:改进代码的12步>,欢迎提意见. 原作者:Joel Spolsky 原文链接:原文链接 JOEL谈软件 我叫 Joel Spolsky, 是纽约市的一名软件开发者.更 ...

  2. 亿万富翁神奇公式:年存1.4万四十年变1亿

    许多人不明白,富人何以能在一生中积累巨大的财富?阔佬们究竟拥有什么特殊技能,是那些天天省吃俭用.日日勤奋工作的上班族所欠缺的?到底理财致富的条件何在? 说实话,和诸位一样,这些问题长期来也令我不得&q ...

  3. 程序员生存环境之乔尔测试

    程序员生存环境之乔尔测试 原文出自<软件随想录>第三节,有兴趣的可以去搜索?一下,阅读一下原文. 乔尔测试很简洁,每个问题只需要回答是或否就行了,总共12分,12分为生存环境完美,11分尚 ...

  4. 聊聊人工智能的神奇公式:贝叶斯公式

    聊聊人工智能的神奇公式:贝叶斯公式 贝叶斯公式由英国数学家贝叶斯 ( Thomas Bayes 1702-1761 ) 发展,用来描述两个条件概率之间的关系.贝叶斯原本是个神父,他为了证明上帝的存在而 ...

  5. 创造亿万富翁的神奇公式

    <div id="header"> <h1 class="blogName"></h1> <div class=&qu ...

  6. 保罗·乔尔达诺《质数的孤独》——读后感

    看这本书首先是被这本书的名字吸引到了,质数也就是素数,只能被1和自身整除.原本以为是写关于数学方面的书,咳咳,可能是我太天真了,然而却是写的两个孤独的人虽然彼此都有对方,然而却孤独的终老故事.本书的作 ...

  7. 微积分知识点回顾与总结(九):曲线与曲面积分,格林,高斯,斯托克斯公式

    微积分知识点回顾与总结(九):曲线与曲面积分格林,高斯,斯托克斯公式 1.曲线积分 1.1对弧长的曲线积分 1.2对坐标的曲线积分 1.3计算方法 1.3.1定积分法 1.3.2格林公式(Green) ...

  8. 使用numpy的金融函数来看看投资的神奇公式

    一.NUMPY金融函数 1.np.fv 终值函数 numpy.fv(rate, nper, pmt, pv, when='end') rate:利率 nper:投入的次数 pmt,每次投入值,投入则添 ...

  9. 学点新东西:玩转Excel神奇公式--创建加法表格和汇总数据

    这个系列能够帮你提升 <Excel> 的使用技能. 很多人都认为,<Excel>里的公式是用来为特定单元格产出单一结果的. 实际上,<Excel>的动态数组功能可以 ...

最新文章

  1. php打印出来乱码_PHP输出中文乱码的解决方法(转载)
  2. 80%的企业社会化商务应用可能无法取得预期效果
  3. Sharepoint学习笔记--Farm Backup Error:Administration 2010 Service is not started
  4. 马尔科夫网络和一阶马尔科夫链
  5. [转]github中,fork了别人的项目之后,如何将别人新增的分支同步过来?
  6. python核心编程6-14习题的解题思路
  7. 如何获取当前刀具号_数控刀具的选用原则,如何使用数控刀具?一文全面介绍数控刀具...
  8. 不知该买哪儿的房?数据分析来为你解答哪儿的房值得买
  9. 微软开发无人店技术叫阵Amazon Go,以后沃尔玛也能拿了就走?
  10. vue-cli的项目中关于axios的全局配置,结合element UI,配置全局loading,header中做token传输...
  11. Enterprise Library 4.1学习笔记2——缓存应用程序块之FileDepende
  12. Git_Eclipse:[2]Git初始化配置
  13. Atitit 项目范围管理 目录 1. 应该包含下面过程:启动、范围计划、范围定义、范围核实及范围变更控制 1 1.1. 项目范围管理的五个过程 1 2. 启动过程 1 2.1. 项目章程(如质量、
  14. 如何识别恶意网络蜘蛛
  15. java实习第一天日志
  16. word文档字间距怎么调?拯救死气沉沉的文字仅需这样…
  17. php语言标记可用什么符号,【单选题】不可用作PHP语言标记用的是什么( )符号 A. ? B. 〈php C. ?...
  18. 初学者 深度学习 人工神经网络 可视化网站
  19. qt 从布局中删除子控件
  20. VR/AR工作原理、目前存在的技术问题

热门文章

  1. swift地图定位(二十)百度地图的使用(POI)
  2. java jtable 行_java – JTable行选择
  3. 幸福就是每一个微小愿望的达成
  4. h5中 i b s u small标签的使用
  5. IT员工招聘:把好心理这道关
  6. 内网安装ntpdate时间同步工具
  7. Axure绘制密码输入框
  8. linux 取消utc时间,ubuntu系统下禁用utc时间的设置方法
  9. 成都信息工程大学计算机导师,硕士生导师 华 维-成都信息工程大学大气科学学院 School of Atmospheric Sciences,CUIT...
  10. 弘辽科技:搞客单价标品怎么拿下转化率?