3
fokus pada
1444
Pengikut

Alat yang berkuasa untuk pedagang program: Algoritma kemas kini tambahan untuk mengira min dan varians

Dicipta dalam: 2023-11-08 16:28:36, dikemas kini pada: 2024-11-08 09:13:54
comments   0
hits   1735

Alat yang berkuasa untuk pedagang program: Algoritma kemas kini tambahan untuk mengira min dan varians

pengenalan

Dalam perdagangan program, selalunya perlu untuk mengira purata dan varians, seperti semasa mengira penunjuk seperti purata bergerak dan turun naik. Apabila kita memerlukan pengiraan frekuensi tinggi dan jangka masa panjang, kita perlu mengekalkan data sejarah jangka panjang, yang tidak perlu dan memakan masa dan memakan sumber. Kertas kerja ini memperkenalkan algoritma pengemaskinian dalam talian untuk mengira purata wajaran dan varians, yang amat penting untuk memproses aliran data masa nyata dan melaraskan strategi dagangan secara dinamik, terutamanya strategi frekuensi tinggi. Artikel ini juga menyediakan pelaksanaan kod Python yang sepadan untuk membantu pedagang menggunakan dan menggunakan algoritma ini dengan cepat dalam transaksi sebenar.

Min dan varians mudah

Jika kita menggunakan \(\mu_n\) untuk mewakili purata titik data \(n\)th, dengan mengandaikan bahawa kami telah mengira purata \({n-1}\) titik data \(\mu_{n-1}\), kini kami Titik data baharu \(x_{n}\) diterima. Kami ingin mengira min baharu \(\mu_{n}\) yang merangkumi titik data baharu ini. Berikut ialah terbitan terperinci.

\(\mu_n = \frac{1}{n} \sum_{i=1}^{n} x_i\) \(\mu_n = \frac{1}{n} \left( x_n + \sum_{i=1}^{n-1} x_i \right)\) \(\mu_{n-1} = \frac{1}{n-1} \sum_{i=1}^{n-1} x_i\) \((n-1)\mu_{n-1} = \sum_{i=1}^{n-1} x_i\) \(\mu_n = \frac{1}{n} \left( x_n + (n-1)\mu_{n-1} \right)\) \(\mu_n = \mu_{n-1} + \frac{1}{n} (x_n - \mu_{n-1})\)

Proses kemas kini varians boleh diuraikan kepada langkah-langkah berikut:

\(S_n = \sum_{i=1}^{n} (x_i - \mu_n)^2\) \(S_n = \sum_{i=1}^{n} x_i^2 - n\mu_n^2\) \(S_n - S_{n-1} = x_n^2 - n\mu_n^2 + (n - 1)\mu_{n-1}^2\) \(S_n - S_{n-1} = (x_n - \mu_{n-1})(x_n - \mu_n)\) \(S_n = S_{n-1} + (x_n - \mu_{n-1})(x_n - \mu_n)\) \(\sigma_n^2 = \frac{S_n}{n}\)

Seperti yang dapat dilihat daripada dua formula di atas, proses ini membolehkan kami mengemas kini min dan varians baharu apabila menerima setiap titik data baharu \(x_n\) dengan hanya mengekalkan min dan varians data sebelumnya, tanpa menyimpan data sejarah , dan pengiraan lebih cepat. Tetapi masalahnya ialah apa yang dikira dengan cara ini ialah min dan varians keseluruhan sampel, manakala dalam strategi sebenar, kita perlu mempertimbangkan tempoh tetap tertentu. Dengan memerhatikan kemas kini min di atas, kita dapat melihat bahawa jumlah kemas kini min baharu ialah sisihan data baharu daripada min lalu didarab dengan nisbah Jika nisbah ini ditetapkan, kita akan mendapat purata wajaran eksponen yang akan kita bincangkan seterusnya.

Min berwajaran eksponen

Purata wajaran eksponen boleh ditakrifkan oleh hubungan rekursif berikut:

\(\mu_t = \alpha x_t + (1 - \alpha) \mu_{t-1}\)

dengan \(\mu_t\) ialah min wajaran eksponen pada titik masa \(t\), \(x_t\) ialah nilai yang diperhatikan pada titik masa \(t\), \(\alpha\) ialah faktor berat dan \(\mu_{t-1}\) ialah Ia ialah purata wajaran eksponen bagi titik masa sebelumnya.

Varians berwajaran eksponen

Untuk varians, kita perlu mengira purata wajaran eksponen bagi sisihan kuasa dua pada setiap titik masa. Ini boleh dicapai melalui hubungan berulang berikut:

\(S_n = \alpha S_{n-1} + (1 - \alpha)(x_n - \mu_n)(x_n - \mu_{n-1})\)

dengan \(\sigma_t^2\) ialah varians berwajaran eksponen pada titik masa \(t\), dan \(\sigma_{t-1}^2\) ialah varians berwajaran eksponen pada titik masa sebelumnya.

Perhatikan min dan varians berwajaran secara eksponen. Borang kemas kini inkrementalnya adalah selaras dengan intuisi Kedua-duanya mengekalkan sebahagian daripada nilai masa lalu dan menambah perubahan baharu Proses terbitan khusus boleh dirujuk kepada kertas ini: https://fanf2.user . srcf.net/hermes/doc/antiforgery/stats.pdf

Purata Pergerakan Mudah (SMA) vs Purata Pergerakan Eksponen (EMA)

Purata mudah (juga dikenali sebagai min aritmetik) dan purata wajaran eksponen ialah dua ukuran statistik biasa, masing-masing mempunyai ciri dan kegunaan yang berbeza. Min mudah memberikan berat yang sama kepada setiap pemerhatian dan mencerminkan lokasi pusat set data. Purata wajaran eksponen ialah pengiraan rekursif yang memberikan lebih berat kepada pemerhatian yang lebih terkini. Berat berkurangan secara eksponen apabila pemerhatian semakin jauh dari masa semasa.

  • Pengagihan berat badan: Purata mudah memberikan berat yang sama kepada setiap titik data, manakala purata wajaran eksponen memberikan berat yang lebih tinggi kepada titik data terkini.
  • Kepekaan terhadap maklumat baharu: Purata mudah tidak cukup sensitif kepada data yang baru ditambah kerana ia melibatkan pengiraan semula semua titik data. Purata wajaran eksponen boleh mencerminkan perubahan dalam data terkini dengan lebih cepat.
  • Kerumitan pengiraan: Pengiraan purata mudah adalah agak mudah, tetapi apabila bilangan titik data meningkat, kos pengiraan juga akan meningkat. Purata wajaran eksponen adalah lebih kompleks untuk dikira, tetapi disebabkan sifat rekursifnya, ia boleh menjadi lebih cekap untuk aliran data berterusan.

Kaedah penukaran anggaran EMA dan SMA

Walaupun purata mudah dan purata wajaran eksponen berbeza secara konsep, kita boleh menjadikan purata wajaran eksponen anggaran purata mudah untuk bilangan cerapan tertentu dengan memilih nilai \(\alpha\) yang sesuai. Perhubungan anggaran ini boleh diterangkan oleh saiz sampel yang berkesan, yang merupakan fungsi faktor berat \(\alpha\) dalam purata wajaran eksponen.

Purata Pergerakan Mudah (SMA) ialah min aritmetik bagi semua harga dalam tetingkap masa tertentu. Untuk tetingkap masa \(N\), centroid SMA (di mana min) boleh dianggap sebagai:

\(\text{SMA centroid} = \frac{1 + N}{2}\)

Purata bergerak eksponen (EMA) ialah purata wajaran yang lebih banyak titik data terkini mempunyai berat yang lebih besar. Berat EMA berkurangan secara eksponen dari semasa ke semasa. Sentroid EMA boleh diperolehi dengan menjumlahkan siri berikut:

\(\text{EMA centroid} = \alpha \times \left[1 + 2(1 - \alpha) + 3(1 - \alpha)^2 + \cdots \right] = \frac{1}{\alpha}\)

Apabila kita mengandaikan bahawa SMA dan EMA mempunyai pusat jisim yang sama, kita mendapat:

\(\frac{1 + N}{2} = \frac{1}{\alpha}\)

Menyelesaikan persamaan ini, kita boleh mendapatkan hubungan antara \(\alpha\) dan \(N\):

\(\alpha = \frac{2}{N + 1}\)

Ini bermakna, untuk SMA \(N\)-hari tertentu, nilai \(\alpha\) yang sepadan boleh digunakan untuk mengira EMA “bersamaan” supaya kedua-duanya mempunyai pusat jisim yang sama dan hasilnya sangat serupa.

Penukaran EMA dengan kekerapan kemas kini yang berbeza

Katakan kita mempunyai EMA yang dikemas kini setiap saat dengan faktor berat \(\alpha_1\). Ini bermakna setiap saat, titik data baharu ditambahkan pada EMA dengan berat \(\alpha_1\), manakala kesan titik data lama didarabkan dengan \(1 - \alpha_1\).

Jika kami menukar kekerapan kemas kini, katakan untuk mengemas kini setiap \(f\) saat, kami ingin mencari faktor berat baharu \(\alpha_2\) supaya jumlah impak titik data dalam \(f\) saat adalah sama seperti semasa mengemas kini setiap saat .

Lebih \(f\) saat, jika tiada kemas kini dibuat, pengaruh titik data lama akan mereput secara berterusan \(f\) kali, setiap kali didarab dengan \(1 - \alpha_1\). Oleh itu, jumlah faktor pereputan selepas \(f\) saat ialah \((1 - \alpha_1)^f\).

Untuk menjadikan EMA dikemas kini setiap \(f\) saat mempunyai kesan pereputan yang sama dalam satu kitaran kemas kini seperti yang dikemas kini EMA sekali sesaat, kami menetapkan jumlah faktor pereputan selepas \(f\) saat untuk sama dengan faktor pereputan dalam satu kemas kini kitaran:

\((1 - \alpha_1)^f = 1 - \alpha_2\)

Menyelesaikan persamaan ini, kita mendapat faktor berat baharu \(\alpha_2\):

\(\alpha_2 = 1 - (1 - \alpha_1)^f\)

Formula ini memberikan anggaran untuk faktor berat baharu \(\alpha_2\) yang memastikan kesan pelicinan EMA tetap apabila kekerapan kemas kini berubah. Sebagai contoh, kami mengira min harga \(\alpha_1\) sebagai 0.001, dan mengemas kini harga terkini setiap 10 saat Jika kami menukarnya kepada 1 saat, \(\alpha_2\) yang setara ialah kira-kira 0.01

Pelaksanaan kod Python

class ExponentialWeightedStats:
    def __init__(self, alpha):
        self.alpha = alpha
        self.mu = 0
        self.S = 0
        self.initialized = False

    def update(self, x):
        if not self.initialized:
            self.mu = x
            self.S = 0
            self.initialized = True
        else:
            temp = x - self.mu
            new_mu = self.mu + self.alpha * temp
            self.S = self.alpha * self.S + (1 - self.alpha) * temp * (x - self.mu)
            self.mu = new_mu

    @property
    def mean(self):
        return self.mu

    @property
    def variance(self):
        return self.S

# 使用示例
alpha = 0.05  # 权重因子
stats = ExponentialWeightedStats(alpha)
data_stream = [] # 数据流
for data_point in data_stream:
    stats.update(data_point)

ringkaskan

Dalam dagangan atur cara frekuensi tinggi, pemprosesan pantas data masa nyata adalah penting. Untuk meningkatkan kecekapan pengiraan dan mengurangkan penggunaan sumber, kertas kerja ini memperkenalkan algoritma pengemaskinian dalam talian untuk pengiraan berterusan min berwajaran dan varians aliran data. Pengiraan kemas kini tambahan dalam masa nyata juga boleh digunakan untuk mengira pelbagai data statistik dan penunjuk, seperti korelasi antara dua harga aset, pemasangan linear, dsb., yang mempunyai potensi besar. Kemas kini tambahan menganggap data sebagai sistem isyarat, yang merupakan evolusi pemikiran berbanding pengiraan tempoh tetap. Jika strategi anda juga mempunyai bahagian yang menyimpan pengiraan data sejarah, anda juga boleh mengubah suai mengikut idea ini, hanya merekodkan anggaran status sistem dan apabila data baharu tiba, kemas kini status sistem dan seterusnya.