2013年12月8日日曜日

投資主体別売買動向の外国人と個人の売買の関係

東証が出してる投資主体別動向みてると、以前から個人と外国人の
買いと売りが真逆の時が多い気がしてました。
ここに過去データがあったので、2003年から相関係数計算をしました。
http://www.traders.co.jp/domestic_stocks/stocks_data/investment_3/investment_3.asp

結果は次のようになりました。
投資主体別動向の週のデータを使って、表計算ソフトで計算しました。

・2003年1月~2013年12月1週の外国人・個人の売買
相関係数=-0.6853158269

・今年(2013年1月~2013年12月1週)の外国人・個人の売買
相関係数=-0.8350048906


結果は、集計が間違えていなければ大体予想通り。
統計詳しくはないけど、逆相関の関係にあるっぽいです。

2013年12月1日日曜日

javaのResourceBundleメモ

今更ながら初めてResourceBundleを使ってみる。
コードは変えずに、ファイルをロケールごとに用意しておけばいいっぽい。
ResourceBundle.Control使えばもっと色々できるみたいだけど、まずはこっちを試してみた。

まずは、読み込むPropertiesファイルを2つ用意する
sample.prpperties
name=taro
sample_ja_JP.properties
こちらは日本語用のファイル。
".properties"の前に_ja_JPを付けた名称にする。
name=太郎
このファイルは、native2asciiでユニコードに変換しておく。
native2ascii -encoding utf-8 sample.properties.ja.base sample_ja_JP.properties
変換すると以下のようになる。
name=\u592a\u90ce
これらのファイルをロケールを変えて読み込む。 getbundle()の引数でLocale指定もできるみたい。 読み込むときのファイル名は、.propertseや_ja_JPを外した完全修飾クラス名。
package test.bundle;
import java.util.Locale;
import java.util.ResourceBundle;


public class BundleTest {
    public static void main(String[] args) {
        // default(ja_JP)
        System.out.println(Locale.getDefault());
        ResourceBundle bundle1 = ResourceBundle.getBundle("test.bundle.sample");
        System.out.println(bundle1.getString("name"));
        // US
        Locale.setDefault(Locale.US);
        System.out.println(Locale.getDefault());
        ResourceBundle bundle2 = ResourceBundle.getBundle("test.bundle.sample");
        System.out.println(bundle2.getString("name"));    
    }
}
出力結果
ja_JP
太郎
en_US
taro

Jacksonでjsonファイルを読み込んでみた

javaでjsonファイルを読み込むためにJacksonを使ってみました。
jsonの形式自体あまり理解できていませんが、配列を使う2つのケースを読み込みを試しました。
形式に関しては、ここに色々なパターンが書いてあり、参考にしています。
http://adobe.github.io/Spry/samples/data_region/JSONDataSetSample.html
POJOを使う読み込み方はいろいろなサイトを参照。


パターン1
・sample1.json
{
    "users": 
    [
        {
            "name": "taro",
            "country": "japan",
            "age": 12
        }, 
        {
            "name": "jack",
            "country": "us",
            "age": 20
        }
    ]
}
・JsonTest1.java
import java.io.File;
import java.io.IOException;
import java.util.List;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonTest1 {

    public static void main(String args[]) throws JsonParseException,
            JsonMappingException, IOException {

        JsonTest1 converter = new JsonTest1();
        converter.parse("sample1.json");
    }

    public void parse(String fname) throws JsonParseException,
            JsonMappingException, IOException {
        UserList users = new ObjectMapper().readValue(new File(fname),
                UserList.class);
        for (User user : users.getUsers()) {
            System.out.println(user.getName());
            System.out.println(user.getCountry());
            System.out.println(user.getAge());
        }
    }

    public static class UserList {
        private List<User> users;

        public UserList() {
        }

        public List<User> getUsers() {
            return users;
        }

        public void setUsers(List<User> users) {
            this.users = users;
        }
    }

    public static class User {
        private String name;
        private String country;
        private int age;

        public User() {
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getCountry() {
            return country;
        }

        public void setCountry(String country) {
            this.country = country;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }
    }
}
パターン2
・sample2.json
[
    {
        "pair": "USDEUR",
        "price": 1.3588,
        "change": -0.0088
    },
    {
        "pair": "USDJPY",
        "price": 102.4250,
        "change": 0.0049
    }
]
・JsonTest1.java
import java.io.File;
import java.io.IOException;
import java.util.List;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonTest2 {
    public static void main(String args[]) throws JsonParseException,
            JsonMappingException, IOException {
        JsonTest2 converter = new JsonTest2();
        converter.parse("sample2.json");
    }
    public void parse(String fname) throws JsonParseException,
            JsonMappingException, IOException {
        List<Currency> pairs = new ObjectMapper().readValue(new File(fname),
                new TypeReference<List<Currency>>() {
                });
        for (Currency c : pairs) {
            System.out.println(c.toString());
        }
    }
    public static class Currency {
        private String pair;
        private double price;
        private double change;
        public Currency() {
        }
        public String getPair() {
            return pair;
        }
        public void setParr(String parr) {
            this.pair = parr;
        }
        public double getPrice() {
            return price;
        }
        public void setPrice(double price) {
            this.price = price;
        }
        public double getChange() {
            return change;
        }
        public void setChange(double change) {
            this.change = change;
        }
        @Override
        public String toString() {
            return pair+":"+price+"("+change+"%)";
        }
    }
}

2013年11月30日土曜日

初投稿

ブログ開設。
ここを参考にコードのシンタックスハイライトを設定。
http://cuvico.blogspot.jp/2010/03/bloggersyntaxhighlighter-2.html
投稿のプレビュー画面ではハイライトが反映されず、無駄に悩んだ・・

javaの場合
public static void main(String[] args){
   // test
}
javascriptの場合
var setArray = function(elems) {
    this.length = 0;
    push.apply(this, elems);
    return this;
}