問題タブ [quantstrat]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - Quantstrat 複数通貨。Blotter::UpdateAcct の潜在的なバグ?
一般的な情報:
R バージョン: 3.1.0
ブロッター: 0.8.19
問題の説明:
通貨の異なる複数のポートフォリオを使用する quantstrat アカウントを実装しようとしています。
だからここに私の基本的なセットアップがあります:
- ユーロで1口座
- 1 米ドルのポートフォリオ
これを機能させるには、ヤフーから取得したデータに基づいて為替レートを設定する必要があります。次に、基本的な戦略を実行する必要があります。変換は、updateAcct 関数を介して最後のステップで自動的に行われます。
ここに問題があります... updateAcct 関数にはバグがあると思います。
マイコード:
次に、いくつかのインジケーター、シグナル、ルールなどを使用します....
コードが最後の行に到達するまで、すべてが機能します。
最後の行にエラー メッセージが表示されます。 Error in isTRUE(invert) : object 'invert' not found
考えられるバグ: そこで、 updateAcct 関数をチェックして、ここで少しデバッグすることにしました...コードに間違いがあると確信しています。63 行目の if 句は isTRUE(invert) を照会しますが、invert は実際に true の場合にのみ作成されます (else 句の 46 行目を参照)。しかし、invert は初期化されていないため、実際に false の場合、コードは失敗します。
これがソースコードブロッターです(オリジナル)
これは、次のようになると思います(スニペット行 28-50)...
TL;DR
通貨換算で為替レートを反転する必要がない場合に発生する、blotter:updateAcct にバグがあると思います...
質問: これはバグですか? または、何か不足していますか?
PS:
私は通常、これをバグとして報告しますが、A) 作者にバグを報告する方法がわかりません B) 私はまだ quantstrat、blotter、および Co. の初心者であり、他の誰かもこれをチェックする必要があると思います (および著者もかなり頻繁にここにぶらぶらしています)...
r - ブロッター/quantstrat/quantmod/performanceanalytics は内部キャッシュフローと期限切れ商品をどのように処理しますか?
内部キャッシュフローがブロッター/クオントストラット/クオントモッド/パフォーマンス分析でどのように処理されるかわかりません。これは主に 2 つの側面に関係します。配当、クーポンなどの通常のキャッシュフローと、満期を迎えた金融商品 (マネー オプションで決済された現金など) からのキャッシュフローです。株式の場合、配当調整済み価格をいつでも使用でき、株式が上場廃止になることは比較的まれであるため、これはそれほど問題ではないようです。ただし、クーポン債またはオプションの場合、これがどのように処理されるかわかりません。
だから私の質問は:
- これらのパッケージの内部キャッシュフロー (配当、クーポン、返済など) を処理する一般的なメカニズムはありますか?
- もしそうなら、これに関するドキュメントはありますか?また、ソース コード内の関連する実装はどこにありますか?
前もって感謝します
r - R プログラミング パッケージ quantstrat/FinancialInstrument/importDefaults の読み込みエラー
パッケージをインストールしようとしていますquantstrat
が、これを試みると常に次のエラーが発生します。
ここで、パッケージをロードしようとするとFinancialInstrument
、R は次のエラーをスローします。
quantstrat
パッケージをロードするために何をすべきかわかりません。3.0.0
Windows 64 ビット システムでR バージョンを使用しています。どんな助けでも大歓迎です。
r - quantstrat に使用されるブロッター パッケージをインストールできない
Rでパッケージを使用しようとしています。使用してquantstrat
パッケージをアップロード/インストールしました
ただし、一度使用すると
メッセージが表示されます:
必要なパッケージを読み込んでいます: quantstrat エラーで失敗しました: 'quantstrat' に必要なパッケージ 'blotter' が見つかりませんでした'</p>
私はそれから使用します
しかし、次のメッセージが表示されます。
ソース形式でのみ入手可能で、C/C++/Fortran のコンパイルが必要な場合があるパッケージ: 'blotter' これらはインストールされません
誰でも提案できますか?
r - quantstrat での毎月のリバランス
(これは長くて厄介な質問であることはわかっていますが、このおそらく単純なことに約2週間取り組んでいるので、誰かが私を助けてくれることを本当に願っています...)
2 つの質問
1) quantstrat で、ポートフォリオのリバランスに使用できる関数rulePctEquityを見つけました。この関数内のコードを読むと、この関数は主に新しいaddPosLimitを持つことに関するものであることがわかりました。add.rule(qs.strategy, 'rulePctEquity',...) を、他のルールをチェックする頻度と最大ポジションを設定するためのツールとして理解することは正しい でしょうか? 言い換えれば、それが戦略の唯一のルールである場合、取引は行われないということですか?
2) 私のコードを表示する前に、私のテスト戦略の概要は次のとおりです。毎月の初めに、ポートフォリオは保有するすべての株式を売却し、その時点で選択された上位 3 (ランキング) の株式を購入します。等重を使用してテストします。
しかし、私のテスト結果は、本来あるべきだと思っているものとは大きく異なります。時間を節約するために、問題はセクション4からだと思います。買い、空売り、売り、買いを示す関数
2 つの問題:
1) ポートフォリオのすべての資産を売却してから購入を開始するにはどうすればよいですか? (ポートフォリオは現在、逆のことをしています)
2) 1ヶ月目はいいのに、2ヶ月目以降になるとどうしてこんなに量が多くなるのかわからない。
(3052*10.92+1325*25.03+1189*28.03=~100000=InitEq
r - Quantmod R の csv を使用した getSymbols
を使用して、シンボルのグループをパッケージ quantstrat にアップロードしようとしていますquantmod::getSymbols
。
読み込んでいるシンボルは Yahoo では利用できない (南アフリカの株式) ため、ローカル ディレクトリと .csv ファイルから読み込む必要があります。
私のシンボルファイルは次のようになります。
私のシンボル価格履歴は個別の csv ファイルにあり、それぞれに日付列と OHLC 列が含まれ、OHLC 価格のみのヘッダーがあります。
getSymbols.csv
関数関数を次のように使用します。
しかし、次のエラーメッセージが表示されます
誰かが私が間違っていることを教えていただければ幸いです。株価を quantstrat パッケージにロードする別の方法があるかどうかはわかりません。
r - Quantstrat Rebalancing - 不当に長い実行時間
ここの親切なメンバーの助けを借りて、ついに quantstrat で独自のサンプル戦略を構築しました。このコードは、100 株未満のユニバースでは適切かつ高速に (~1 分) 動作しますが、たとえば 500 株にユニバースを拡張すると、実行時間は劇的に増加します (> 5 時間)。いくつかのテストの後、実行時間を増やすための鍵は applyStrategy であることがわかりました。リバランス。リバランスという言葉をなくすと、すべてが速く進みます。
ただし、一定の自己資本比率を維持するために、リバランス オプションを維持したいと考えています。大幅に増加した実行時間と考えられる解決策についてのアイデアをいただければ幸いです。
もっと説明すると、私の戦略はかなり単純なものです。毎月、ポートフォリオはポートフォリオ内のすべての株式を売却し、上位 20 位の (事前に決定された) ランクの株式を買い戻します。お金は20株に均等に分配されます。
より大きなユニバースのデータファイル: (コード内のパスを編集してください)
私のコード: (小さなサンプルでもうまく動作します)