Deteksi outlier yang kuat dalam jangka waktu keuangan

16

Saya sedang mencari beberapa teknik yang kuat untuk menghapus outlier dan kesalahan (apa pun penyebabnya) dari data time-series keuangan (yaitu tickdata).

Tick-by-tick data time-series keuangan sangat berantakan. Ini berisi kesenjangan (waktu) yang sangat besar ketika pertukaran ditutup, dan membuat lompatan besar ketika pertukaran dibuka kembali. Ketika pertukaran terbuka, semua jenis faktor memperkenalkan perdagangan pada tingkat harga yang salah (tidak terjadi) dan / atau tidak mewakili pasar (lonjakan karena tawaran yang dimasukkan secara salah atau harga permintaan misalnya). Makalah ini oleh tickdata.com (PDF) melakukan pekerjaan dengan baik menguraikan masalah, tetapi menawarkan beberapa solusi konkret.

Sebagian besar makalah yang saya temukan online yang menyebutkan masalah ini, abaikan saja (tickdata dianggap disaring) atau sertakan penyaringan sebagai bagian dari beberapa model perdagangan besar yang menyembunyikan langkah penyaringan yang bermanfaat.

Adakah yang tahu tentang pekerjaan yang lebih mendalam di bidang ini?

Pembaruan: pertanyaan ini tampaknya serupa di permukaan tetapi:

  • Rangkaian waktu finansial (setidaknya pada level tick) non-periodik.
  • Efek pembukaan adalah masalah besar karena Anda tidak bisa hanya menggunakan data hari terakhir sebagai inisialisasi meskipun Anda benar-benar ingin (karena kalau tidak, Anda tidak punya apa-apa). Peristiwa eksternal dapat menyebabkan pembukaan hari baru berbeda secara dramatis baik di tingkat absolut, dan dalam volatilitas dari hari sebelumnya.
  • Frekuensi data yang masuk sangat tidak teratur. Dekat buka dan tutup hari, jumlah datapoints / detik dapat 10 kali lebih tinggi dari rata-rata pada siang hari. Pertanyaan lain berkaitan dengan data sampel secara teratur.
  • "Pencilan" dalam data keuangan menunjukkan beberapa pola spesifik yang dapat dideteksi dengan teknik spesifik yang tidak berlaku di domain lain dan saya -dalam bagian- mencari teknik spesifik tersebut.
  • Dalam kasus yang lebih ekstrim (mis. Flash crash) outlier mungkin berjumlah lebih dari 75% dari data dalam interval yang lebih lama (> 10 menit). Selain itu, frekuensi (tinggi) dari data yang masuk berisi beberapa informasi tentang aspek outlier dari situasi tersebut.
jilles de wit
sumber
1
Saya rasa ini bukan duplikat karena sifat datanya. Masalahnya dibahas pada pertanyaan lain yang terkait secara teratur mengamati time series dengan sesekali outlier (setidaknya itulah bagaimana saya menafsirkannya). Sifat data tick-by-tick akan menghasilkan solusi yang berbeda karena efek pembukaan pertukaran.
Rob Hyndman
kemungkinan duplikat dari algoritma Sederhana untuk deteksi outlier online dari rangkaian waktu umum. Pertanyaan ini diusulkan untuk ditutup sebagai duplikat. Bisakah Anda memberi tahu kami di utas meta jika dan bagaimana konteks Anda berbeda dari pertanyaan yang saya tautkan?
@Rob Tapi efek pembukaan pertukaran hanya menentukan kapan Anda harus menjalankan algoritma. Masalah mendasar tetap sama. Bahkan dalam data jaringan Anda memiliki 'efek pembukaan kantor' di mana lalu lintas memuncak segera setelah kantor dibuka. Paling tidak, OP harus menautkan ke pertanyaan itu, memindai jawaban di sana dan menjelaskan mengapa solusi di sana tidak berfungsi sehingga jawaban yang sesuai dapat diposting untuk pertanyaan ini.
1
Saya setuju dengan @Rob. Jenis data ini dapat menimbulkan tantangan unik, jadi ini bukan duplikat.
Shane
1
Saya pikir itu milik di sini. Pertanyaannya adalah tentang menganalisis rangkaian waktu yang tidak beraturan, sangat bising. Pernahkah Anda melihat "Pengantar Keuangan Frekuensi Tinggi" oleh Dacorogna, Olsen dan banyak lainnya? Atau makalah dari penulis yang sama?
PeterR

Jawaban:

14

Masalahnya pasti sulit .

Aturan mekanis seperti +/- N1 kali standar deviasi, atau + / N2 kali MAD, atau +/- N3 IQR atau ... akan gagal karena selalu ada beberapa seri yang berbeda seperti misalnya:

  • penetapan seperti suku bunga antar bank mungkin konstan untuk beberapa waktu dan kemudian melompat tiba-tiba
  • sama untuk misalnya valuta asing tertentu yang berasal dari pasak
  • instrumen tertentu tersebar secara implisit; ini mungkin mendekati nol untuk periode dan tiba-tiba berlipat ganda

Pernah ke sana, melakukan itu, ... di pekerjaan sebelumnya. Anda dapat mencoba mengurung setiap seri menggunakan kapal hubungan arbitrase ( mis. Mengasumsikan USD / EUR dan EUR / JPY dianggap baik, Anda dapat menghitung band sekitar USD / JPY seharusnya; demikian juga untuk turunan dari dasar dll hlm.

Vendor data komersial memperluas upaya ini, dan mereka yang menggunakan klien mereka tahu ... masih tidak mengecualikan kesalahan.

Dirk Eddelbuettel
sumber
+1 ya, tidak ada yang sempurna. Tickdata.com (yang makalahnya disebutkan) juga menyertakan pencilan dan mereka juga menghapus terlalu banyak data yang baik (bila dibandingkan dengan sumber lain). Data Olsen hampir mengerikan, dan saya biasanya hanya indikatif. Ada alasan mengapa bank membayar tim operasi besar untuk mengerjakan ini.
Shane
Saya suka ide Anda tentang menggunakan hubungan arbitrase yang dikenal. Sudahkah Anda mencoba ini di pekerjaan Anda sebelumnya?
jilles de wit
Tidak, kami tidak pernah memformalkannya sepenuhnya. Tapi saya pikir kami menggunakan beberapa yang sederhana (yaitu ETF vs indeks dasar dll). Sudah beberapa tahun.
Dirk Eddelbuettel
8

Saya akan menambahkan beberapa referensi kertas ketika saya kembali ke komputer, tetapi berikut adalah beberapa saran sederhana:

Mulai dengan bekerja dengan pengembalian. Ini sangat penting untuk menangani jarak tidak teratur di mana Anda secara alami bisa mendapatkan kesenjangan harga yang besar (terutama di akhir pekan). Kemudian Anda dapat menerapkan filter sederhana untuk menghapus pengembalian jauh di luar norma (mis. Vs sejumlah standar deviasi). Pengembalian akan menyesuaikan ke level absolut baru sehingga perubahan nyata yang besar akan menghasilkan hilangnya hanya satu centang. Saya sarankan menggunakan filter dua-pass dengan pengembalian yang diambil dari 1 langkah dan n langkah untuk menangani kelompok outlier.

Sunting 1: Mengenai penggunaan harga daripada pengembalian: harga aset cenderung tidak stasioner, sehingga IMO yang dapat menimbulkan beberapa tantangan tambahan. Untuk menjelaskan efek ketidakberesan dan kekuatan hukum, saya akan menyarankan beberapa jenis penyesuaian jika Anda ingin memasukkannya dalam filter Anda. Anda dapat mengukur perubahan harga berdasarkan interval waktu atau volatilitas. Anda dapat merujuk ke bukaan "volatilitas yang direalisasikan" untuk beberapa diskusi tentang ini. Juga dibahas dalam Dacorogna et. Al.

Untuk memperhitungkan perubahan volatilitas, Anda dapat mencoba mendasarkan perhitungan volatilitas Anda dari waktu yang sama hari selama seminggu terakhir (menggunakan musiman).

Shane
sumber
Dengan hanya menggunakan pengembalian Anda menjadi sangat rentan terhadap tangga (yaitu urutan harga yang naik atau turun dari norma, di mana setiap individu kembali dapat diterima, tetapi sebagai kelompok mereka mewakili pencilan). Idealnya Anda akan menggunakan pengembalian dan tingkat absolut.
jilles de wit
5

Saya telah (dengan beberapa penundaan) mengubah jawaban saya untuk mencerminkan kekhawatiran Anda tentang kurangnya 'kemampuan beradaptasi' dari orang gila / median tanpa syarat.

Anda dapat mengatasi masalah volatilitas yang bervariasi waktu dengan kerangka kerja statistik yang kuat. Ini dilakukan dengan menggunakan estimator kuat dari varian bersyarat (bukan estimasi kuat dari varian tak bersyarat yang saya sarankan sebelumnya): estimasi-M dari model GARCH. Maka Anda akan memiliki perkiraan waktu yang kuat dan beragam(μ^t,σ^t)yang tidak sama dengan yang diproduksi oleh GARCH fit biasa. Secara khusus, mereka tidak didorong oleh beberapa outlier yang jauh. Karena estimasi ini tidak digerakkan oleh mereka, Anda dapat menggunakannya untuk menandai outlier dengan andal menggunakan distribusi historis

xt-μ^tσ^t

Anda dapat menemukan informasi lebih lanjut (dan tautan ke paket R) dalam makalah ini :

Boudt, K. dan Croux, C. (2010). Perkiraan M-Kuat untuk Model GARCH Multivarian.

pengguna603
sumber
Saya sudah mencoba sesuatu seperti ini, tetapi metode ini tidak terlalu bagus untuk menghadapi perubahan volatilitas yang tiba-tiba. Hal ini menyebabkan kurangnya penyaringan dalam periode tenang dan penyaringan berlebih pada waktu yang lebih sibuk.
jilles de wit
Saya tidak mengerti ini, "Ini mengarah pada kurang menyaring dalam periode tenang dan terlalu banyak menyaring pada waktu yang lebih sibuk" peduli untuk menjelaskan?
user603
Dalam periode tenang volatilitas harga cenderung lebih rendah, sehingga harga lebih dekat ke rata-rata dapat dianggap outlier. Namun, karena Anda menggunakan MAD untuk (mungkin) seluruh hari perdagangan (atau bahkan lebih lama) pencilan ini berjarak kurang dari 3 MAD dari median dan tidak akan disaring. Kebalikannya berlaku untuk periode sibuk dengan pergerakan harga yang lebih tinggi (pergerakan harga yang dapat diterima akan disaring). Jadi masalah berkurang untuk memperkirakan MAD dengan benar setiap saat, yang merupakan masalah untuk memulai.
jilles de wit