Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor ·

Kelebihan strategi pemberatan saksama berbanding optimasi

Pemberatan saksama mengatasi saiz kedudukan yang dioptimumkan apabila sampel data terlalu singkat. Simulasi Python menunjukkan titik silang prestasi sebelum ia kembali stabil.

23.9
Pemberatan saksama (equal weight) mengatasi saiz kedudukan yang dioptimumkan apabila sampel terlalu singkat untuk menentukan pulangan jangkaan, dan sampel singkat adalah keadaan biasa dan bukannya pengecualian. Pengoptimum (optimizer) ialah aritmetik yang kukuh yang digunakan pada input yang tidak diukur dengan baik oleh sesiapa pun. Portfolio 1/N, atau pemberatan saksama, tidak menganggarkan apa-apa pun, itulah sebabnya ia kekal berdaya tahan apabila anggaran adalah buruk.

Kelebihan strategi pemberatan saksama

Strategi pemberatan saksama mengelakkan risiko ralat anggaran yang sering menjejaskan model pengoptimuman portfolio. Apabila data sejarah terhad, pengoptimum cenderung untuk memberikan pemberatan yang melampau kepada aset yang menunjukkan prestasi cemerlang pada masa lalu, yang sering kali membawa kepada prestasi buruk pada masa hadapan. Sebaliknya, pendekatan 1/N mengagihkan modal secara sama rata merentas semua aset tanpa memerlukan ramalan pulangan yang tepat.

Had pengoptimuman dalam pasaran

Pengoptimuman portfolio bergantung sepenuhnya pada ketepatan input seperti pulangan jangkaan, varians, dan korelasi. Dalam praktiknya, parameter ini sangat sukar untuk dianggarkan dengan tepat. Apabila input ini tidak tepat, pengoptimum akan menghasilkan peruntukan yang tidak optimum. Strategi pemberatan saksama bertindak sebagai penampan terhadap ketidakpastian ini dengan tidak bergantung pada ramalan yang tidak boleh dipercayai.

Mengapa 1/N lebih berdaya tahan

Kekuatan utama portfolio 1/N terletak pada kesederhanaannya. Dengan tidak membuat sebarang andaian tentang prestasi masa depan aset individu, strategi ini mengelakkan perangkap "overfitting" atau penyesuaian berlebihan kepada data sejarah. Dalam persekitaran pasaran yang tidak menentu di mana anggaran sering kali tersasar, strategi yang tidak memerlukan anggaran terbukti lebih stabil dan konsisten dalam jangka masa panjang.

Analisis lanjut mengenai strategi portfolio

Keputusan untuk menggunakan pemberatan saksama berbanding pengoptimuman harus mengambil kira ketersediaan data dan keyakinan terhadap model ramalan. Bagi kebanyakan pelabur, kesederhanaan 1/N menawarkan perlindungan yang lebih baik terhadap risiko model berbanding kerumitan pengoptimuman yang tidak disokong oleh data yang mantap.

Kesimpulan mengenai saiz kedudukan

Kesimpulannya, dalam dunia kewangan di mana data yang tepat adalah sukar diperoleh, strategi yang meminimumkan pergantungan kepada ramalan sering kali memberikan hasil yang lebih baik. Pemberatan saksama kekal sebagai penanda aras yang sukar ditandingi apabila ketidakpastian data adalah tinggi.

Adakah pemberatan saksama benar-benar mengatasi pengoptimuman?

Di bawah satu syarat khusus, ya. Mari kita teliti istilah tersebut satu persatu. Pemberatan saksama, yang ditulis sebagai 1/N, membahagikan modal secara sama rata merentasi N posisi dan tidak memerlukan sebarang ramalan. Pengoptimuman varians min menyelesaikan pemberatan dengan pulangan jangkaan terbaik bagi setiap unit varians yang dianggarkan. Kriteria Kelly menyelesaikan pemberatan yang memaksimumkan pertumbuhan kompaun jangka panjang; merentasi aset yang tidak berkorelasi, jawapannya menjadi pemberatan yang berkadar dengan pulangan lebihan jangkaan setiap aset dibahagikan dengan variansnya. Panduan penentuan saiz posisi kriteria Kelly kami membincangkan formula tersebut dengan terperinci.

Kedua-dua pengoptimum memerlukan input yang sama: pulangan jangkaan bagi setiap aset. Itu adalah kuantiti yang paling sukar dianggarkan oleh sampel. Volatiliti boleh diperoleh daripada tempoh masa yang singkat dengan ketepatan yang boleh digunakan. Min tidak begitu, dan jurang antara kedua-duanya cukup besar untuk dilihat dalam mana-mana sejarah harga. Panel di bawah mengambil enam nama yang banyak dipegang, mengukur setiap tahun kalendar dari 2015 hingga 2024 secara berasingan, dan melaporkan sejauh mana jarak antara anggaran tahunan tertinggi dan terendah. Ia melakukan perkara itu dua kali bagi setiap nama: sekali untuk pulangan harian purata tahunan, dan sekali untuk volatiliti tahunan.

PertanyaanSepuluh tahun anggaran tahunan: purata berubah jauh lebih banyak berbanding volatiliti
SQL tepat di sebalik setiap nombor
WITH prices AS
(
    SELECT
        ticker,
        date,
        toFloat64(max(close)) AS c
    FROM global_markets.stocks_daily_aggs
    WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'SPY', 'KO', 'JNJ')
      AND date >= '2015-01-01'
      AND date <  '2025-01-01'
    GROUP BY ticker, date
),
rets AS
(
    SELECT
        ticker,
        date,
        c / lagInFrame(c, 1) OVER (PARTITION BY ticker ORDER BY date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) - 1 AS ret
    FROM prices
),
yearly AS
(
    SELECT
        ticker,
        toYear(date)                     AS yr,
        avg(ret) * 252 * 100             AS mean_pct,
        stddevPop(ret) * sqrt(252) * 100 AS vol_pct
    FROM rets
    WHERE isFinite(ret)
    GROUP BY ticker, yr
    HAVING count() >= 200
)
SELECT
    ticker,
    round(max(mean_pct) - min(mean_pct), 1) AS mean_estimate_range_pct,
    round(max(vol_pct) - min(vol_pct), 1)   AS vol_estimate_range_pct
FROM yearly
GROUP BY ticker
ORDER BY mean_estimate_range_pct DESC
Run this yourself

Bagi NVDA, anggaran min tahunan merangkumi 184.7 mata peratusan sepanjang sepuluh tahun tersebut, berbanding 28.6 mata julat dalam anggaran volatiliti bagi nama yang sama sepanjang tahun yang sama. Nama yang paling stabil dalam panel, KO, masih menggerakkan anggaran min tahunannya sebanyak 23.9 mata. Sebarang skim yang memberikan pulangan purata tahun lepas kepada pengoptimum sebagai pulangan jangkaan tahun ini sebenarnya memberikan angka dengan tahap ketidaktentuan yang sebegitu besar.

Berapa panjang sampel yang diperlukan untuk menganggarkan pulangan jangkaan?

Ralat piawai bagi anggaran pulangan min ialah volatiliti aset dibahagikan dengan punca kuasa dua tempoh sampel dalam tahun. Dalam unit tahun, bukan dalam bilangan pemerhatian: mencerap dua belas bulan yang sama setiap jam berbanding setiap hari tidak memberikan sebarang kelebihan. Masukkan aset dengan volatiliti 20 peratus ke dalam formula tersebut dan satu tahun data sejarah memberikan ralat piawai sebanyak 20 mata peratusan setahun. Empat tahun akan mengurangkannya separuh kepada 10. Untuk mengurangkannya kepada satu mata, iaitu tahap ketepatan yang anda perlukan sebelum membuat perbandingan antara dua aset yang min sebenarnya berbeza sebanyak dua mata, ia memerlukan data selama empat abad.

Volatiliti adalah kes yang berbeza. Ketepatannya bertambah baik mengikut bilangan pemerhatian dan bukannya tempoh kalendar, jadi data harian selama beberapa bulan sudah cukup untuk meletakkannya dalam lingkungan beberapa mata. Panel di bawah membahagikan pulangan harian selama dua puluh tahun bagi satu dana indeks kepada blok-blok yang tidak bertindih dengan panjang tetap, mengira kedua-dua anggaran di dalam setiap blok, dan melaporkan sejauh mana taburan anggaran tersebut antara satu blok dengan blok yang lain.

PertanyaanSejauh mana taburan anggaran purata dan volatiliti mengikut tempoh sampel
SQL tepat di sebalik setiap nombor
WITH prices AS
(
    SELECT
        date,
        toFloat64(max(close)) AS c
    FROM global_markets.stocks_daily_aggs
    WHERE ticker = 'SPY'
      AND date >= '2005-01-01'
      AND date <  '2025-01-01'
    GROUP BY date
),
rets AS
(
    SELECT
        date,
        c / lagInFrame(c, 1) OVER (ORDER BY date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) - 1 AS ret
    FROM prices
),
numbered AS
(
    SELECT
        ret,
        row_number() OVER (ORDER BY date ASC) AS i
    FROM rets
    WHERE isFinite(ret)
),
sweep AS
(
    SELECT
        arrayJoin([21, 63, 126, 252, 504]) AS n,
        i,
        ret
    FROM numbered
),
blocks AS
(
    SELECT
        n,
        intDiv(i - 1, n)                 AS blk,
        avg(ret) * 252 * 100             AS mean_pct,
        stddevPop(ret) * sqrt(252) * 100 AS vol_pct
    FROM sweep
    GROUP BY n, blk
    HAVING count() = n
)
SELECT
    concat(toString(n), ' sessions') AS sample_length,
    round(stddevPop(mean_pct), 1)    AS mean_estimate_spread_pct,
    round(stddevPop(vol_pct), 1)     AS vol_estimate_spread_pct,
    count()                          AS window_count
FROM blocks
GROUP BY n
ORDER BY n ASC
Run this yourself

Pada blok sepanjang 21 sessions, anggaran min bertabur merentasi 53.7 mata peratusan, berbanding 10.9 mata bagi anggaran volatiliti yang diukur pada blok yang sama. Panjangkan blok tersebut kepada 504 sessions dan taburan min mengecil kepada 10.6 mata. Ia mengecil mengikut punca kuasa dua: setiap pengurangan ralat kepada separuh memerlukan empat kali ganda jumlah data.

Simulasi benih yang boleh anda jalankan sendiri

Tiada satu pun daripada perkara tersebut membuktikan ralat anggaran cukup besar untuk memberikan kemenangan kepada 1/N. Ini membuktikannya. Resipi ini memerlukan pemasangan Python dan tiada yang lain: tiada fail data, tiada muat turun, tiada pakej pihak ketiga. Ia melukis pulangan sendiri daripada parameter yang anda pilih, jadi jawapan sebenar diketahui dan kedua-dua peruntukan boleh dinilai berbanding jawapan tersebut.

  1. Import dua modul, import random dan import statistics, serta from math import log. Tetapkan benih pada baris seterusnya dengan random.seed(20260816).
  2. Tentukan lima aset dengan pulangan tahunan jangkaan sebenar sebanyak lima, enam, tujuh, lapan, dan sembilan peratus, setiap satu dengan volatiliti tahunan sebenar sebanyak 20 peratus, tanpa korelasi. Tukarkan kepada langkah harian dengan mu_d = mu_a / 252 dan sd_d = sd_a / (252 ** 0.5).
  3. Pilih panjang sampel T daripada julat [60, 125, 250, 500, 1000, 2500, 5000].
  4. Lukis T pulangan harian bagi setiap aset dengan random.gauss(mu_d, sd_d). Lukisan itu adalah keseluruhan sejarah yang dapat dilihat oleh pengurus.
  5. Anggarkan purata setiap aset dengan statistics.mean dan volatilitinya dengan statistics.stdev. Dua anggaran tersebut adalah semua yang diketahui oleh pengoptimum.
  6. Bina portfolio wajaran saksama dengan menetapkan 0.2 kepada setiap satu daripada lima aset tersebut. Ia tidak menggunakan sebarang anggaran.
  7. Bina portfolio yang dioptimumkan dengan menetapkan setiap wajaran mentah kepada mu_hat / (sd_hat ** 2), kemudian membahagikan setiap wajaran dengan jumlah wajaran mentah mutlak, yang meletakkan kedua-dua portfolio pada pendedahan kasar yang sama.
  8. Lukis laluan luar sampel baharu sebanyak 2520 pulangan harian bagi setiap aset daripada parameter sebenar. Tiada satu pun peruntukan yang pernah melihatnya.
  9. Nilai kedua-duanya pada laluan tersebut dengan purata log(1 + r), di mana r ialah jumlah wajaran bagi lima pulangan aset pada hari tersebut.
  10. Ulangi langkah empat hingga sembilan untuk 2000 percubaan bebas pada setiap T, dan rekodkan bahagian percubaan di mana wajaran saksama mengatasi wajaran yang dioptimumkan.

Baca julat daripada T pendek kepada T panjang. Pada hujung yang pendek, wajaran saksama memenangi majoriti jelas percubaan. Bahagian tersebut jatuh secara konsisten apabila T berkembang, dan pada hujung yang panjang, wajaran yang dioptimumkan memenangi kebanyakan daripadanya. Di suatu tempat di tengah-tengah, kedua-duanya bersilang. Titik persilangan bergerak mengikut benih dan mengikut spread antara purata sebenar. Arahnya tidak berubah: lebih banyak data memihak kepada pengoptimum, kurang data memihak kepada 1/N. Untuk meniru, tukar integer di dalam random.seed(20260816) dan jalankan julat tersebut sekali lagi.

Mengapa pengoptimum membesarkan anggaran purata yang buruk

Lihat di mana anggaran tersebut dimasukkan ke dalam pemberat. Anggaran purata berada pada pengangka, manakala anggaran varians berada pada penyebut. Gandakan anggaran purata dan pemberat akan menjadi dua kali ganda. Kurangkan satu perempat daripada anggaran varians dan pemberat akan meningkat sebanyak satu pertiga. Dalam sampel yang bernasib baik, kedua-dua ralat menghala ke arah yang sama: rentetan hasil yang baik meningkatkan purata yang diukur dan sering kali meredam varians yang diukur dalam tempoh masa yang sama. Pengoptimum membaca aset tersebut sebagai aset yang paling menonjol dalam kumpulan dan menetapkan saiznya sewajarnya. Di luar sampel, ia kembali menjadi ahli biasa dalam kumpulan tersebut. Pemberat saksama tidak pernah melihat sampel yang bernasib baik itu.

Simulasi adalah versi ringan bagi masalah ini. Lima aset yang tidak berkorelasi meninggalkan matriks kovarians pepenjuru tanpa apa-apa untuk disongsangkan. Portfolio sebenar adalah berkorelasi, dan matriks kovarians sampel yang dibina daripada pemerhatian yang hampir sama bilangannya dengan aset berada hampir kepada singular. Menyongsangkannya akan mendarabkan ralat input yang kecil menjadi pemberat yang sangat besar, itulah cara pengoptimum sampai kepada kedudukan yang bernilai beberapa kali ganda modal dalam satu nama berbanding kedudukan short yang mengimbangi dalam pengganti terdekatnya. Nota kami mengenai risiko penumpuan dalam portfolio merangkumi kesan pemberat sedemikian terhadap penurunan nilai (drawdown).

Input juga tidak statik. Panel di bawah menjejaki purata pulangan harian satu tahun secara bergolek, yang disetahunkan dan disampel setiap bulan, bagi dana indeks yang luas di samping nama barangan keperluan pengguna yang besar.

PertanyaanPurata pulangan satu tahun bergerak, angka yang akan dimasukkan ke dalam pengoptimum
SQL tepat di sebalik setiap nombor
WITH prices AS
(
    SELECT
        ticker,
        date,
        toFloat64(max(close)) AS c
    FROM global_markets.stocks_daily_aggs
    WHERE ticker IN ('SPY', 'KO')
      AND date >= '2015-10-01'
      AND date <  '2025-01-01'
    GROUP BY ticker, date
),
rets AS
(
    SELECT
        ticker,
        date,
        c / lagInFrame(c, 1) OVER (PARTITION BY ticker ORDER BY date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) - 1 AS ret
    FROM prices
),
trailing AS
(
    SELECT
        ticker,
        date,
        avg(ret) OVER (PARTITION BY ticker ORDER BY date ASC ROWS BETWEEN 251 PRECEDING AND CURRENT ROW) * 252 * 100 AS trailing_mean_pct,
        row_number() OVER (PARTITION BY ticker ORDER BY date ASC) AS i
    FROM rets
    WHERE isFinite(ret)
)
SELECT
    toString(toStartOfMonth(date))                     AS month,
    round(avgIf(trailing_mean_pct, ticker = 'SPY'), 1) AS spy_trailing_mean_pct,
    round(avgIf(trailing_mean_pct, ticker = 'KO'), 1)  AS ko_trailing_mean_pct
FROM trailing
WHERE i >= 252
  AND date >= '2017-01-01'
GROUP BY month
ORDER BY month ASC
Run this yourself

Setiap titik pada kedua-dua garisan tersebut ialah nombor yang akan diterima oleh mana-mana pengoptimum sebagai pulangan jangkaan pada tarikh tersebut. Bacaan bulanan pertama untuk SPY ialah 17.7% dan yang terakhir ialah 25.8%, dengan 96 bacaan di antaranya. KO membuka tempoh masa yang sama pada -0.4%. Skim pemberatan yang menggunakan siri ini bulan demi bulan akan mewarisi setiap ketidakstabilan di dalamnya.

Adakah separuh Kelly dan pengecilan (shrinkage) dapat membetulkannya?

Ia melembutkannya. Empat langkah pembaikan muncul dalam amalan, dan setiap satunya menukar sebahagian daripada optimum teori demi sensitiviti yang lebih rendah terhadap anggaran.

  • Separuh Kelly mengurangkan setiap wajaran kepada separuh. Keluk pertumbuhan Kelly adalah mendatar berhampiran puncaknya dan curam di bawahnya, jadi pertaruhan separuh melepaskan bahagian kecil daripada kadar pertumbuhan teori sambil mengurangkan kerosakan akibat kelebihan yang terlebih anggar dengan lebih banyak lagi. Penyasaran volatiliti menggunakan naluri yang sama pada penyebut, dengan menentukan saiz daripada satu input yang boleh dibekalkan oleh sampel pendek.
  • Pengecilan menarik setiap purata yang dianggarkan ke arah purata keratan rentas anggaran tersebut, dengan jumlah yang meningkat apabila sampel mengecil. Jika ditolak ke had maksimum, setiap aset membawa pulangan jangkaan yang sama; dengan volatiliti yang sama, pengoptimum kemudiannya memberikan wajaran yang sama dengan sendirinya. Wajaran sama adalah portfolio yang dikecilkan sepenuhnya.
  • Kekangan, yang bermaksud tiada shorting dan had bagi setiap posisi, mengehadkan sejauh mana satu anggaran yang bernasib baik boleh menolak satu wajaran tunggal. Ia merupakan kawalan kerosakan dan bukannya penambahbaikan dalam anggaran.
  • Menggugurkan pulangan jangkaan sepenuhnya meninggalkan varians minimum dan pariti risiko, yang hanya menggunakan kovarians. Itulah input yang sebenarnya boleh dibekalkan oleh sampel.

Tiada satu pun daripada empat kaedah ini menghasilkan maklumat yang tidak terkandung dalam sampel. Apa yang diubahnya ialah sejauh mana portfolio bergantung pada maklumat yang mungkin tidak anda miliki.

Apabila pengoptimuman berbaloi

Persilangan berlaku dalam kedua-dua arah. Apabila T menjadi besar berbanding spread antara min sebenar, peruntukan yang dioptimumkan akan mendahului dan kekal di situ, dan semakin luas spread tersebut, semakin awal ia berlaku. Pengoptimuman juga merupakan alat yang tepat apabila input adalah sesuatu yang dibekalkan oleh data: kovarians dan hedge ratios memberikan anggaran yang jauh lebih baik berbanding jangkaan pulangan.

Equal weight mempunyai kosnya tersendiri. Ia mengabaikan maklumat yang anda benar-benar miliki, dan dalam alam semesta yang kecil, ia tertumpu seberat mana-mana pengoptimum. Anggap ia sebagai garis dasar yang perlu diatasi oleh mana-mana pemberat calon pada data yang tidak pernah dilihat oleh pemberat tersebut. Memadankan pemberat dan menilainya pada sampel yang sama adalah look-ahead bias in backtesting yang memakai topi berbeza, dan ia sentiasa memuji pengoptimum. Untuk julat yang jujur di sekitar kelebihan yang diukur dan bukannya anggaran titik tunggal, bootstrapped confidence intervals adalah alat standard.

Soalan Lazim

Adakah wajaran sama (equal weight) benar-benar mengatasi pengoptimuman varians min?

Dalam sampel yang singkat, ia sering kali berlaku. Pengoptimum memerlukan anggaran pulangan jangkaan bagi setiap aset, dan anggaran tersebut membawa ralat piawai yang secara kasarnya adalah volatiliti aset dibahagikan dengan punca kuasa dua tempoh sampel dalam tahun. Selagi ralat tersebut kekal lebih besar daripada perbezaan sebenar antara aset, pengoptimum hanya menyusun hingar (noise). Wajaran sama tidak mempunyai anggaran yang boleh menjadi salah.

Berapa banyak pemerhatian yang anda perlukan untuk menganggarkan pulangan jangkaan?

Lebih banyak daripada yang dimiliki oleh hampir sesiapa pun. Bagi aset dengan volatiliti dua puluh peratus, satu tahun data harian meninggalkan ralat piawai hampir dua puluh mata peratusan setahun, dan untuk mengurangkan ralat itu kepada separuh memerlukan tempoh kalendar empat kali ganda lebih lama. Menambah pemerhatian intraday dalam tahun yang sama tidak membantu. Sebaliknya, volatiliti boleh digunakan daripada data beberapa bulan sahaja.

Adakah separuh Kelly sekadar pertaruhan yang lebih kecil?

Ia adalah pertaruhan yang lebih kecil pada syarat yang menguntungkan. Keluk pertumbuhan Kelly adalah mendatar berhampiran puncaknya, jadi mengurangkan pertaruhan kepada separuh hanya mengorbankan sebahagian kecil daripada kadar pertumbuhan teori, sementara secara kasarnya mengurangkan volatiliti laluan kepada separuh dan mengecilkan kos kelebihan yang dinyatakan secara berlebihan.

Apakah portfolio 1/N?

Ia adalah portfolio yang meletakkan pecahan modal yang sama ke dalam setiap N posisi dan melakukan pengimbangan semula mengikut jadual. Ia tidak memerlukan ramalan pulangan dan tidak memerlukan anggaran kovarians, itulah yang menjadikannya penanda aras standard bagi setiap skim wajaran yang memerlukannya.

Cara panel dibina

Ketiga-tiga panel membaca harga tutup harian dan mengira pulangan tutup-ke-tutup yang mudah, dengan baris pendua digabungkan kepada satu harga tutup bagi setiap ticker untuk setiap tarikh. Min disetahunkan dengan mendarabkan purata pulangan harian dengan dua ratus lima puluh dua sesi; volatiliti disetahunkan dengan mendarabkan sisihan piawai harian dengan punca kuasa dua dua ratus lima puluh dua. Panel tahunan hanya mengekalkan tahun kalendar di mana sekurang-kurangnya dua ratus sesi hadir. Panel blok menggunakan blok yang tidak bertindih dan membuang blok separa terakhir pada setiap panjang, dan lajur kiraan tetingkapnya menunjukkan berapa banyak blok yang dihasilkan oleh setiap panjang. Tiada dividen disertakan di mana-mana, jadi ini adalah pulangan harga dan tahap bagi mana-mana min adalah lebih rendah daripada yang sepatutnya bagi pembayar dividen. Taburan anggaran adalah tujuan utama panel, bukan tahapnya.


Setiap panel di sini membawa SQL tepat di bawah carta, dan simulasi membawa benihnya (seed). Untuk menjalankan semakan kestabilan anggaran yang sama merentasi senarai nama anda sendiri, minta ia dalam bahasa Inggeris yang mudah pada terminal Strasmore.

#quant#position sizing#portfolio construction#estimation error#kelly