Live Scripting
金融に特化して構築されたネイティブスクリプト言語。Python、SQL、Java、文字列テンプレートを3forgeプラットフォーム全体に組み込まれた単一のランタイムに統合しています。
金融向けに構築
データの近くにあるロジック、スタック全体で一貫している
金融機関では、ビジネスロジックはデータの近くに置かれ、継続的に進化し、チーム全体で理解可能でなければなりません。データアクセス、計算、プレゼンテーションの間の硬い境界は摩擦と重複をもたらします。3forgeスクリプト言語は、Java、Python、SQL、文字列テンプレートを金融固有の関数の包括的なライブラリで強化された単一の一貫したランタイムに組み合わせることで、これに直接対処します。一度定義されたロジックはデータモデルからユーザーインターフェースへシームレスに流れ、金融システムが実際に動作する方法に合わせた再利用可能で透明で本番環境グレードの計算をサポートします。
4つの言語、1つのランタイム
AmiScriptは金融ワークフローが実際に必要とするものを統合します
データ構造
Pythonにインスパイアされたマップ、リスト、ネストされたオブジェクトで、金融データを自然に表現できます。インストルメント、カーブ、プライシングラダー、シナリオを冗長なクラス定義なしに表現できます。
データアクセス
名前付きデータソースに対するSQLライクなクエリ。ランタイムで解決されるパラメータ化されたプレースホルダー付き。スクリプト環境を離れることなく管理されたアクセスを提供します。
関数定義
ビジネスロジックをカプセル化する強型付け、オーバーロード可能な関数定義。想定元本、エクスポージャー、マージン、PnLをリスク、トレーディング、レポーティング、コンプライアンス全体で一貫して管理します。
出力とフォーマット
計算結果をアラート、メッセージ、レポート、ビジュアルコンポーネントにフォーマットするための文字列テンプレート。個別のUIパイプラインなしにスクリプトレイヤー内から直接利用できます。
Pythonスタイルの構文
複雑な金融オブジェクトを自然に表現
AmiScriptはマップ、リスト、ネスト構造にPythonにインスパイアされた構文を採用し、開発者が階層的な金融データをコンパクトに表現できます。市場スナップショット、プライシングラダー、リスクバケット、設定オブジェクトをインラインで定義できます。冗長なクラス定義も外部スキーマも不要です。これらの構造は一等市民であるため、同じオブジェクトがプライシングロジックにフィードしたり、テーブルを埋めたり、チャートを駆動したりでき、モデリングと実行の間のグルーコードを排除します。JSONもApp Engine全体で完全にサポートされています。
Map pricingSummary = {
"ZXZZT": {
"Open": 489.10,
"prices": [492.10, 492.10]
}
};
Javaスタイルの定義
ビジネスロジックを再利用可能な関数としてカプセル化
AmiScriptはビジネスロジックを決定論的な方法でカプセル化する強型付けのオーバーロード可能な関数定義をサポートします。一度定義すれば、スクリプト、クエリ、モデル、ビジュアル全体で再利用できます。これは特に、想定元本、エクスポージャー、マージン、PnLのような計算で重要です。これらはリスク、トレーディング、レポーティング、コンプライアンスのワークフロー全体で同一でなければなりません。関数は軽量で組み合わせ可能で、組み込みライブラリとチェーンおよびネストでき、プラットフォームの管理されたランタイム内で実行されます。これにより観察可能、監査可能であり、システムの残りの部分と同じコントロールの対象となります。
double NOTIONAL_VALUE(
Number quantity,
Number price,
Number fx
) {
quantity * price * fx
};
SQLライクな実行
スクリプトを離れることなく管理されたデータアクセス
AmiScriptはAmiSQLと緊密に統合し、使い慣れたSQL構文を使用してライブおよび履歴データソースへの直接的な管理されたアクセスを提供します。パラメータ化されたプレースホルダーはランタイムで解決され、同じスクリプトが異なるユーザーやセッションに自動的に適応します。これはマルチテナントアプリケーション、クライアント固有のビュー、ロールベースのアクセス制御に不可欠です。データアクセスがスクリプトレイヤーに組み込まれているため、データのクエリとその操作の間に人工的な分離はありません。結果はすぐにダウンストリームの計算、可視化、または永続化にフィードされます。
create table mycopy AS use DS="ACCOUNT_DATA" execute
Select * from Accounts
where Account=="${USERACCOUNT}";
文字列テンプレート
同じスクリプトで計算、集計、フォーマット
AmiScriptは計算とプレゼンテーションロジックをクリーンに共存させます。集計と変換は宣言的に表現でき、その結果は組み込みテンプレートを使用してフォーマットされた出力に即座に注入できます。以前に定義されたビジネス関数は集計クエリ内で再利用可能で、計算スタック全体の一貫性を強化します。同じパターンはアラートを超えて拡張されます。計算された値はテーブル、チャート、ツールチップ、レポートに直接埋め込むことができ、ユーザーが見るものが別のレイヤーで後処理されるのではなく、管理されたトレーサブルなロジックから直接導出されることを保証します。
double totalNotional =
select sum(NOTIONAL_VALUE(
qty, px, fxrate))
from mycopy;
Session.alert(
"Total value for account ${USERACCOUNT}
is ${totalNotional}"
);
組み込みライブラリ
ドメイン別に整理された1,500以上の関数
AmiScriptには、ドメイン固有のモジュールに整理された組み込み関数の包括的なライブラリが含まれています。データアクセス、集計、時系列分析、金融計算、フォーマット、権限、セッション制御、システムインタラクションをカバーしており、開発者が共通のプリミティブを再実装することなく洗練されたワークフローを構築できます。
| カテゴリ | 関数例 | 金融での用途 |
|---|---|---|
| 三角関数: | acos(value) | 価格系列の季節性モデリングと波形分析 |
| バイナリ: | bitShiftLeft(n, shiftAmount) | ユーザーまたはデスクごとのビットマスク権限フラグのエンコードとデコード |
| 色彩: | clrGetAlpha(color) | PnLの大きさまたはエクスポージャーレベルによるリスクヒートマップの色スケール生成 |
| 日付と時間: | datePart(unixEpochMillis, part, timezone) | 決済日計算とタイムゾーン間の市場時間フィルタリング |
| エンコーディング: | decodeDouble64(value) | 低遅延ティックおよびFIXプロトコルフィードからのバイナリ価格フィールドのデコード |
| 数学: | exp(x) | 連続複利、割引係数、イールドカーブ構築 |
| パース: | jsonExtract(json, xpath) | 価格APIレスポンスと参照データペイロードからのフィールド抽出 |
| オペレーショナル: | logWarn(message) | コンプライアンスに敏感なワークフローステップとしきい値違反の監査証跡ログ |
| データパース: | parseXlsx(data, firstLineIsHeader) | 取引ブロッター、ファンドNAVレポート、ExcelからのスタティックデータファイルのIngesting |
| デルタ: | percentChange(old, nuw) | 日次リターン、当日内価格変動、ベンチマーク偏差の計算 |
| フォーマット: | quote(text) | インストルメント識別子、通貨、動的SQLクエリ文字列のフォーマット |
| ランダム: | randGaussian() | VaRとストレステストのためのモンテカルロシナリオ生成 |
| 丸め: | roundNearest(value, bucketSize) | 最小ティックサイズへの価格スナップとロットサイズ制約への数量スナップ |
| 暗号: | signDataMac(data, key, algorithm) | アウトバウンド注文メッセージの署名と取引所APIリクエストの認証 |
| 文字列操作: | strAfter(text, toFind, origIfNotFound) | インストルメントコードのパース、複合識別子からのISINまたはティッカーの抽出 |
| 時刻管理: | timestampNano() | 実行品質分析のためのナノ秒精度レイテンシ測定 |
| アドレス管理: | urlDecode(url) | 市場データと参照データAPIへのRESTコールの構築とデコード |
| 平均: | avgGauss(value, variance) | 加重平均価格、VWAP、ノイズ平滑化ポジション集計 |
| ギリシャ指標: | beta(value1, value2) | ベンチマーク対ポートフォリオベータ、ファクター感応度、ヘッジ比率計算 |
| 連結: | catUniqueLimit(value, delim, limit) | 取引または注文バケットごとのユニークなカウンターパーティまたはベニューリストの集計 |
| 統計: | percentileDisc(value, percent) | ポジション母集団全体の定義された信頼区間でのバリューアットリスク |
| クラスタリング: | kmeansCluster(nClusters, seed, values) | リスクプロファイル、セクターエクスポージャー、またはクライアント行動によるポートフォリオのセグメンテーション |
| リサンプリング: | resample(x, y, xq, linearOrSpline) | チャーティングとバックテスト用の均一なOHLCバーへのティックデータの正規化 |
始める
AmiScriptがあなた自身のデータに対して動作するのを見てみましょう。
3forgeソリューションエンジニアと30分のセッションを予約し、あなたのワークフロー、データソース、ビジネスロジックに適用されたLive Scriptingをご覧ください。