「量化投资」行业轮动(股票)

admin · 2020-03-16 21:40 · 来源:股票学习 · 关键字:量化投资 · 浏览量:次 · 本文有1371个文字,大小约为5KB,预计阅读时间4分钟

行业轮动(股票)

1.# coding=utf-8

2.from__future__ importprint_function,absolute_import,unicode_literals

3.importnumpy asnp

4.fromgm.api import*

5.

6.'''

7.本策略每隔1个月定时触发计算SHSE.000910.SHSE.000909.SHSE.000911.SHSE.000912.SHSE.000913.SHSE.000914

8.(300工业.300材料.300可选.300消费.300医药.300金融)这几个行业指数过去

9.20个交易日的收益率并选取了收益率最高的指数的成份股获取并获取了他们的市值数据

10.随后把仓位调整至市值最大的5只股票上

11.回测数据为:SHSE.000910.SHSE.000909.SHSE.000911.SHSE.000912.SHSE.000913.SHSE.000914和他们的成份股

12.回测时间为:2017-07-01 08:00:00到2017-10-01 16:00:00

13.'''

14.

15.

16.definit(context):

17.# 每月第一个交易日的09:40 定时执行algo任务

18.schedule(schedule_func=algo,date_rule='1m',time_rule='09:40:00')

19.# 用于筛选的行业指数

20.context.index =['SHSE.000910','SHSE.000909','SHSE.000911','SHSE.000912','SHSE.000913','SHSE.000914']

21.# 用于统计数据的天数

22.context.date =20

23.# 最大下单资金比例

24.context.ratio =0.8

25.

26.

27.defalgo(context):

28.# 获取当天的日期

29.today =context.now

30.# 获取上一个交易日

31.last_day =get_previous_trading_date(exchange='SHSE',date=today)

32.return_index =[]

33.# 获取并计算行业指数收益率

34.

35.fori incontext.index:

36.return_index_his =history_n(symbol=i,frequency='1d',count=context.date,fields='close,bob',

37.fill_missing='Last',adjust=ADJUST_PREV,end_time=last_day,df=True)

38.return_index_his =return_index_his['close'].values

39.return_index.append(return_index_his[-1]/return_index_his[0]-1)

40.# 获取指定数内收益率表现最好的行业

41.sector =context.index[np.argmax(return_index)]

42.print('最佳行业指数是: ',sector)

43.# 获取最佳行业指数成份股

44.symbols =get_history_constituents(index=sector,start_date=last_day,end_date=last_day)[0]['constituents'].keys()

45.# 获取当天有交易的股票

46.not_suspended_info =get_history_instruments(symbols=symbols,start_date=today,end_date=today)

47.not_suspended_symbols =[item['symbol']foritem innot_suspended_info ifnotitem['is_suspended']]

48.

49.# 获取最佳行业指数成份股的市值,从大到小排序并选取市值最大的5只股票

50.fin =get_fundamentals(table='tq_sk_finindic',symbols=not_suspended_symbols,start_date=last_day,

51.end_date=last_day,limit=5,fields='NEGOTIABLEMV',order_by='-NEGOTIABLEMV',df=True)

52.fin.index =fin['symbol']

53.# 计算权重

54.percent =1.0/len(fin.index)*context.ratio

55.# 获取当前所有仓位

56.positions =context.account().positions()

57.# 如标的池有仓位,平不在标的池的仓位

58.forposition inpositions:

59.symbol =position['symbol']

60.ifsymbol notinfin.index:

61.order_target_percent(symbol=symbol,percent=0,order_type=OrderType_Market,

62.position_side=PositionSide_Long)

63.print('市价单平不在标的池的',symbol)

64.# 对标的池进行操作

65.forsymbol infin.index:

66.order_target_percent(symbol=symbol,percent=percent,order_type=OrderType_Market,

67.position_side=PositionSide_Long)

68.print(symbol,'以市价单调整至仓位',percent)

69.

70.

71.if__name__ =='__main__':

72.'''

73.strategy_id策略ID,由系统生成

74.filename文件名,请与本文件名保持一致

75.mode实时模式:MODE_LIVE回测模式:MODE_BACKTEST

76.token绑定计算机的ID,可在系统设置-密钥管理中生成

77.backtest_start_time回测开始时间

78.backtest_end_time回测结束时间

79.backtest_adjust股票复权方式不复权:ADJUST_NONE前复权:ADJUST_PREV后复权:ADJUST_POST

80.backtest_initial_cash回测初始资金

81.backtest_commission_ratio回测佣金比例

82.backtest_slippage_ratio回测滑点比例

83.'''

84.run(strategy_id='strategy_id',

85.filename='main.py',

86.mode=MODE_BACKTEST,

87.token='token_id',

88.backtest_start_time='2017-07-01 08:00:00',

89.backtest_end_time='2017-10-01 16:00:00',

90.backtest_adjust=ADJUST_PREV,

91.backtest_initial_cash=10000000,

92.backtest_commission_ratio=0.0001,

93.backtest_slippage_ratio=0.0001)

行业轮动(股票)

行业轮动(股票)

版权声明:本文由admin原创编辑而成,只为分享更好的金融知识,转载请注明来源

本文标题:「量化投资」行业轮动(股票)

本文网址:http://www.777cn.com.cn/gpxx/2148.html

「量化投资」行业轮动(股票)相关文章推荐:

白银投资基本面(什么是基本面量化投资?)

量化投资(量化管理误区)

量化投资(股票量化交易策略是什么意思)

量化投资(如何量化数据)

量化投资(量化投资策略的优势有哪些)

量化投资(如何量化指标)

量化投资(什么是“量化基本面投资”)

量化投资(什么是量化投资交易策略)

量化投资(量化投资的优势有哪些)

量化投资(量化投资、量化交易、量化金融,这三者有什)

量化投资(量化投资策略到底什么是量化投资)

量化投资(什么是量化投资?)

量化投资(什么是真正的量化投资)

量化投资(到底什么是“量化投资”)

量化投资(真正的量化投资是什么)

热门浏览