0
fokus pada
78
Pengikut

Mencapai pengaturan yang teratur dari strategi ekuitas seimbang jangka panjang dan pendek

Dibuat di: 2019-08-24 10:05:53, diperbarui pada: 2024-12-19 00:25:02
comments   0
hits   2265

Mencapai pengaturan yang teratur dari strategi ekuitas seimbang jangka panjang dan pendek

Dalam artikel sebelumnya (https://www.fmz.com/digest-topic/4187), kami memperkenalkan strategi perdagangan berpasangan dan menunjukkan cara menggunakan data dan analisis matematika untuk membuat dan mengotomatiskan strategi perdagangan.

Strategi ekuitas seimbang panjang-pendek merupakan perluasan alami dari strategi perdagangan berpasangan yang berlaku pada sekeranjang target perdagangan. Sangat cocok untuk pasar perdagangan dengan banyak variasi dan hubungan, seperti pasar mata uang digital dan pasar berjangka komoditi.

Prinsip dasar

Strategi ekuitas seimbang panjang-pendek adalah mengambil posisi panjang dan pendek pada sekeranjang target perdagangan pada saat yang sama. Sama seperti pair trading, tentukan target investasi mana yang murah dan mana yang mahal. Perbedaannya adalah bahwa strategi ekuitas seimbang long-short akan menyortir semua target investasi ke dalam kumpulan pilihan saham untuk menentukan target investasi mana yang relatif murah. Atau mahal. Kemudian akan mengambil posisi long pada n investasi teratas berdasarkan pada peringkat, dan mengambil posisi short pada n investasi terbawah dengan jumlah yang sama (nilai total posisi long = nilai total posisi short).

Ingat sebelumnya ketika kami mengatakan bahwa perdagangan berpasangan adalah strategi netral pasar? Hal yang sama berlaku untuk strategi ekuitas seimbang panjang-pendek, karena jumlah posisi panjang dan pendek yang sama memastikan bahwa strategi akan tetap netral pasar (tidak terpengaruh oleh fluktuasi pasar). Strategi ini juga kuat secara statistik; dengan memeringkat investasi dan mengambil beberapa posisi, Anda dapat memaparkan model pemeringkatan Anda pada beberapa paparan, dan bukan sekadar paparan risiko satu kali. Yang Anda pertaruhkan hanyalah kualitas skema pemeringkatan Anda.

Apa itu skema pemeringkatan?

Skema pemeringkatan adalah model yang menetapkan prioritas pada setiap target investasi berdasarkan kinerja yang diharapkan. Faktor-faktor tersebut dapat berupa faktor nilai, indikator teknis, model penetapan harga, atau kombinasi semua hal di atas. Misalnya, Anda dapat menggunakan metrik momentum untuk memberi peringkat pada daftar investasi yang mengikuti tren: investasi dengan momentum tertinggi diharapkan akan terus berkinerja baik dan menerima peringkat tertinggi; investasi dengan momentum terendah akan berkinerja terburuk dan memiliki hasil yang terendah.

Keberhasilan strategi ini bergantung hampir sepenuhnya pada skema pemeringkatan yang digunakan, yaitu, skema pemeringkatan Anda mampu memisahkan investasi berkinerja tinggi dari investasi berkinerja rendah, sehingga lebih mampu merealisasikan laba dari strategi target investasi jangka panjang-pendek. Oleh karena itu, sangat penting untuk mengembangkan skema pemeringkatan.

Bagaimana cara merumuskan rencana pemeringkatan?

Begitu kami memiliki skema pemeringkatan, kami tentu ingin dapat memperoleh keuntungan darinya. Kita melakukan ini dengan menginvestasikan jumlah uang yang sama untuk mengambil posisi long pada investasi peringkat teratas dan mengambil posisi short pada investasi peringkat terbawah. Hal ini memastikan bahwa strategi tersebut hanya akan menghasilkan uang secara proporsional dengan kualitas peringkatnya dan akan bersifat “netral pasar”.

Misalkan Anda memberi peringkat semua investasi m, memiliki n dolar untuk diinvestasikan, dan ingin memegang total 2p (di mana m>2p) posisi. Jika investasi dengan peringkat 1 diperkirakan akan memberikan kinerja terburuk, maka investasi dengan peringkat m diperkirakan akan memberikan kinerja terbaik:

  • Anda mengatur target investasi sebagai berikut: target investasi USD 1, …, p, dan short 2/2p

  • Anda mengatur target investasi sebagai: m-p,……,m, dan mengambil posisi long pada n/2p dolar dari target investasi

Melihat:Karena harga target investasi akibat lonjakan harga tidak akan selalu membagi n/2p secara merata, dan beberapa target investasi harus dibeli dalam bilangan bulat, akan ada beberapa algoritma yang tidak tepat, dan algoritma tersebut harus sedekat mungkin dengan angka ini. Untuk strategi yang dijalankan dengan n = 100000 dan p = 500, kita melihat:

n/2p = 1000001000 = 100

Hal ini dapat menyebabkan masalah besar untuk harga dengan pecahan lebih besar dari 100 (seperti pasar berjangka komoditi), karena Anda tidak dapat membuka posisi dengan harga pecahan (masalah ini tidak ada di pasar mata uang kripto). Kami mengatasi hal ini dengan mengurangi perdagangan harga fraksional atau menambah modal.

Mari kita lihat contoh hipotetis.

  • Membangun lingkungan penelitian kami di Platform Kuantitatif Inventor

Pertama-tama, agar dapat bekerja dengan lancar, kita perlu membangun lingkungan penelitian kita. Dalam artikel ini, kita menggunakan Inventor Quantitative Platform (FMZ.COM) untuk membangun lingkungan penelitian, terutama agar kita dapat menggunakan API yang nyaman dan cepat. antarmuka dan enkapsulasi platform ini nanti. Sistem Docker yang lengkap.

Dalam nama resmi Inventor Quantitative Platform, sistem Docker ini disebut sistem host.

Untuk informasi lebih lanjut tentang cara menyebarkan host dan robot, silakan lihat artikel saya sebelumnya: https://www.fmz.com/bbs-topic/4140

Pembaca yang ingin membeli host penyebaran server komputasi awan mereka sendiri dapat merujuk ke artikel ini: https://www.fmz.com/bbs-topic/2848

Setelah berhasil menerapkan layanan komputasi awan dan sistem host, kami akan menginstal alat Python paling kuat: Anaconda

Untuk mencapai semua lingkungan program relevan yang diperlukan untuk artikel ini (perpustakaan dependen, manajemen versi, dll.), cara termudah adalah menggunakan Anaconda. Ini adalah ekosistem ilmu data Python dan manajer ketergantungan yang dikemas.

Untuk metode instalasi Anaconda, silakan lihat panduan resmi Anaconda: https://www.anaconda.com/distribution/

Artikel ini juga akan menggunakan numpy dan pandas, dua pustaka yang sangat populer dan penting dalam komputasi ilmiah Python.

Untuk pekerjaan dasar di atas, Anda juga dapat merujuk ke artikel saya sebelumnya, yang memperkenalkan cara menyiapkan lingkungan Anaconda dan dua pustaka numpy dan pandas. Untuk detailnya, silakan lihat: https://www.fmz.com/digest- topik/4169

Kami menghasilkan investasi acak dan faktor acak lalu memeringkatnya. Mari kita asumsikan bahwa keuntungan kita di masa mendatang benar-benar bergantung pada nilai faktor ini.

import numpy as np
import statsmodels.api as sm
import scipy.stats as stats
import scipy
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
## PROBLEM SETUP ##
# Generate stocks and a random factor value for them
stock_names = ['stock ' + str(x) for x in range(10000)]
current_factor_values = np.random.normal(0, 1, 10000)
# Generate future returns for these are dependent on our factor values
future_returns = current_factor_values + np.random.normal(0, 1, 10000)
# Put both the factor values and returns into one dataframe
data = pd.DataFrame(index = stock_names, columns=['Factor Value','Returns'])
data['Factor Value'] = current_factor_values
data['Returns'] = future_returns
# Take a look
data.head(10)

Mencapai pengaturan yang teratur dari strategi ekuitas seimbang jangka panjang dan pendek

Sekarang setelah kita memiliki nilai faktor dan pengembalian, kita dapat melihat apa yang terjadi jika kita memeringkat investasi berdasarkan nilai faktor dan kemudian membuka posisi panjang dan pendek.

# Rank stocks
ranked_data = data.sort_values('Factor Value')
# Compute the returns of each basket with a basket size 500, so total (10000/500) baskets
number_of_baskets = int(10000/500)
basket_returns = np.zeros(number_of_baskets)
for i in range(number_of_baskets):
    start = i * 500
    end = i * 500 + 500 
    basket_returns[i] = ranked_data[start:end]['Returns'].mean()
# Plot the returns of each basket
plt.figure(figsize=(15,7))
plt.bar(range(number_of_baskets), basket_returns)
plt.ylabel('Returns')
plt.xlabel('Basket')
plt.legend(['Returns of Each Basket'])
plt.show()

Mencapai pengaturan yang teratur dari strategi ekuitas seimbang jangka panjang dan pendek

Strategi kami adalah mengambil posisi long pada investasi peringkat pertama dalam sekeranjang target investasi dan mengambil posisi short pada target investasi peringkat kesepuluh. Keuntungan dari strategi ini adalah:

basket_returns[number_of_baskets-1] - basket_returns[0]

Hasilnya adalah: 4.172

Taruhkan uang Anda pada model pemeringkatan kami untuk memisahkan investasi berkinerja tinggi dari yang berkinerja rendah.

Pada sisa artikel ini, kami membahas cara mengevaluasi skema pemeringkatan. Keuntungan menghasilkan uang dari arbitrase berbasis peringkat adalah tidak terpengaruh oleh gangguan pasar, tetapi malah dapat memanfaatkannya.

Mari kita pertimbangkan contoh dunia nyata.

Kami memuat data untuk 32 saham dari berbagai sektor di S&P 500 dan mencoba memeringkatnya.

from backtester.dataSource.yahoo_data_source import YahooStockDataSource
from datetime import datetime
startDateStr = '2010/01/01'
endDateStr = '2017/12/31'
cachedFolderName = '/Users/chandinijain/Auquan/yahooData/'
dataSetId = 'testLongShortTrading'
instrumentIds = ['ABT','AKS','AMGN','AMD','AXP','BK','BSX',
                'CMCSA','CVS','DIS','EA','EOG','GLW','HAL',
                'HD','LOW','KO','LLY','MCD','MET','NEM',
                'PEP','PG','M','SWN','T','TGT',
                'TWX','TXN','USB','VZ','WFC']
ds = YahooStockDataSource(cachedFolderName=cachedFolderName,
                            dataSetId=dataSetId,
                            instrumentIds=instrumentIds,
                            startDateStr=startDateStr,
                            endDateStr=endDateStr,
                            event='history')
price = 'adjClose'

Mari kita gunakan indikator momentum yang dinormalisasi selama periode satu bulan sebagai dasar pemeringkatan

## Define normalized momentum
def momentum(dataDf, period):
    return dataDf.sub(dataDf.shift(period), fill_value=0) / dataDf.iloc[-1]
## Load relevant prices in a dataframe
data = ds.getBookDataByFeature()[‘Adj Close’]
#Let's load momentum score and returns into separate dataframes
index = data.index
mscores = pd.DataFrame(index=index,columns=assetList)
mscores = momentum(data, 30)
returns = pd.DataFrame(index=index,columns=assetList)
day = 30

Sekarang kita akan menganalisis perilaku saham kita dan melihat bagaimana kinerja saham kita di pasar dalam faktor peringkat yang telah kita pilih.

Menganalisis data

Perilaku Saham

Mari kita lihat bagaimana kinerja keranjang saham pilihan kita dalam model pemeringkatan kami. Untuk melakukan ini, mari kita hitung laba ke depan satu minggu untuk semua saham. Kita kemudian dapat melihat korelasi pengembalian 1 minggu ke depan setiap saham dengan momentum 30 hari sebelumnya. Saham yang menunjukkan korelasi positif adalah saham yang mengikuti tren, sedangkan saham yang menunjukkan korelasi negatif adalah saham yang kembali ke arah rata-rata.

# Calculate Forward returns
forward_return_day = 5
returns = data.shift(-forward_return_day)/data -1
returns.dropna(inplace = True)
# Calculate correlations between momentum and returns
correlations = pd.DataFrame(index = returns.columns, columns = [‘Scores’, ‘pvalues’])
mscores = mscores[mscores.index.isin(returns.index)]
for i in correlations.index:
    score, pvalue = stats.spearmanr(mscores[i], returns[i])
    correlations[‘pvalues’].loc[i] = pvalue
    correlations[‘Scores’].loc[i] = score
correlations.dropna(inplace = True)
correlations.sort_values(‘Scores’, inplace=True)
l = correlations.index.size
plt.figure(figsize=(15,7))
plt.bar(range(1,1+l),correlations[‘Scores’])
plt.xlabel(‘Stocks’)
plt.xlim((1, l+1))
plt.xticks(range(1,1+l), correlations.index)
plt.legend([‘Correlation over All Data’])
plt.ylabel(‘Correlation between %s day Momentum Scores and %s-day forward returns by Stock’%(day,forward_return_day));
plt.show()

Mencapai pengaturan yang teratur dari strategi ekuitas seimbang jangka panjang dan pendek

Semua saham kami berarti kembali ke tingkat tertentu! (Tampaknya alam semesta pilihan kita bekerja seperti ini) Ini memberi tahu kita bahwa jika suatu saham mendapat peringkat tinggi dalam analisis momentum, kita harus memperkirakan saham tersebut akan berkinerja buruk minggu depan.

Korelasi antara Peringkat Skor Momentum dan Pengembalian

Selanjutnya, kita perlu melihat korelasi antara skor peringkat kita dan keseluruhan pengembalian pasar ke depan, yaitu, hubungan antara prediksi pengembalian yang diharapkan dan faktor peringkat kita. Dapatkah tingkat korelasi yang lebih tinggi memprediksi pengembalian Relatif yang lebih buruk, atau sebaliknya?

Untuk melakukan ini, kami menghitung korelasi harian antara momentum 30 hari dan pengembalian maju 1 minggu untuk semua saham.

correl_scores = pd.DataFrame(index = returns.index.intersection(mscores.index), columns = [‘Scores’, ‘pvalues’])
for i in correl_scores.index:
    score, pvalue = stats.spearmanr(mscores.loc[i], returns.loc[i])
    correl_scores[‘pvalues’].loc[i] = pvalue
    correl_scores[‘Scores’].loc[i] = score
correl_scores.dropna(inplace = True)
l = correl_scores.index.size
plt.figure(figsize=(15,7))
plt.bar(range(1,1+l),correl_scores[‘Scores’])
plt.hlines(np.mean(correl_scores[‘Scores’]), 1,l+1, colors=’r’, linestyles=’dashed’)
plt.xlabel(‘Day’)
plt.xlim((1, l+1))
plt.legend([‘Mean Correlation over All Data’, ‘Daily Rank Correlation’])
plt.ylabel(‘Rank correlation between %s day Momentum Scores and %s-day forward returns’%(day,forward_return_day));
plt.show()

Mencapai pengaturan yang teratur dari strategi ekuitas seimbang jangka panjang dan pendek

Korelasi hariannya cukup berisik, tetapi sangat sedikit (yang diharapkan karena kami katakan semua saham akan mengalami mean revert). Kami juga melihat korelasi bulanan rata-rata dari pengembalian maju 1 bulan.

monthly_mean_correl =correl_scores['Scores'].astype(float).resample('M').mean()
plt.figure(figsize=(15,7))
plt.bar(range(1,len(monthly_mean_correl)+1), monthly_mean_correl)
plt.hlines(np.mean(monthly_mean_correl), 1,len(monthly_mean_correl)+1, colors='r', linestyles='dashed')
plt.xlabel('Month')
plt.xlim((1, len(monthly_mean_correl)+1))
plt.legend(['Mean Correlation over All Data', 'Monthly Rank Correlation'])
plt.ylabel('Rank correlation between %s day Momentum Scores and %s-day forward returns'%(day,forward_return_day));
plt.show()

Mencapai pengaturan yang teratur dari strategi ekuitas seimbang jangka panjang dan pendek

Kita dapat melihat bahwa korelasi rata-ratanya lagi-lagi sedikit negatif, tetapi juga sangat bervariasi dari bulan ke bulan.

Keranjang rata-rata pengembalian saham

Kami telah menghitung laba untuk sekeranjang saham yang diambil dari peringkat kami. Bila kita memeringkat semua saham, lalu membaginya ke dalam n kelompok, berapakah laba rata-rata setiap kelompok?

Langkah pertama adalah membuat fungsi yang akan memberikan hasil rata-rata dan faktor peringkat untuk setiap keranjang yang diberikan setiap bulan.

def compute_basket_returns(factor, forward_returns, number_of_baskets, index):
data = pd.concat([factor.loc[index],forward_returns.loc[index]], axis=1)
    # Rank the equities on the factor values
    data.columns = ['Factor Value', 'Forward Returns']
    data.sort_values('Factor Value', inplace=True)
    # How many equities per basket
    equities_per_basket = np.floor(len(data.index) / number_of_baskets)
basket_returns = np.zeros(number_of_baskets)
# Compute the returns of each basket
    for i in range(number_of_baskets):
        start = i * equities_per_basket
        if i == number_of_baskets - 1:
            # Handle having a few extra in the last basket when our number of equities doesn't divide well
            end = len(data.index) - 1
        else:
            end = i * equities_per_basket + equities_per_basket
        # Actually compute the mean returns for each basket
        #s = data.index.iloc[start]
        #e = data.index.iloc[end]
        basket_returns[i] = data.iloc[int(start):int(end)]['Forward Returns'].mean()
        
    return basket_returns

Kami menghitung laba rata-rata untuk setiap keranjang saat memeringkat saham berdasarkan skor ini. Ini seharusnya memberi kita gambaran bagus tentang hubungan mereka dalam jangka waktu yang panjang.

number_of_baskets = 8
mean_basket_returns = np.zeros(number_of_baskets)
resampled_scores = mscores.astype(float).resample('2D').last()
resampled_prices = data.astype(float).resample('2D').last()
resampled_scores.dropna(inplace=True)
resampled_prices.dropna(inplace=True)
forward_returns = resampled_prices.shift(-1)/resampled_prices -1
forward_returns.dropna(inplace = True)
for m in forward_returns.index.intersection(resampled_scores.index):
    basket_returns = compute_basket_returns(resampled_scores, forward_returns, number_of_baskets, m)
    mean_basket_returns += basket_returns
mean_basket_returns /= l    
print(mean_basket_returns)
# Plot the returns of each basket
plt.figure(figsize=(15,7))
plt.bar(range(number_of_baskets), mean_basket_returns)
plt.ylabel('Returns')
plt.xlabel('Basket')
plt.legend(['Returns of Each Basket'])
plt.show()

Mencapai pengaturan yang teratur dari strategi ekuitas seimbang jangka panjang dan pendek

Tampaknya kita mampu memisahkan mereka yang berkinerja tinggi dari mereka yang berkinerja rendah.

Konsistensi penyebaran (dasar)

Tentu saja, ini hanyalah hubungan biasa. Untuk memahami seberapa konsisten hubungan tersebut dan apakah kita bersedia membuat kesepakatan, kita harus mengubah pendekatan dan sikap kita terhadapnya dari waktu ke waktu. Selanjutnya, kita akan melihat spread bulanan (dasar) untuk dua tahun sebelumnya. Kita dapat melihat lebih banyak perubahan dan melakukan analisis lebih lanjut untuk menentukan apakah skor momentum ini dapat diperdagangkan.

total_months = mscores.resample('M').last().index
months_to_plot = 24
monthly_index = total_months[:months_to_plot+1]
mean_basket_returns = np.zeros(number_of_baskets)
strategy_returns = pd.Series(index = monthly_index)
f, axarr = plt.subplots(1+int(monthly_index.size/6), 6,figsize=(18, 15))
for month in range(1, monthly_index.size):
    temp_returns = forward_returns.loc[monthly_index[month-1]:monthly_index[month]]
    temp_scores = resampled_scores.loc[monthly_index[month-1]:monthly_index[month]]
    for m in temp_returns.index.intersection(temp_scores.index):
        basket_returns = compute_basket_returns(temp_scores, temp_returns, number_of_baskets, m)
        mean_basket_returns += basket_returns
    
    strategy_returns[monthly_index[month-1]] = mean_basket_returns[ number_of_baskets-1] - mean_basket_returns[0]
    
    mean_basket_returns /= temp_returns.index.intersection(temp_scores.index).size
    
    r = int(np.floor((month-1) / 6))
    c = (month-1) % 6
    axarr[r, c].bar(range(number_of_baskets), mean_basket_returns)
    axarr[r, c].xaxis.set_visible(False)
    axarr[r, c].set_title('Month ' + str(month))
plt.show()

Mencapai pengaturan yang teratur dari strategi ekuitas seimbang jangka panjang dan pendek

plt.figure(figsize=(15,7))
plt.plot(strategy_returns)
plt.ylabel(‘Returns’)
plt.xlabel(‘Month’)
plt.plot(strategy_returns.cumsum())
plt.legend([‘Monthly Strategy Returns’,’Cumulative Strategy Returns’])
plt.show()

Mencapai pengaturan yang teratur dari strategi ekuitas seimbang jangka panjang dan pendek

Terakhir, mari kita lihat keuntungan jika kita membeli keranjang terakhir dan menjual keranjang pertama setiap bulan (dengan asumsi alokasi modal yang sama untuk setiap sekuritas)

total_return = strategy_returns.sum()
ann_return = 100*((1 + total_return)**(12.0 /float(strategy_returns.index.size))-1)
print('Annual Returns: %.2f%%'%ann_return)

Hasil tahunan: 5,03%

Kami melihat bahwa kami memiliki skema pemeringkatan yang sangat lemah yang hanya sedikit membedakan saham berkinerja tinggi dari saham berkinerja rendah. Lebih jauh lagi, tidak ada konsistensi dalam skema pemeringkatan ini dan sangat bervariasi dari bulan ke bulan.

Menemukan skema peringkat yang tepat

Untuk menerapkan strategi ekuitas seimbang jangka panjang-pendek, Anda hanya perlu menentukan skema pemeringkatan. Segala sesuatu setelah itu bersifat mekanis. Setelah Anda memiliki strategi ekuitas seimbang panjang-pendek, Anda dapat menukar faktor peringkat yang berbeda tanpa mengubah banyak hal lainnya. Ini adalah cara yang sangat mudah untuk mengulangi ide Anda dengan cepat tanpa harus khawatir mengubah keseluruhan kode setiap saat.

Skema pemeringkatan juga dapat berasal dari hampir semua model. Tidak harus berupa model faktor berbasis nilai, bisa juga berupa teknik pembelajaran mesin yang memprediksi laba sebulan sebelumnya dan memeringkatnya berdasarkan hal tersebut.

Pemilihan dan evaluasi skema pemeringkatan

Skema pemeringkatan adalah keuntungan dari strategi ekuitas seimbang panjang-pendek dan juga merupakan komponen paling penting. Memilih skema pemeringkatan yang baik adalah proyek sistematis dan tidak ada jawaban yang sederhana.

Titik awal yang baik adalah memilih teknologi yang sudah dikenal dan melihat apakah Anda dapat memodifikasinya sedikit untuk memperoleh hasil yang lebih tinggi. Kami akan membahas beberapa titik awal di sini:

  • Klon dan sesuaikan:Pilih sesuatu yang sering dibahas dan lihat apakah Anda dapat memodifikasinya sedikit untuk keuntungan Anda. Biasanya, faktor publik tidak lagi memiliki sinyal perdagangan karena telah sepenuhnya diarbitrasekan keluar pasar. Namun, kadang-kadang mereka dapat mengarahkan Anda ke arah yang benar.

  • Model Penetapan Harga:Model apa pun yang memprediksi keuntungan di masa mendatang dapat menjadi faktor dan berpotensi digunakan untuk menentukan peringkat keranjang target perdagangan Anda. Anda dapat mengambil model harga yang rumit dan mengubahnya menjadi skema pemeringkatan.

  • Faktor berbasis harga (indikator teknis)Faktor berbasis harga, seperti yang telah kita bahas hari ini, mengambil informasi tentang harga historis setiap ekuitas dan menggunakannya untuk menghasilkan nilai faktor. Contohnya mungkin indikator rata-rata pergerakan, indikator momentum atau indikator volatilitas.

  • Regresi dan Momentum: Perlu dicatat bahwa beberapa faktor percaya bahwa begitu harga bergerak dalam satu arah, harga akan terus bergerak demikian. Beberapa faktor justru sebaliknya. Keduanya adalah model yang valid pada kerangka waktu dan aset yang berbeda, dan penting untuk mempelajari apakah perilaku yang mendasarinya berbasis momentum atau regresi.

  • Faktor Fundamental (Berbasis Nilai): Ini menggunakan kombinasi nilai-nilai fundamental seperti PE, dividen, dll. Nilai fundamental mengandung informasi yang terkait dengan fakta dunia nyata tentang suatu perusahaan dan karena itu dapat lebih kuat daripada harga dalam banyak hal.

Pada akhirnya, mengembangkan prediktor adalah perlombaan senjata di mana Anda mencoba untuk tetap selangkah lebih maju. Faktor-faktor diarbitrasekan keluar dari pasar dan memiliki masa pakai, jadi Anda harus terus-menerus bekerja untuk menentukan seberapa banyak penurunan yang dialami faktor-faktor Anda dan faktor-faktor baru apa yang dapat digunakan untuk menggantikannya.

Pertimbangan lainnya

  • Menyeimbangkan kembali frekuensi

Setiap sistem pemeringkatan memprediksi laba dalam jangka waktu yang sedikit berbeda. Pembalikan rata-rata berbasis harga mungkin bersifat prediktif selama beberapa hari, sementara model faktor berbasis nilai mungkin bersifat prediktif selama beberapa bulan. Sangat penting untuk menentukan jangka waktu yang harus diperkirakan oleh model dan memvalidasinya secara statistik sebelum mengeksekusi strategi. Anda tentu tidak ingin melakukan overfitting dengan mencoba mengoptimalkan frekuensi rebalancing Anda; Anda pasti akan menemukan satu yang secara acak mengungguli yang lain. Setelah Anda menentukan cakrawala waktu yang diprediksi oleh skema peringkat Anda, cobalah untuk melakukan rebalancing pada frekuensi tersebut untuk dapatkan hasil maksimal dari model Anda.

  • Kapasitas Modal dan Biaya Transaksi

Setiap strategi memiliki persyaratan modal minimum dan maksimum, dengan ambang batas minimum biasanya ditentukan oleh biaya transaksi.

Memperdagangkan terlalu banyak saham akan mengakibatkan biaya transaksi yang tinggi. Dengan asumsi Anda ingin membeli 1.000 saham, setiap penyeimbangan kembali akan menimbulkan biaya beberapa ribu dolar. Basis modal Anda harus cukup tinggi sehingga biaya transaksi menyumbang sebagian kecil dari laba yang dihasilkan oleh strategi Anda. Misalnya, jika modal Anda \(100.000 dan strategi Anda menghasilkan 1% (\)1000) per bulan, semua pengembalian itu akan dihabiskan untuk biaya transaksi. Anda akan memerlukan modal jutaan dolar untuk menjalankan strategi ini agar dapat memperoleh keuntungan dari lebih dari 1.000 saham.

Batas aset minimum terutama bergantung pada jumlah saham yang diperdagangkan. Namun, kapasitas maksimumnya juga sangat tinggi, dan strategi ekuitas seimbang long-short mampu memperdagangkan ratusan juta dolar tanpa kehilangan keunggulannya. Hal ini benar karena strategi ini jarang diseimbangkan kembali. Jumlah aset total dibagi dengan jumlah saham yang diperdagangkan akan menghasilkan nilai dolar per saham yang sangat rendah, dan Anda tidak perlu khawatir tentang volume perdagangan Anda yang akan menggerakkan pasar. Katakanlah Anda memperdagangkan 1.000 saham, jumlahnya mencapai \(100.000.000. Jika Anda menyeimbangkan kembali seluruh portofolio Anda setiap bulan, Anda hanya akan memperdagangkan \)100.000 per bulan per saham, yang tidak cukup untuk menjadi pangsa pasar yang signifikan bagi sebagian besar sekuritas.