最直白的量化入门

86 阅读6分钟

在B站、抖音啥的视频平台搜量化入门,都云里雾里的;要不就是量化教程会从头给你讲量化历史python基础,真正到量化都好几章过去了。所以这里分享下我的量化入门心得。

量化到底是什么

其实量化就是将投资思想和逻辑通过数学建模和数据分析的方式固化下来,然后用计算机程序将其转化为可以自动执行的的交易指令。

说人话,就是假设我现在的策略是只持有A股市值最高的股票,那么此时我的策略因子就是“市值最高”。在获取股市信息后,取市值最高的股票进行买入操作,每个月执行一次。

下面是我们获取到的数据,那么此时程序就会选中农业银行,并卖出之前持有的股票,全仓买入农业银行,等待下个月的交易信号。

大A市值前十股票

大A市值前十股票

你看,量化就是这么简单,只不过我们现在这个策略有点太简单了,我们可以试试跟踪这个策略有多少收益,写一个程序回测一下(代码在下面,有兴趣可以看下)。

如果按这个策略来的话一年也有个4.22%收益,但是大部分时间都在亏损而且回撤比收益大。

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

只持有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²策略

和上面一样回撤太大,不咋实用。

看吧,其实量化就是上面写的那样,你通过观察,调研确认一个策略(比如市值前十+动量*R²)能赚钱,就写一个程序取实现你的策略。

现实的量化公司的策略肯定会更复杂,而且获取到的数据会比我们更夸张,比如精细到马六甲海峡的通行量、某片土地的农作物产量或者一些时事性新闻(比如最近google发布了Gemini3 Pro)等等,然后程序得出买卖信号去执行。

还有上面的两个程序都是每个月才执行一次,现实还有高频交易量化(好像卷到1ms还是多少了,这个别碰,大机构手续费和你不是一个级别,你肯定亏)。当然如果是你自己编写的可以设置为每周/每天/每小时。

既然都说AI投资量化,那最近火得不行的大模型(LLM)又怎么用来投资?

拿最近很火的AI角斗场:Alpha Arena举例子。如果说前面的策略是“死板的公式”,那现在的 Alpha Arena 就是一场真实的AI投资实战。

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 让我们看到了未来,但目前来看,把身家性命全交给它们?我觉得你还是再等等吧。\

提醒一下本文写的两个策略纯粹就是写着玩,写文章用的,千万别用在实盘上。

如果您觉得我讲的有误,欢迎在评论区指出。