关于买入股票只数的问题


(ypf007) #1

通常买入5只股票感觉太少了,看有没有什么算法,可以控制每天买入的股票只数,比如第一天买5只,第二天买10只……,之类的


(达达) #2

下面这段代码是在initial中出现的,用来控制买入的股票数量和仓位分配 :

   stock_count = 5
   # 每只的股票的权重,如下的权重分配会使得靠前的股票分配多一点的资金,[0.339160, 0.213986, 0.169580, ..]
   context.stock_weights = T.norm([1 / math.log(i + 2) for i in range(0, stock_count)])

而handle中的买入列表是用len( context.stock_weights )控制买入个数的,由于initial模块只会在第一天运行一下,因此如果您需要每天变化这个值,您需要把这部分代码移动到盘前处理函数模块中去,并利用当前的交易天数context.trading_day_index的值进行判断来修改每天的stock_count 和context.stock_weights 以实现控制买入个数的变化,举例如下

操作如下:在trade模块的盘前处理模块中:
image

加入代码:

def bigquant_run(context,data):
    if context.trading_day_index==0:
        stock_count = 5
    elif context.trading_day_index==1:
        stock_count = 10
    else:
        stock_count = 8
    context.stock_weights = T.norm([1 / math.log(i + 2) for i in range(0, stock_count)])

(ypf007) #3

好的,谢谢了