Dalam artikel sebelum ini (((https://www.fmz.com/digest-topic/4187Kami memperkenalkan strategi perdagangan yang berpasangan dan menunjukkan bagaimana menggunakan data dan analisis matematik untuk membuat dan mengotomatiskan strategi perdagangan.
Strategi ekuilibrium berlebih adalah lanjutan semula jadi daripada strategi perdagangan berpasangan yang digunakan untuk satu tanda dagangan keranjang. Ia amat sesuai untuk pelbagai pasaran dagangan yang mempunyai banyak hubungan antara satu sama lain, seperti pasaran mata wang digital dan pasaran hadapan komoditi.
Strategi perpaduan ruang adalah dengan melakukan perdagangan lebih banyak dan tidak banyak pada satu keranjang. Seperti perdagangan yang disatukan, ia menentukan mana satu pelaburan yang murah dan mana satu yang mahal. Berbeza dengan itu, strategi perpaduan ruang akan meletakkan semua pelaburan di dalam satu kumpulan saham untuk menentukan mana satu pelaburan yang relatif murah atau mahal. Ia kemudian akan berdasarkan kedudukan kepada n pelaburan di hadapan pelbagai kepala, dan dengan jumlah yang sama, ia akan membuat perdagangan kosong di bawah n pelaburan (jumlah banyak kedudukan = jumlah kedudukan).
Ingatkah anda sebelum ini bahawa perdagangan berpasangan adalah strategi yang netral pasaran? Begitu juga dengan strategi hak dan faedah yang seimbang dengan ruang kosong, kerana jumlah kedudukan yang sama dengan kedudukan kosong memastikan strategi akan kekal netral pasaran ("tidak dipengaruhi oleh turun naik pasaran"). Strategi ini juga kukuh secara statistik; dengan meletakkan kedudukan pada tanda pelaburan dan memegang pelbagai kedudukan, anda boleh membuat banyak perdagangan pada model kedudukan anda, bukan hanya satu peluang risiko tunggal. Anda hanya bertaruh pada kualiti program kedudukan anda.
Peringkat adalah model yang boleh memberi keutamaan kepada setiap indikator berdasarkan prestasi yang dijangkakan. Faktor-faktor ini boleh menjadi faktor nilai, indikator teknikal, model harga atau gabungan semua faktor di atas. Sebagai contoh, anda boleh menggunakan indikator momentum untuk memberi kedudukan kepada pelbagai indikator yang mengikuti trend: indikator yang dijangka mempunyai momentum tertinggi akan terus beraksi dengan baik dan mendapat kedudukan tertinggi; pelaburan dengan momentum terkecil akan berprestasi terburuk, dengan pulangan terendah.
Kejayaan strategi ini terletak hampir sepenuhnya pada perancangan kedudukan yang digunakan, iaitu perancangan kedudukan anda dapat memisahkan tanda pelaburan berprestasi tinggi dari tanda pelaburan berprestasi rendah untuk mencapai pulangan yang lebih baik daripada strategi tanda pelaburan berkosong. Oleh itu, membuat perancangan kedudukan sangat penting.
Setelah kita menentukan peringkat, kita jelas ingin mendapat keuntungan daripadanya. Kami melakukan ini dengan meletakkan jumlah dana yang sama untuk membuat lebih banyak pelaburan yang berada di peringkat teratas dan tidak ada pelaburan yang berada di peringkat terbawah. Ini memastikan strategi hanya akan menghasilkan wang secara proporsional mengikut kualiti peringkat dan akan menjadi "neutral pasaran".
Katakan anda sedang membuat ranking untuk semua indikator m, mempunyai pelaburan $n, dan ingin memegang kedudukan dengan jumlah 2p (di mana m> 2p). Jika indikator peringkat 1 dijangka melakukan yang paling teruk, maka indikator peringkat m dijangka melakukan yang terbaik:
Anda boleh letakkan mata wang di tempat seperti: 1,..., dan p, dan kosongkan mata wang $2/2p.
Anda akan meletakkan mata wang sebagai: m-p..., m, dan anda akan membuat mata wang lebih daripada $n/2p.
** Nota: ** Oleh kerana harga tanda pelaburan yang disebabkan oleh lompatan harga tidak akan selalu membahagikan n/2p secara merata, dan beberapa tanda pelaburan mesti dibeli dengan bilangan bulat, maka akan ada beberapa algoritma yang tidak tepat, algoritma yang harus sedekat mungkin dengan angka ini. Untuk strategi yang menjalankan n = 100000 dan p = 500, kita melihat:
n/2p = 100000/1000 = 100
Ini boleh menimbulkan masalah besar untuk harga lebih besar daripada 100 (seperti pasaran hadapan komoditi) kerana anda tidak boleh membuka kedudukan dengan harga pecahan (tidak ada masalah dengan pasaran mata wang digital).
Pertama sekali, untuk kerja berjalan lancar, kita perlu membina persekitaran penyelidikan kita, dan dalam artikel ini kita menggunakan platform kuantitatif pencipta.FMZ.COMPerisian ini digunakan untuk membina persekitaran penyelidikan, terutamanya untuk menggunakan API yang mudah dan cepat untuk platform ini dan pembungkusan sistem Docker yang lengkap.
Dalam nama rasmi platform kuantiti pencipta, sistem Docker ini dikenali sebagai sistem hosts.
Untuk maklumat mengenai cara menggunakan pentadbir dan bot, sila rujuk artikel saya sebelum ini:https://www.fmz.com/bbs-topic/4140
Untuk pembaca yang ingin membeli pelayan pelayaran pelayaran awan mereka sendiri, lihat artikel ini:https://www.fmz.com/bbs-topic/2848
Selepas berjaya menggunakan perkhidmatan dan sistem pentadbir awan yang baik, seterusnya kita akan memasang python terbesar: Anaconda
Untuk mewujudkan semua persekitaran program yang berkaitan yang diperlukan untuk artikel ini (dependencies, version management, dan lain-lain), cara yang paling mudah adalah dengan menggunakan Anaconda. Ia adalah ekosistem sains data Python yang terbungkus dan pengurus perpustakaan bergantung.
Untuk cara memasang Anaconda, sila lihat panduan rasmi Anaconda:https://www.anaconda.com/distribution/
本文还将用到numpy和pandas这两个目前在Python科学计算方面十分流行且重要的库.
Kerja-kerja asas di atas juga boleh dirujuk ke artikel saya sebelumnya mengenai cara menyediakan persekitaran Anaconda dan perpustakaan kedua-dua, numpy dan pandas, untuk maklumat lanjut:https://www.fmz.com/digest-topic/4169
Kami menghasilkan penanda pelaburan rawak dan faktor rawak, dan memberi kedudukan kepada mereka. Mari kita anggap pulangan masa depan kita sebenarnya bergantung kepada 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)
Sekarang kita mempunyai nilai faktor dan keuntungan, kita boleh melihat apa yang akan berlaku jika kita membuat ranking pada parameter pelaburan berdasarkan nilai faktor, dan kemudian membuka banyak dan kosong.
# 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()
Strategi kami adalah untuk mendapatkan kedudukan teratas dalam satu kumpulan tanda pelaburan; tidak mendapat kedudukan ke-10; pulangan dari strategi ini ialah:
basket_returns[number_of_baskets-1] - basket_returns[0]
Hasilnya ialah: 4.172.
Kami meletakkan wang pada model kedudukan kami untuk membezakan antara pelaburan berprestasi tinggi dan pelaburan berprestasi rendah.
Di bahagian seterusnya dalam artikel ini, kita akan membincangkan bagaimana untuk menilai skema kedudukan. Manfaat dari keuntungan yang berasaskan kedudukan adalah bahawa ia tidak terjejas oleh kekacauan pasaran, tetapi boleh dimanfaatkan.
Kami memuat naik data untuk 32 saham dalam industri yang berbeza dalam Indeks S&P 500 dan cuba membuat kedudukan untuk mereka.
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 parameter standard untuk kedudukan pada satu bulan.
## 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 tingkah laku saham kita untuk melihat bagaimana saham kita berfungsi di pasaran dalam faktor kedudukan yang kita pilih.
Tindakan saham
Kita lihat bagaimana saham dalam keranjang yang kita pilih beraksi dalam model kedudukan kita. Untuk ini, mari kita mengira pulangan jangka panjang semua saham selama seminggu. Kemudian kita boleh melihat hubungan setiap saham dengan pulangan satu minggu yang lalu dengan pergerakan 30 hari sebelumnya. Saham yang menunjukkan hubungan positif adalah trend yang mengikuti, dan saham yang menunjukkan hubungan negatif adalah pulangan 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()
Semua saham kita mempunyai nilai balik yang sama pada tahap tertentu! ((Sudah jelas bahawa ini adalah cara alam semesta yang kita pilih berfungsi)) Ini memberitahu kita bahawa jika saham mendapat kedudukan yang tinggi dalam analisis momentum, kita harus menjangkakan ia tidak berjalan dengan baik pada minggu depan.
Seterusnya, kita perlu melihat hubungan antara skor kedudukan kita dan pulangan ke hadapan pasaran secara keseluruhan, iaitu apakah ramalan kadar pulangan yang dijangkakan berkaitan dengan faktor kedudukan kita, apakah peringkat keakraban yang lebih tinggi dapat meramalkan pulangan relatif yang lebih buruk, atau sebaliknya?
Untuk melakukan ini, kami mengira hubungan harian antara pergerakan 30 hari semua saham dan pulangan jangka panjang seminggu.
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()
Perbezaan harian adalah sangat besar, tetapi sangat kecil (ini diharapkan kerana kita telah mengatakan bahawa semua saham akan mendapat pulangan yang sama); kita juga perlu melihat hubungan bulanan purata kepada pulangan sebulan sebelumnya.
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()
Kita dapat melihat bahawa kesamaan purata adalah negatif sekali lagi, tetapi ia juga berubah dengan besar setiap bulan.
Kita telah mengira pulangan bagi satu bakul saham yang dikeluarkan dari kedudukan kita. Jika kita meletakkan semua saham dalam kedudukan dan membahagikan mereka kepada kumpulan nn, maka berapa purata pulangan bagi setiap kumpulan?
Langkah pertama adalah membuat fungsi yang akan memberikan pulangan purata dan faktor kedudukan untuk setiap bakul 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 mengira purata pulangan setiap keranjang apabila membuat kedudukan saham berdasarkan skor ini. Ini sepatutnya memberi kita gambaran tentang hubungan mereka dalam jangka masa yang lama.
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()
Nampaknya kita dapat membezakan antara orang yang berprestasi tinggi dan orang yang berprestasi rendah.
Sudah tentu, ini hanya perbandingan. Untuk memahami seberapa konsisten perhubungan ini dan sama ada kita bersedia untuk berdagang, kita harus mengubah cara dan sikap kita untuk melihatnya dari masa ke masa. Seterusnya kita akan melihat perbezaan suku bunga bulanan (kifer) selama dua tahun pertama mereka.
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()
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()
Akhirnya, jika kita buat lebih dari satu bakul terakhir dan kosongkan bakul pertama setiap bulan, mari kita lihat pulangan (asalkan setiap sekuriti mempunyai peruntukan modal yang sama)
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)
Kadar pulangan tahunan: 5.03%
Kami melihat bahawa kami mempunyai satu peringkat yang sangat lemah, yang hanya dapat membezakan saham berprestasi tinggi dengan saham berprestasi rendah. Di samping itu, peringkat ini tidak konsisten dan sangat berubah setiap bulan.
Untuk mewujudkan strategi keseimbangan berlebih, anda hanya perlu menentukan rangsangan. Selepas itu, semuanya adalah mekanikal. Setelah anda mempunyai strategi keseimbangan berlebih, anda boleh menukar faktor peringkat yang berbeza tanpa banyak perubahan. Ini adalah cara yang sangat mudah untuk mengulangi idea anda dengan cepat tanpa perlu bimbang untuk menyesuaikan semua kod setiap kali.
Skim peringkat juga boleh datang dari hampir mana-mana model. Ia tidak semestinya model faktor berasaskan nilai, ia boleh menjadi teknik pembelajaran mesin yang boleh meramalkan pulangan sebulan lebih awal dan memberi kedudukan berdasarkan peringkat tersebut.
Peringkat adalah kelebihan dan komponen yang paling penting dalam strategi hak-hak yang seimbang. Memilih peringkat yang baik adalah projek sistematik, dan tidak ada jawapan mudah.
Satu titik permulaan yang baik adalah dengan memilih teknologi yang sedia ada dan melihat jika anda boleh mengubahnya sedikit demi sedikit untuk mendapatkan pulangan yang lebih tinggi.
Kloning dan penyesuaian: Pilih topik yang sering dibincangkan dan lihat sama ada anda boleh mengubahnya sedikit untuk mendapatkan kelebihan. Biasanya, faktor terbuka tidak akan mempunyai isyarat perdagangan lagi kerana mereka telah sepenuhnya memanfaatkan pasaran. Tetapi kadang-kadang mereka akan mengarahkan anda ke arah yang betul.
Model harga: mana-mana model yang meramalkan pulangan masa depan boleh menjadi faktor dan mempunyai potensi untuk digunakan untuk memberi kedudukan kepada tanda dagangan keranjang anda. Anda boleh menggunakan mana-mana model harga yang kompleks dan mengubahnya menjadi skema kedudukan.
Faktor berasaskan harga (penunjuk teknikal): faktor berasaskan harga, seperti yang kita bincangkan hari ini, mendapatkan maklumat mengenai harga sejarah untuk setiap kepentingan hak dan menggunakannya untuk menjana nilai faktor. Contoh boleh menjadi indikator purata bergerak, indikator momentum atau indikator kadar turun naik.
Kembali dan momentumPerlu diperhatikan bahawa beberapa faktor berpendapat bahawa harga akan terus bergerak ke arah yang sama sekali; beberapa faktor sebaliknya; kedua-duanya adalah model yang berkesan mengenai rentang masa dan aset yang berbeza, dan penting untuk mengkaji tingkah laku asas berdasarkan momentum atau berdasarkan regresi.
Faktor asas (berdasarkan nilai): Ini adalah menggunakan gabungan nilai asas, seperti PE, dividen, dan lain-lain. Nilai asas mengandungi maklumat yang berkaitan dengan fakta dunia nyata syarikat, dan oleh itu dalam banyak hal boleh menjadi lebih kuat daripada harga.
Pada akhirnya, faktor ramalan pertumbuhan adalah perlumbaan senjata, dan anda cuba untuk terus berada di hadapan. Faktor-faktor akan disalurkan dari pasaran dan mempunyai jangka hayat, jadi anda mesti terus bekerja untuk menentukan berapa banyak faktor anda mengalami kemerosotan dan apa faktor baru yang boleh digunakan untuk menggantikannya.
Setiap sistem kedudukan akan meramalkan pulangan pada rentang masa yang sedikit berbeza. Kembali purata berdasarkan harga mungkin diramalkan dalam beberapa hari, sementara model faktor berdasarkan nilai mungkin meramalkan dalam beberapa bulan. Menentukan rentang masa mana model harus meramalkan sangat penting, dan melakukan pengesahan statistik sebelum melaksanakan strategi. Anda tentu tidak mahu terlalu sesuai dengan cuba mengoptimumkan frekuensi rebalancing, dan anda pasti akan menemui satu yang optimum secara rawak pada frekuensi lain.
Setiap strategi mempunyai jumlah modal minimum dan maksimum, dan ambang minimum biasanya ditentukan oleh kos urus niaga.
Perdagangan terlalu banyak saham akan menyebabkan kos dagangan yang tinggi. Misalkan anda ingin membeli 1000 saham, maka setiap rebalancing akan menghasilkan kos beberapa ribu dolar. Asas modal anda mestilah cukup tinggi untuk kos dagangan menjadi sebahagian kecil daripada pulangan yang dihasilkan oleh strategi anda. Sebagai contoh, jika modal anda adalah $ 100,000 dan strategi anda memperoleh 1% sebulan (<$ 1000), semua pulangan ini akan diambil alih oleh kos dagangan.
Tahap aset terendah bergantung kepada jumlah saham yang diperdagangkan. Walau bagaimanapun, kapasiti maksimum juga sangat tinggi, dan strategi ekuilibrium kosong dapat memperdagangkan beratus-ratus juta dolar tanpa kehilangan kelebihan. Ini adalah benar kerana strategi ini agak jarang diseimbangkan semula. Jumlah aset keseluruhan selain jumlah saham yang diperdagangkan, nilai dolar setiap saham akan sangat rendah, dan anda tidak perlu bimbang bahawa jumlah dagangan anda akan mempengaruhi pasaran.