因子選股

 

# 導入函數庫
from jqdata import *

# 初始化函數,設定基準等等
def initialize(context): # 設定滬深300做爲基準
    set_benchmark('000300.XSHG') # 開啓動態復權模式(真實價格)
    set_option('use_real_price', True) # 輸出內容到日誌 log.info()
    log.info('初始函數開始運行且全局只運行一次') # 過濾掉order系列API產生的比error級別低的log
    # log.set_level('order', 'error')
    
    ### 股票相關設定 ###
    # 股票類每筆交易時的手續費是:買入時佣金萬分之三,賣出時佣金萬分之三加千分之一印花稅, 每筆交易佣金最低扣5塊錢
    set_order_cost(OrderCost(close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5), type='stock') g.security = get_index_stocks('000300.XSHG') g.q = query(valuation).filter(valuation.code.in_(g.security)) g.N = 10 run_monthly(handle,1) def handle(context): df = get_fundamentals(g.q) df = df.sort(columns='market_cap') df = df[:g.N] tohold = df['code'].values print(tohold) for stock in context.portfolio.positions: if stock not in tohold: #賣出
 order_target(stock,0) tobuy = [stock for stock in tohold if stock not in context.portfolio.positions] cash = context.portfolio.available_cash n = len(tobuy) #買入
    for stock in tobuy: order_value(stock,int(cash/n))
相關文章
相關標籤/搜索