小市值策略


小市值策略,本質上說就是市值小的股票,在將來上漲的概率越大
據刑不行分享小市值策略提到:一個過去10年可以翻400倍的選股策略,可以說是非常的誇張的了,也想着一探小市值的風采
在刑不行關於小市值的策略是:在每個月的月底,找出市值最小的10只股票,然后全倉等額買入,每月如此反復。
根據聚寬提供的小市值策略,我們將其稍微修改下,每25個交易日調倉頻率,每次找出市值最小的10只股票,全倉等額買入,策略非常的簡單
代碼如下:

'''
篩選出市值介於20-30億的股票,選取其中市值最小的三只股票,
每天開盤買入,持有五個交易日,然后調倉。
'''

## 初始化函數,設定要操作的股票、基准等等
def initialize(context):
    # 設定滬深300作為基准
    set_benchmark('000300.XSHG')
    # True為開啟動態復權模式,使用真實價格交易
    set_option('use_real_price', True) 
    # 設定成交量比例
    set_option('order_volume_ratio', 1)
    # 股票類交易手續費是:買入時佣金萬分之三,賣出時佣金萬分之三加千分之一印花稅, 每筆交易佣金最低扣5塊錢
    set_order_cost(OrderCost(open_tax=0, close_tax=0.001, \
                             open_commission=0.0003, close_commission=0.0003,\
                             close_today_commission=0, min_commission=5), type='stock')
    # 持倉數量
    g.stocknum = 10 
    # 交易日計時器
    g.days = 0 
    # 調倉頻率
    g.refresh_rate = 25
    # 運行函數
    run_daily(trade, 'every_bar')

## 選出小市值股票
def check_stocks(context):
    # 設定查詢條件
    q = query(
            valuation.code,
            valuation.market_cap
        ).filter(
            valuation.market_cap.between(20,30)
        ).order_by(
            valuation.market_cap.asc()
        )

    # 選出低市值的股票,構成buylist
    df = get_fundamentals(q)
    buylist =list(df['code'])

    # 過濾停牌股票
    buylist = filter_paused_stock(buylist)

    return buylist[:g.stocknum]
  
## 交易函數
def trade(context):
    if g.days%g.refresh_rate == 0:

        ## 獲取持倉列表
        sell_list = list(context.portfolio.positions.keys())
        # 如果有持倉,則賣出
        if len(sell_list) > 0 :
            for stock in sell_list:
                order_target_value(stock, 0)

        ## 分配資金
        if len(context.portfolio.positions) < g.stocknum :
            Num = g.stocknum - len(context.portfolio.positions)
            Cash = context.portfolio.cash/Num
        else: 
            Cash = 0

        ## 選股
        stock_list = check_stocks(context)

        ## 買入股票
        for stock in stock_list:
            if len(context.portfolio.positions.keys()) < g.stocknum:
                order_value(stock, Cash)

        # 天計數加一
        g.days = 1
    else:
        g.days += 1

# 過濾停牌股票
def filter_paused_stock(stock_list):
    current_data = get_current_data()
    return [stock for stock in stock_list if not current_data[stock].paused]

最后的回測結果更是恐怖,策略收益高達到856%,完全就是在碾壓作為基准的滬深300指數(回測時間為2018-07-01到2020-07-01,初始資金為10萬元),但就是最大回測有太高

那為何這么多年了,小市值策略還這么牛叉呢。(參考:量化獅的知乎回答

從上面的回測結果也發現,小市值策略絕對是大幅度跑贏指數的,甚至可以說是A股市場眾多因子中表現最牛叉的一個,並且,在國外不同市場都得到了實證,不可能因為IPO放水就失效了
小市值因子有效的內因有很多,其中一個是小市值企業的成長性,一家30億市值的企業成長為300億的企業,其難度明顯要比300億的企業成長為3000億要小得多。另一個就是諾貝爾獎得主尤金·瑪法的三因子模型提出的風險溢價因素,也證明了小市值因子的有效性。這兩個內因只是說明了小市值股票具備一定溢價和超額收益,真正決定小市值策略超額收益的還是小市值股票的高波動性

小市值策略,賺在輪動贏在波動

輪動收益 = 輪動頻率 * 輪動波幅

小市值股票的波動性要比市值中性或大市值股票大得多,同時,A股小市值股票又要比國際市場的波動性更大,所以按照策略進行輪動的交易者可以更頻繁的獲得輪動阿爾法收益
A股市場小市值股票之所以存在超高的輪動收益,很大程度上是來源於市場中大量的非理性散戶行為,比如借殼、充足、題材概念、還有沒有道理的高配送等等,但隨着市場環境的變化以及監管力度的加強,小市值股票短期內暴漲暴跌的現象肯定會逐漸受到遏制,個股波動的頻率和波幅會日趨減少,必然會影響小市值策略未來的預期收益率


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM