买垃圾股就是A股最好的投资策略 不信我们看看。 我只买market cap最小的100支股票。 每月轮换。

用了最新的api 剔除停牌的股票fix 了一些bug

源代码


def init(context):
    context.limit = 100
    scheduler.run_monthly(rebalance, monthday=1)


def handle_bar(context, bar_dict):
    pass

def before_trading(context):
    fundamental_df = get_fundamentals(
        query(
            fundamentals.eod_derivative_indicator.market_cap
        ).order_by(
            fundamentals.eod_derivative_indicator.market_cap.asc()
        ).limit(
            context.limit
        )
    )

    context.funamental_df = fundamental_df
    context.stocks = fundamental_df.columns.values
    update_universe(fundamental_df.columns.values)


def rebalance(context, bar_dict):
    stocks = set(context.stocks)
    holdings = set(get_holdings(context))

    to_buy = stocks - holdings
    to_sell = holdings - stocks

    for stock in to_sell:
        if bar_dict[stock].is_trading:
            order_target_percent(stock , 0)

    if len(to_buy) == 0:
        return

    to_buy = get_trading_stocks(to_buy, context, bar_dict)

    cash = context.portfolio.cash
    average_value = 0.95 * cash / len(to_buy)

    for stock in to_buy:
        if bar_dict[stock].is_trading:
            order_target_value(stock, average_value)

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_stocks

def get_holdings(context):
    positions = context.portfolio.positions

    holdings = []
    for position in positions:
        if positions[position].quantity > 0:
            holdings.append(position)

    return holdings

results matching ""

    No results matching ""