中田真秀(なかたまほ)のブログ

研究について、日常について、その他。

Ku ChartとIndexes7Lはほぼ同じ

2014-12-25 22:08:42 | 日記
Kuは通貨の強弱を測定するのだが、同じようなアイディアのインジケーターは
ccfp_cc_v2_0や、
Indexes_v7L
などいくつかある。情報量が多く、重宝する。

まず、対数変化率と、相対変化率は実質的に同じであることを述べておく。
v1とv2が非常に近い時
log(v1/v2)=log v1 (1+(v2-v1/v1)) = log v1 + log (1+v2-v1/v1) =log v1+(v2-v1)/v1
となって両者は定数をのぞいて同じになる。

v1とv2の違いが大きいとき
どちらの変化率もあまりインジケーターとして意味をなさない。

確かにKuを1日ずつ起点を変えたとき、対数変化率と相対変化率で計算したものはほとんど一致する。

Kuの利点は、遠い点では絶対値には意味がないにもかかわらず、適当に平行移動することで(たとえば、1日のはじめを0にするとか)、ある点からの相対値は正しい値が出てくるところである。つまり数値的に非常に安定している点にある。

Indexes_v7Lは、ある起点からの相対変化率で見ている(のを何倍かしている?)
ccfp_ccでは、slow MAとfast MA (MA=移動平均)でもって、slow MAの値を起点としてfast MAとの相対変化率を見ている。
これもなかなかよいアイディアではあるように見える。

Kuはある点の近傍、短時間では正しいが、長時間だと定数分のズレがあるということは、微分 or モメンタムは長時間でも常に正しい値を出す
ということになる。ということは、
Savitzky–Golay filterで平滑かつ一次微分をかましてみると、
Indexes_8Lみてるのとだいたい同じくらいか、う~ん、ま~もうちょうまし、程度にはなったか(?)

微分はFIRフィルタとしては(古典的な)Savitzky–Golay filterは結構良いのだが、Remez法とかで設計するのが現代的なやり方だそう。ま~導出が圧倒的に楽なSavitzky-Golay filterは使いやすそうではあるね~。

ただ、Filterの特性上、微分は高周波ノイズを含みやすい。また、平滑化をすすめるとdelayが大きくなる、と、本質的なところで大変ではあります。そんな鞘は抜かれてるってか?
気が向いたらコードをuploadします。お疲れさんでした。

Kuの導出と意味 : Ku-Chartの仕組み

2014-12-22 21:09:41 | 日記
Ku-Chartというのがあるが、これが通貨の強弱を表すというので、使われている人も多いらしい。
28通貨ペア・パワーマップ:ドルスイス、NZDに負ける? 確かに昨日のNZDCHFやEURNZDの動きはKu-Chartでよく分かった。

導出に関してはどこにも書いてなかったので、ここで導出してみた。また少し考察も加えてみた。
尚、私は経済の専門ではないので言葉の定義などは通常のそれらとは違うことがある。

仮定として
* 通貨にはそれぞれ絶対的価値vがあり、為替レートはその比
これは相対的購買力平価説に近い。価値指標は、インフレ率に読み替えれば良い。為替レートrijは、絶対的価値vi/vj
また、絶対的価値といったが、金本位制を思い浮かべれば良い。

* vの変化率の総和は0
従って、たとえば、USDの絶対的価値が10%上昇するということは、JPYが5%、EURが5%下がるということになる。
これも相対的購買力平価説では、短時間でのインフレ率の変化率の総和は0ということである。

* vの変化率はそれぞれ微小である。
---

事実として
xが常に小さい正数で
* log(1+x)=x (x<<1)
が成立する。

さて、i=1,...,n種類の通貨があるとする。
各通貨の絶対価値をv_iとし、ある一定時間後 v_i+\delta v_iとなったとしよう。この時、\delta v_i / v_i を求め\delta v_i / v_iをプロットすることにする。

まず、各通貨のレートは知っている; r_ij = v_i / v_j, r^*_ij = (v_i + \delta v_i) / (v_j + \delta v_j) として、両辺のlogをとると、
log r^*_ij = log (v_i + \delta v_i) - log (v_j + \delta v_j) = log v_i ( 1 + \delta v_i /v_i) - log v_j (1 + \delta v_j / v_j)
= log v_i + \delta v_i / v_i - log v_j - \delta v_j /v_j
= log (v_i / v_j) + \delta v_i / v_i - \delta v_j /v_j
= log r_ij + \delta v_i / v_i - \delta v_j /v_j
log r^*_ij - log r_ij = \delta v_i / v_i - \delta v_j /v_j
log (r^*_ij / r_ij) = \delta v_i / v_i - \delta v_j /v_j
ここでjについて和をとると
\sum_{j} log (r^*_ij / r_ij) = (n-1) \delta v_i / v_i - \sum \delta v_j / v_j
\sum_{j}= \sum \delta v_j / v_j = 0 (絶対的価値変化の総和はゼロ)
\sum_{j\neq i}= \sum \delta v_j / v_j = \delva v_i / v_i

つまり、
\delta v_i / v_i = 1/n \sum_{j} log (r^*_ij / r_ij)
となる。
通貨iに対する為替レートのある時刻での比のlogの平均値が、iの絶対的価値の変化率が求まる。


コメント
Kuの導出はこちらで考えたもので、もともとの意図とは異なる可能性が高い。違う考えに基づいても同じ式になることは多々有る。

各通貨に絶対的価値を仮定するのが正しいかどうかはわからない。相対購買力平価説におけるインフレ率という考えよりかはわかりやすいかも。
通貨の絶対的価値の変化の総和はゼロというのも、必ずしも正しくはない。実態経済に変化がないというごく短時間では正しいかもしれない。
つまり、USDのインフレ率が10%上昇するということは、JPYが5%、EURが5%下がるということであるが、流量の少ない通貨はこの総和ゼロという条件ではインパクトが大きくなりすぎるきらいがあると思われる。たとえばNZD, RUBなどは勝手に下がる可能性があるので、計算に入れるべきではないかもしれない。
さらに、価値の変化率が大きいと実体経済への影響が大きいので、このモデルは成り立たなくなる。数学的仮定とは違うが微小、つまり「絶対的価値の変化率は微小」という仮定も必要。ちょうどlogの近似はこの範囲で成り立つため都合が良い。

短時間、小さい変動の時のみに成り立つ指標だと考えられる。
ということで、積分値、つまり売られ方の絶対値をみるのは、長時間をみているということであまりよいことではない。短時間の微分値、方向、としてみるのが正しい。

Ku Chart長時間についての考察 plotするのは
\delta v_i / v_i = 1/n \sum_{j} log (r^*_ij / r_ij)
である。右辺を変形すると
= 1/n \sum_{j} log r^*_ij - \sum_{j} log r_ij
起点とするレートについての影響は -1/n \sum_{j} log r_ij のみ、起点の変化による影響は定数のみの違いなので、
長時間を見てもある時刻近傍では、絶対値が違う分以外は、厳密に正しいことになる。どうせある時刻での近傍でしか意味がないので、
見やすくするのに、ときどき計算起点を移動させてやるのは正しい。

また、微分値だけ見るのであれば、そもそも計算の起点を考慮する必要さえない。
ここで式の中では仮定が消えているが、そこらへんがこのKuのうまいところで、安定している所以だろう。微小変化を考えると
長時間部分は、-1/n\sum_j\log r_ijの部分に押し込められていて、見かけ上消えてしまう。

結論

計算精度、計算理論、安定性、情報量の多さ、投機のタイムスパンにフィットしているなど、バランスのよい指標だと思います! すごい!

日足、1時間足、五分足...で見るのはどんな意味があるのか、とダウンサンプリング

2014-12-15 20:42:22 | 日記
テクニカル分析において、日足、1時間足、五分足で見るというのがある。
ローソク足を書かせて、短時間のはそれなりの動き、長時間の動きには陰線、陽線、など意味を持たせる。
また、それに合わせてシグナルを出す、システムトレードではよく使うことである。

時間足を変更するというのは信号処理のコンテキストではどういう意味だろうか。そもそも足を長時間のものに変更することに意味はあるのだろうか。明らかに情報が落ちている!

相場の価格の最小単位はtickであり、tickあたりの時間は100ms程度で幅がある。これがもっとも高精度である。ここでは目をつぶって価格の変化は1秒など単位時間ごとに起こると思っていいだろう。

時間足を長くするというのは本質的にはダウンサンプリングすることである。ただし、ローソク足には、high, low, open, closeの四つの情報が入っているから、ダウンサンプリングよりは少し情報が多いためこれとは厳密には一致しない。それに通常ダウンサンプリングの際にはエイリアシングノイズが乗るはずだが、為替や株式の相場曲線ではこれははほとんど観測されない。周期になるような動きはすべて投機家同士が崩しにかかってくる。

ローソク足の「大陰線」「大陽線」というのは、そのローソク足のときに非常に激しく振動した、ということになる。時間足を短くすれば、高周波の動きがローソク足となって「見える」。

ダウンサンプリングだとわかれば、「大局で眺める」はローパスフィルタをかけることと同じとなる(ダウンサンプリングはローパスフィルタの一種)。ただ、「陽線」「陰線」は高周波を含んでいることが見える。ローソク足は単純なローパスフィルタより情報が多い所以であろう。

話題が逸れるが、ある時刻でのローソク足の価格をhigh+low+open+close/4 でその時の値を見るというのも単にローパスフィルタをかけているにすぎない。

そう思うと、RSIや平均移動を使ったテクニカル分析にでシグナルを出すというのは、足が細ければ細いほど、正確になるのではないか、と思うはずだが、実際そうなる。

ただし、高周波成分を取りきらないと、短時間に何度もシグナルを出させてしまうことになる。一時間足ではシグナルが一つしかでないのに、短時間足では3つでる、ということが起こりうる。この場合は単にシグナル生成のストラテジー、理論、ルール、または方法、が悪いだけである。

ならば、一時間足でシグナルを出させるといいのではないか、そう思うかもしれないが、それも間違いだ。ダウンサンプリングによるローパスフィルタがかかかっているため、長時間足では、時間足でのローソクが描かれる間は価格が上下し、情報が削られるにもかかわらずシグナルが出せない。その間に不利な価格になり、結果負けてしまうのだ

なかなか投機は難しい。

論文募集: 第148回HPC研究会 in 別府温泉

2014-12-09 10:22:44 | 日記
皆さま、

HPC研究会幹事の中田真秀@理研です。

本年度最後となる来年3月の情報処理学会HPC研究会
の論文発表を募集させていただきます。

本年度も合宿形式での開催で、
場所は花菱ホテル@別府温泉です。
追って、宿泊のご案内もお送りする予定です。

発表申し込みは下記案内のWWWページから行っていただきます。
締め切りは*12月25(木) 23時59分*です。

皆さまの積極的なご投稿をお待ちしております。
どうぞよろしくお願いいたします。

**********************************************************

=== 研究会発表論文募集 ===

*情報処理学会
*第148回ハイパフォーマンスコンピューティング研究発表会
(主査:横川三津夫、幹事:岩下武史、中田真秀、遠藤敏夫、櫻井隆雄)

*議題:一般
*日程:2015年3月2日(月)~3日(火)
*場所:花菱ホテル@別府温泉
http://www.beppu-hanabishi.co.jp/
〒874-0920 大分県別府市北浜2-14-29

*発表申込締切:2014年12月25日(木) 23時59分
*最終原稿締切:2015年2月5日(木) 23時59分
*照会先:HPC研究会幹事 E-mail: sighpc-kanji@xxxxxxx
*発表申込方法:
以下のURLの「発表申込」メニューよりお申込ください。
https://ipsj1.i-product.biz/ipsjsig/HPC/

* 登壇者の年齢が2014年4月1日現在で30歳未満の場合は、
申込フォームの「研究会への連絡事項欄」に「若手発表」とご記入下さい。
当該発表は研究会により推薦するCS領域奨励賞の審査対象となります。
なお、本申告は任意ですので必ずしもご記入頂く必要はありません。

**********************************************************