Home > カブロボTips

カブロボTips Archive

HSQLDBでのRobotLogの確認方法 (中・上級者向け)

  • 2010-08-06 (金)

カブロボJava SDKでは、RobotLogManager を利用することによりロボットの動作ログを後から確認することができます。

このログの確認方法の内の一つ、HSQLDBを使ったログ確認方法のティップスをご紹介します。

※ロボットログはプレーンテキストファイルにも出力することができます。扱い方はそちらの方が簡単なため、そちらを推奨しています。

Continue reading

【TIPS】一部のエラーログにスタックトレースがない理由

一部のエラーログにて、「スタックトレースを表示する」を選んでも表示されない場合があります。

これは Java の仕様で、ランタイムが最適化を行ったために発生します。
必ず同じ例外が発生する場合に、以前使用した Exception クラスのインスタンスを使い回そうとするためです。
こうすることにより、毎回同じ中身の例外インスタンスが生成されることを避け、高速に動作できます。

一方、スタックトレースが表示されないと不具合解消の手間が劇的に増してしまいます。

このため、カブロボではエラーログの中からスタックトレースがついているものを優先的に表示するようにしています。
もしスタックトレースが空のものしかご覧いただけない場合、大変お手数ですが「お問い合わせ」ページより、 以下の4点をお書き添えの上お問い合わせください。

  • お名前
  • ご登録のメールアドレス (※必須)
  • 対象のカブロボ名 (※必須、識別のため、カブロボ名をご設定いただきますようお願いいたします)
  • 状況(※必須、例:運用のログ、10年バックテストのログ、オンラインテストのログ)

【TIPS】成績指標(1)

成績指標(1)

カブロボでは成績や特徴を評価するために多数の成績指標が用意されています。
このコーナーでは複数回に渡って様々な成績指標を解説します。

◆トータル純損益

カブロボがどれだけ資産を増やせたかを計る、最もシンプルで大切な成績指標です。
運用期間中の資産の増加率をトータル純損益と呼びます。

例えば、5000万円の資金を6000万円に増やした場合、トータル純損益は20%になります。
逆に4000万円に減らしてしまった場合は-20%です。
売却・買戻ししていない保有株式も時価で評価します。

◆年率換算利回り

トータル純損益を複利で1年間あたりに換算した値です。

例えば、半年間のトータル純損益が10%だった場合、
半年を1年間に換算するために2乗します。
1.1を2乗した1.21、すなわち21%が年率換算利回りです。

運用期間が1年未満で短い場合は、極端な数字になりやすいので注意が必要です。
運用期間が1年を超える場合は、トータル純損益よりも0に近い数字になります。

【TIPS】銘柄の売買判断順序を工夫しよう

限られた資金を効率的に運用するには、銘柄の売買判断順序がとても重要です。
「値上がり率順」や「売買代金順」、「配当利回り順」など、21種類の順序から簡単に選ぶことができます。
設定する際は下記の方法・箇所をご利用下さい。

◆Java Kaburobo SDK

InformationManagerクラスのgetMarketRanking()メソッド

◆KBユニバーサル

「2. 銘柄を選ぶ 」の「銘柄ソート」ページ

◆KBストラテジー

「投資戦略ウィザード」をご利用の場合は、
「基本戦略」ページの「注目株(ランキング)」項目

「詳細設定」をご利用の場合は、
「基本戦略」の「行動」の「注目株(ランキング)」項目

【TIPS】出力ログを確認しよう

7月初旬より、カブロボサイト上で、運用中のカブロボに出力ログの表示機能がつきました。
プログラムから標準出力した内容がこのログビューアで見ることができます。

特に、SDKで開発されている方はご自分のロボットが運用環境ではどんなログを
出力しているのか気になるのではないでしょうか?

現時点はサーバ負荷の影響を考え、100行を上限とさせていただいています。
今後チューニングを重ね、すべてのログを見れるように改善していきたいと思います。

【SDK】TradeIDとCustomerTradeIDを使い分けよう

TradeIDでは足りないという方向けに、CustomerTradeIDというIDがあります。
CustomerTradeIDは何かというと、1つの注文に対してあなたが作ったカブロボが自由に付けられるIDのことです。
新規注文、返済注文を問わずに自由に指定出来ます。(逆に言えば何もしなければ何も指定されません。)
注文受付時に自動的に付与されるTradeIDとは異なり、CustomerTradeIDでは注文時に付与出来るのも
非常に便利に利用する事が出来ます。

TradeIDでは1トレードを表現するのに対して、
例えばCustomerTradeIDではどのシグナルで発生した注文かを割り当てる事も出来ます。

具体的には、短期売買の新規シグナルを1、長期売買の新規シグナルを2とした時に、
注文時にCustomerTradeIDを1か2を割り当てて注文をします。
そして、ポートフォリオ一覧で「ソフトバンク(9984) 3000円 1000株保有 TradeID=10」という状況があった場合に、
TradeID=10の注文履歴を検索します。
すると「9984 2800円 1000株 買い TradeID=10 CustomerTradeID=2」というような注文履歴が見つかる事でしょう。
この保有株は長期売買のシグナルで購入したものだということがわかり、
利益確定や損切りのライン調整が可能になります。

このように、CustomerTradeIDはTradeIDと組み合わせて利用することで非常に強力な投資戦略を組む事が出来ます。
是非あなたのカブロボにも組み入れてお役立て下さい。

【SDK】条件付特別注文を使おう

カブロボSDKでは、寄付きの株価に応じて注文をコントロールすることができます。

条件付特別注文機能をご利用いただければ、始値に応じて発注することや、指値・逆指値などの注文価格を変更することができます。

取引時間中の値動きを想定したトレード手法、寄付きの急な相場変動へのリスク対策アルゴリズムなど、高度なカブロボの開発にぜひご活用下さい。

詳しい作り方は、以下のページが参考になります。

IBM developerWorks
第2回スーパー・カブロボ・コンテスト: 上級編(6) - 条件付き発注ロボットを作る

目次:
- 条件付き発注
- 条件付き発注ロボットを作るための準備
- 条件付き発注ロボットを作る
- スーパー・カブロボ・コンテストに参加しましょう!

【SDK】成績表の注文理由別集計を活用する

成績表の一番下に、注文理由別集計があるのはご存じですか?
以下の例のように、理由に数字を指定すると、理由毎に集計してくれます。
(その場合、数字は無視されます)
例えば、同一の理由で数値がしきい値を超えた場合、理由付けに、

  • A値しきい値越え:20
  • A値しきい値越え:35.2

と書けば、以下のように
  • A値しきい値越え:* --- 2件

といった形で、同一の理由として集計され、
理由全体の傾向が把握しやすくなっています。

理由の指定方法については、
OrderManager#setLastOrderReason()
の JavaDoc をご参照ください。

【KBS】投資戦略ウィザードでらくらくカブロボ開発

「Kaburobo Builder ストラテジー」 には、カブロボの開発を効率化するために 「投資戦略ウィザード」 という機能があります。 投資額、保有日数、スクリーニング条件などの項目を選択するだけで、容易にカブロボを設定することができます。

このウィザードで作ったカブロボをベースにして、詳細設定ページで微調整を行いことができます。 初めての方は、「KBライト」の次にお試しいただければと思います。

なお、自分で部品を作り、その組み合わせで高度な設定をすることができる 「KBユニバーサル」 もご用意しています。

【TIPS】優れたカブロボの売買情報がメールでお手元に

日々更新されているカブロボのランキング... さまざまな角度から絞込みをすることで、きっとあなたのお気に入りのカブロボが見つかることと思います。 そのカブロボが日々の売買情報をメールで送ってくれる機能をご存知ですか?

Myページに「ログイン」をしてから、ランキングを検索して、気になるカブロボの作者ページに行きましょう。 その中から注目するカブロボを「ウォッチリスト」に入れます。 それだけで設定完了です! 選択したカブロボが、その売買情報を日々メールで送ってくれます。

【SDK】統計数学関数の活用

カブロボSDKには、統計的な数学関数を提供する KaburoboMath というクラスがあります。 統計的な計算する方は、自ら計算処理を記述しなくても、これらのクラスを利用すると便利です。

・数列の算術平均値
・2つの数列の相関係数
・2つの数列の共分散
・数列の変化率の不偏標準偏差
・数列の不偏標準偏差
・数列の母標準偏差
・数列の不偏分散
・アルファ値(ジェンセン測度)
・ベータ値

これらは、static メソッドなので、例えば、2つの数列の相関係数を計算する場合は、

KaburoboMath.calcCORREL(double[] ary1, double[] ary2)

と記述すると計算できます。 ぜひご活用ください。

【KBU】部品の詳細名表示機能

KaburoboBuilderユニバーサルのページ下部には、作成したパーツ名のリストが表示されます。このパーツ名の下部に「詳細名」という項目が加わったのはご存知でしょうか?

パーツ名はご自分で入力する方法と、「自動タイトル付けを有効にする」のチェックボックスをONにしておくことでシステムに自動入力させる方法があります。

詳細名は、このうち自動タイトル付けでつけられた名前を保持しています。ご自分でパーツ名をつけられている方も、どんな内容のパーツだったか確認しやすいようになっています。ぜひご活用ください。

【SDK】注文理由を使おう

Kaburobo SDK では、プログラミングの際に、それぞれの注文指示に、作者が理由を付けられる機能があります。 それらの理由は、運用(テスト)過程で自動集計され、詳細成績表の中で 「注文理由別の勝率」 として確認することができます。

この注文理由機能はとても強力です!
必要な個所に注文理由を付けてプログラミングすることにより、そのカブロボの、どの判断部分が良いのか、もしくは悪いのかを、容易に見分けることができるようになります。 是非この注文理由機能をつかって、より洗練されたアルゴリズムを研究していただければと思います。

【SDK】バックテストの最終日に特別な処理を追加する方法

Kaburobo SDK には、terminate() というメソッドがあり、このメソッドはロボットの処理終了時に呼ばれます。 主に最終成績を表示する用途に使用されますが、他の終了処理を行なうこともできます。

Home > カブロボTips

Search
Feeds

Page Top