打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
多因子策略(一) | RiceQuant米筐量化社区 交易策略论坛
回测收益回测年化收益基准收益AlphaBetaSharpe最大回撤
444.638%77.435%103.825%0.19170.85561.073354.812%
Created with Highstock 4.2.4缩放1月3月6月1年全部从2010-01-04到2015-12-18累计收益20112012201320142015-50.00%0%50.00%100.00%150.00%200.00%250.00%300.00%350.00%400.00%450.00%500.00%550.00%600.00%650.00%2015-12-18 00:00:00
● 我的策略累计收益: 444.638%
● 基准策略累计收益: 103.825%
收益
1个月(策略&基准)
3个月(策略&基准)
6个月(策略&基准)
12个月(策略&基准)
2010.01
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2010.02
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2010.03
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2010.04
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2010.05
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2010.06
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2010.07
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2010.08
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2010.09
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2010.10
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2010.11
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2010.12
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2011.01
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2011.02
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2011.03
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2011.04
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2011.05
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2011.06
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2011.07
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2011.08
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2011.09
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2011.10
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2011.11
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2011.12
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2012.01
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2012.02
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2012.03
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2012.04
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2012.05
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2012.06
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2012.07
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2012.08
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2012.09
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2012.10
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2012.11
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2012.12
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2013.01
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2013.02
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2013.03
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2013.04
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2013.05
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2013.06
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2013.07
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2013.08
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2013.09
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2013.10
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2013.11
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2013.12
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2014.01
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2014.02
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2014.03
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2014.04
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2014.05
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2014.06
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2014.07
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2014.08
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2014.09
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2014.10
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2014.11
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2014.12
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2015.01
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2015.02
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2015.03
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2015.04
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2015.05
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2015.06
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2015.07
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2015.08
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2015.09
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2015.10
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2015.11
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
2015.12
N/A    N/A
N/A    N/A
N/A    N/A
N/A    N/A
# 可以自己import我们平台支持的第三方python模块,比如pandas、numpy等。import mathimport numpy as npimport pandas as pdimport talibOBSERVATION=40# 在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。def init(context): context.benchmark='000037.XSHG' context.stocks =industry('C27') update_universe(context.stocks) get_parameter(context,None) context.number=12 scheduler.run_weekly(get_parameter,weekday=1) scheduler.run_daily(handle_bar2)# 你选择的证券的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新def get_parameter(context,bar_dict): #获取基本面数据 fundamental_df = get_fundamentals( query(fundamentals.eod_derivative_indicator.pe_ratio,fundamentals.eod_derivative_indicator.pb_ratio,fundamentals.eod_derivative_indicator.market_cap,fundamentals.financial_indicator.inc_revenue,fundamentals.financial_indicator.inc_profit_before_tax ).filter( fundamentals.income_statement.stockcode.in_(context.stocks) ).filter( fundamentals.eod_derivative_indicator.pb_ratio>0 ).filter( fundamentals.eod_derivative_indicator.pe_ratio>0 ).filter( fundamentals.financial_indicator.inc_revenue>-99 ).filter( fundamentals.financial_indicator.inc_profit_before_tax>-99 ) ) df=fundamental_df.T #对基本面数据进行处理,便于计算 pe_log=list(map(lambda x:math.log(float(x)),df.iloc[:,0])) pb_log=list(map(lambda x:(float(x)),df.iloc[:,1])) aaa=list(map(lambda x:float(x),df.iloc[:,2])) aaa=pd.DataFrame(aaa) meanc=float(df.iloc[:,2].mean()) sdc=float(aaa.std()) cap_sd=list(map(lambda x:(float(x)-meanc)/sdc,df.iloc[:,2])) inc_revenue=list(map(lambda x:math.log(float(x)*0.01+1),df.iloc[:,3])) inc_profit=list(map(lambda x:math.log(float(x)*0.01+1),df.iloc[:,4])) #通过多元回归得到相应的参数 x=[] x.append(pb_log) x.append(inc_revenue) x.append(inc_profit) x.append(cap_sd) #x.append(pcf_log) x=np.mat(x) y=np.mat(pe_log) xx=(x*x.T).I beta=xx*(x*y.T) mean=np.mat([sum(pb_log)/len(pb_log),sum(inc_revenue)/len(inc_revenue),sum(inc_profit)/len(inc_profit),sum(cap_sd)/len(cap_sd)]) alpha=sum(pe_log)/len(pe_log)-mean*beta context.alpha=alpha context.beta=betadef handle_bar(context, bar_dict): passdef handle_bar2(context, bar_dict): #获取基本面数据 fundamental_df = get_fundamentals( query(fundamentals.eod_derivative_indicator.pe_ratio,fundamentals.eod_derivative_indicator.pb_ratio,fundamentals.eod_derivative_indicator.market_cap,fundamentals.financial_indicator.inc_revenue,fundamentals.financial_indicator.inc_profit_before_tax ).filter( fundamentals.income_statement.stockcode.in_(context.stocks) ).filter( fundamentals.eod_derivative_indicator.pb_ratio>0 ).filter( fundamentals.eod_derivative_indicator.pe_ratio>0 ).filter( fundamentals.financial_indicator.inc_revenue>-99 ).filter( fundamentals.financial_indicator.inc_profit_before_tax>-99 ) ) df=fundamental_df.T #处理基本面数据 #logger.info(df) df['pe_log']=list(map(lambda x:math.log(float(x)),df.iloc[:,0])) pb_log=list(map(lambda x:(float(x)),df.iloc[:,1])) aaa=list(map(lambda x:float(x),df.iloc[:,2])) aaa=pd.DataFrame(aaa) meanc=float(df.iloc[:,2].mean()) sdc=float(aaa.std()) cap_sd=list(map(lambda x:(float(x)-meanc)/sdc,df.iloc[:,2])) inc_revenue=list(map(lambda x:math.log(float(x)*0.01+1),df.iloc[:,3])) inc_profit=list(map(lambda x:math.log(float(x)*0.01+1),df.iloc[:,4])) x=[] x.append(pb_log) x.append(inc_revenue) x.append(inc_profit) x.append(cap_sd) #x.append(pcf_log) x=np.mat(x) #利用回归参数计算价值 pe_log_es=x.T*context.beta+context.alpha df['pe_log_es']=pe_log_es df['rate']=df['pe_log']/df['pe_log_es'] df=df[df['rate']>0] df=df.sort(columns='rate') df=df.head(context.number) context.to_buy=df.T.columns.values rebalance(context, bar_dict) def rebalance(context, bar_dict): stocks = set(context.to_buy) holdings = set(get_holdings(context)) to_buy = stocks - holdings to_sell = holdings - stocks to_buy2= stocks - holdings for stock in to_sell: if bar_dict[stock].is_trading: order_target_percent(stock , 0) #logger.info(len(to_buy)) to_buy = get_trading_stocks(to_buy, context, bar_dict) if len(to_buy) >0: cash = context.portfolio.cash average_value = 0.98 * cash / len(to_buy) for stock in to_buy: if bar_dict[stock].is_trading: order_target_percent(stock , 0.142) def get_trading_stocks(to_buy, context, bar_dict): trading_stocks = [] for stock in to_buy: if bar_dict[stock].is_trading: trading_stocks.append(stock) return trading_stocksdef get_holdings(context): positions = context.portfolio.positions holdings = [] for position in positions: if positions[position].quantity > 0: holdings.append(position) return holdings
策略名称: mutifactor 9
开始时间: 2010-01-01
结束时间: 2015-12-18
股票初始资金: undefined
回测频率: 1d
基准合约: --
佣金倍率:
撮合方式:
滑点:
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
利用Python实现量化交易股票策略
【高收益低回撤】【止损】【夏普率4.0】改进版小盘股策略 | RiceQuant米筐量化社区 交易策...
【止损】 止损/止盈 方案目录 必读 | RiceQuant米筐量化社区 交易策略论坛
Spring: context:exclude-filter 与 context:include-filter
老湿复盘手记:为“上班族”定制四象限策略
基金吧
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服