博客 / 詳情

返回

最直白的量化入門

在B站、抖音啥的視頻平台搜量化入門,都雲裏霧裏的;要不就是量化教程會從頭給你講量化歷史python基礎,真正到量化都好幾章過去了。所以這裏分享下我的量化入門心得。

量化到底是什麼

其實量化就是將投資思想和邏輯通過數學建模和數據分析的方式固化下來,然後用計算機程序將其轉化為可以自動執行的的交易指令。


説人話,就是假設我現在的策略是隻持有A股市值最高的股票,那麼此時我的策略因子就是“市值最高”。在獲取股市信息後,取市值最高的股票進行買入操作,每個月執行一次。


下面是我們獲取到的數據,那麼此時程序就會選中農業銀行,並賣出之前持有的股票,全倉買入農業銀行,等待下個月的交易信號。

大A市值前十股票


你看,量化就是這麼簡單,只不過我們現在這個策略有點太簡單了,我們可以試試跟蹤這個策略有多少收益,寫一個程序回測一下(代碼在下面,有興趣可以看下)。

如果按這個策略來的話一年也有個4.22%收益,但是大部分時間都在虧損而且回撤比收益大。

只持有A股市值最高的股票策略

"""
只持有A股市值最高的股票策略(聚寬平台運行)
"""
from jqdata import *

def initialize(context):
    log.set_level('order', 'error')
    set_option('use_real_price', True)
    set_option('avoid_future_data', True)
    set_benchmark('000300.XSHG')
    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.target = None

    run_monthly(select_top_market_cap, 1, time='09:30')
    run_monthly(rebalance, 1, time='10:00')

# 每月挑選上月市值最高的正常交易股票
def select_top_market_cap(context):
    dt_last = context.previous_date
    stocks = get_all_securities('stock', dt_last).index.tolist()
    stocks = [s for s in stocks if not (s.startswith('4') or s.startswith('8') or s.startswith('68'))]
    if not stocks:
        g.target = None
        return

    q = query(valuation.code, valuation.market_cap).filter(valuation.code.in_(stocks)).order_by(
        valuation.market_cap.desc()).limit(1)
    df = get_fundamentals(q, date=dt_last)
    g.target = df.iloc[0]['code'] if len(df) else None

    if g.target:
        info = get_security_info(g.target)
        market_cap = df.iloc[0]['market_cap']
        log.info('當月目標', g.target, info.display_name, '市值(億)', market_cap)

# 根據目標股票調倉,僅持有市值最高的標的
def rebalance(context):
    target = g.target
    current_positions = list(context.portfolio.positions.keys())

    if not target:
        return

    for stock in current_positions:
        if stock != target:
            order_target(stock, 0)

    if target not in context.portfolio.positions:
        current_data = get_current_data()
        if current_data[target].paused:
            return
        order_value(target, context.portfolio.available_cash)


其實上面就是量化的思想了,只不過真實的量化會加很多因子,比如我們完善下上面的策略,現在不是簡單粗暴的取市值最高,而是在市值前十的股票基礎上,取最近 25 個交易日的對數價格做加權線性迴歸,算斜率(就是漲得快不快);同時用同一迴歸結果評估殘差佔比R²(就是漲的穩不穩波動大不大),最終策略用“動量× R²”給股票打分,最高分的我們再持有,而不是隻拿市值第一。繼續看回測。


股價前十動量× R²策略

和上面一樣回撤太大,不咋實用。


看吧,其實量化就是上面寫的那樣,你通過觀察,調研確認一個策略(比如市值前十+動量*R²)能賺錢,就寫一個程序取實現你的策略。

現實的量化公司的策略肯定會更復雜,而且獲取到的數據會比我們更誇張,比如精細到馬六甲海峽的通行量、某片土地的農作物產量或者一些時事性新聞(比如最近google發佈了Gemini3 Pro)等等,然後程序得出買賣信號去執行。

還有上面的兩個程序都是每個月才執行一次,現實還有高頻交易量化(好像捲到1ms還是多少了,這個別碰,大機構手續費和你不是一個級別,你肯定虧)。當然如果是你自己編寫的可以設置為每週/每天/每小時。


既然都説AI投資量化,那最近火得不行的大模型(LLM)又怎麼用來投資?

拿最近很火的AI角鬥場:Alpha Arena舉例子。如果説前面的策略是“死板的公式”,那現在的 Alpha Arena 就是一場真實的AI投資實戰。

Alpha Arena AI投資

Alpha Arena 玩法是:直接給 GPT-5、Claude、DeepSeek 這些大模型每人發 1 萬美刀(真錢!),給它們連上交易所的網線,然後告訴它們:
“現在的比特幣價格是 90000,RSI 指標是 70,最近新聞裏大家都在罵美聯儲……好了,你自己決定買還是賣,不用問我。”

這玩意怎麼個運行法?它不再是看冷冰冰的數字矩陣,而是把市場翻譯成話餵給 AI 吃。程序會把行情變成一段這種 prompt(提示詞)扔給大模型:

“現在的市場有點瘋,均線金叉了,但是成交量在萎縮,而且剛才馬斯克在X上發了個表情包。你覺得接下來 10 分鐘會漲還是跌?請給出你的操作理由。”
  • 有的模型(比如 Claude) 可能是個激進派,看到一點波動就瘋狂梭哈,手續費虧得比賺的還多。
  • 有的模型(比如 DeepSeek) 表現得像個老油條,它能讀懂那些“非結構化”的信息(比如市場情緒不對勁),在該空倉的時候死活不出手,最後居然跑贏了大部分人類。

這説明了什麼?量化正在從計算器進化成Agent。比如我們上面的程序只會執行 if price is max then buy。

現在的 Alpha Arena這個項目,告訴我們AI 是真的在嘗試理解市場。它甚至會告訴你:“雖然指標金叉了,但我感覺這是個假突破,因為成交量沒跟上,所以我決定空倉觀望。” —— 這簡直就是僱了個不知疲倦、偶爾還會甚至比你更理性的交易員。

看着很爽對吧?但別忘了,它們偶爾也會幻覺(hallucination)。
在 Alpha Arena 裏,有時候 AI 會一本正經地胡説八道:“我覺得要漲,因為RSI指標很好看”,結果下一秒市場就可能暴跌給你看。

所以,Alpha Arena 讓我們看到了未來,但目前來看,把身家性命全交給它們?我覺得你還是再等等吧。

提醒一下本文寫的兩個策略純粹就是寫着玩,寫文章用的,千萬別用在實盤上。

如果您覺得我講的有誤,歡迎在評論區指出。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.