0

2 番目の解像度のみの金融ティック データがあります。データ自体は時系列順に並べられています。

Date        Time      Bid     Ask
06/07/2015  19:09:29  0.7623  0.76262
06/07/2015  19:09:29  0.7623  0.76271
06/07/2015  19:09:29  0.7623  0.76276

私は、1秒未満のオーダーを知ることができる必要がある分析を行うことを検討しています。したがって、私の最初の考えは、ミリ秒を「偽造」することでした。同じ秒内に複数のティック (データポイント) がある場合、それらがその秒内で均等に分散されていると仮定します。したがって、同じ秒内に 3 つのティックがあったため、最初は 2 番目の開始時に発生し、2 番目は .333 で、3 番目は .666 で発生すると想定します。

2 つの質問です。

  1. このアプローチ (ミリ秒を偽装する) は、実際の注文を保存するための最良の方法ですか?

  2. インポートするデータがかなり多いので、生データをアップロードしてから、ミリ秒の計算を行う選択を使用して宛先テーブルに挿入するという 2 段階のプロセスで操作することを考えていました。したがって、以下のクエリ/アプローチに関するヘルプをいただければ幸いです。


CREATE TEMPORARY TABLE dataload (
    id serial
  , dt date
  , tm time
  , bid numeric(10,5)
  , ask numeric(10,5)
);

COPY dataload (dt, tm, bid, ask) FROM '/path/to/data.csv' WITH CSV HEADER;

-- INSERT INTO actual_table
SELECT
    dt
  , tm
  , (dt||tm)::timestamp -- Need to hack the milliseconds here
from dataload
group by dt, tm;
4

2 に答える 2