lit-forge-mcp 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -4
- package/dist/index.js +1 -1
- package/dist/lib/__tests__/correlation.test.d.ts +1 -0
- package/dist/lib/__tests__/correlation.test.js +53 -0
- package/dist/lib/__tests__/correlation.test.js.map +1 -0
- package/dist/lib/__tests__/quartile.test.d.ts +1 -0
- package/dist/lib/__tests__/quartile.test.js +148 -0
- package/dist/lib/__tests__/quartile.test.js.map +1 -0
- package/dist/lib/__tests__/rankings.test.d.ts +1 -0
- package/dist/lib/__tests__/rankings.test.js +67 -0
- package/dist/lib/__tests__/rankings.test.js.map +1 -0
- package/dist/lib/__tests__/sessions.test.d.ts +1 -0
- package/dist/lib/__tests__/sessions.test.js +47 -0
- package/dist/lib/__tests__/sessions.test.js.map +1 -0
- package/dist/lib/__tests__/sma.test.d.ts +1 -0
- package/dist/lib/__tests__/sma.test.js +26 -0
- package/dist/lib/__tests__/sma.test.js.map +1 -0
- package/dist/lib/__tests__/thermometer.test.d.ts +1 -0
- package/dist/lib/__tests__/thermometer.test.js +120 -0
- package/dist/lib/__tests__/thermometer.test.js.map +1 -0
- package/dist/lib/__tests__/yield-spread.test.d.ts +1 -0
- package/dist/lib/__tests__/yield-spread.test.js +46 -0
- package/dist/lib/__tests__/yield-spread.test.js.map +1 -0
- package/dist/lib/correlation.d.ts +3 -0
- package/dist/lib/correlation.js +77 -0
- package/dist/lib/correlation.js.map +1 -0
- package/dist/lib/economic-events.d.ts +9 -0
- package/dist/lib/economic-events.js +146 -0
- package/dist/lib/economic-events.js.map +1 -0
- package/dist/lib/fangplus.d.ts +7 -0
- package/dist/lib/fangplus.js +19 -0
- package/dist/lib/fangplus.js.map +1 -0
- package/dist/lib/indicators.d.ts +3 -0
- package/dist/lib/indicators.js +49 -0
- package/dist/lib/indicators.js.map +1 -0
- package/dist/lib/mag7.d.ts +7 -0
- package/dist/lib/mag7.js +13 -0
- package/dist/lib/mag7.js.map +1 -0
- package/dist/lib/market-types.d.ts +57 -0
- package/dist/lib/market-types.js +5 -0
- package/dist/lib/market-types.js.map +1 -0
- package/dist/lib/performance.d.ts +3 -0
- package/dist/lib/performance.js +43 -0
- package/dist/lib/performance.js.map +1 -0
- package/dist/lib/quartile.d.ts +24 -0
- package/dist/lib/quartile.js +128 -0
- package/dist/lib/quartile.js.map +1 -0
- package/dist/lib/rankings.d.ts +7 -0
- package/dist/lib/rankings.js +29 -0
- package/dist/lib/rankings.js.map +1 -0
- package/dist/lib/sectors.d.ts +7 -0
- package/dist/lib/sectors.js +62 -0
- package/dist/lib/sectors.js.map +1 -0
- package/dist/lib/sessions.d.ts +14 -0
- package/dist/lib/sessions.js +50 -0
- package/dist/lib/sessions.js.map +1 -0
- package/dist/lib/sma.d.ts +2 -0
- package/dist/lib/sma.js +33 -0
- package/dist/lib/sma.js.map +1 -0
- package/dist/lib/thermometer.d.ts +13 -0
- package/dist/lib/thermometer.js +118 -0
- package/dist/lib/thermometer.js.map +1 -0
- package/dist/lib/yahoo.d.ts +11 -0
- package/dist/lib/yahoo.js +171 -0
- package/dist/lib/yahoo.js.map +1 -0
- package/dist/lib/yield-spread.d.ts +6 -0
- package/dist/lib/yield-spread.js +20 -0
- package/dist/lib/yield-spread.js.map +1 -0
- package/dist/tools/get-economic-events.d.ts +2 -0
- package/dist/tools/get-economic-events.js +42 -0
- package/dist/tools/get-economic-events.js.map +1 -0
- package/dist/tools/get-market-sessions.d.ts +2 -0
- package/dist/tools/get-market-sessions.js +27 -0
- package/dist/tools/get-market-sessions.js.map +1 -0
- package/dist/tools/get-market-snapshot.d.ts +2 -0
- package/dist/tools/get-market-snapshot.js +29 -0
- package/dist/tools/get-market-snapshot.js.map +1 -0
- package/dist/tools/get-market-thermometer.d.ts +2 -0
- package/dist/tools/get-market-thermometer.js +47 -0
- package/dist/tools/get-market-thermometer.js.map +1 -0
- package/dist/tools/get-performance-ranking.d.ts +2 -0
- package/dist/tools/get-performance-ranking.js +75 -0
- package/dist/tools/get-performance-ranking.js.map +1 -0
- package/dist/tools/get-quote.d.ts +2 -0
- package/dist/tools/get-quote.js +31 -0
- package/dist/tools/get-quote.js.map +1 -0
- package/dist/tools/get-sector-heatmap.d.ts +2 -0
- package/dist/tools/get-sector-heatmap.js +34 -0
- package/dist/tools/get-sector-heatmap.js.map +1 -0
- package/dist/tools/get-yield-spread.d.ts +2 -0
- package/dist/tools/get-yield-spread.js +41 -0
- package/dist/tools/get-yield-spread.js.map +1 -0
- package/dist/tools/index.js +21 -0
- package/dist/tools/index.js.map +1 -1
- package/package.json +10 -3
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { computeYieldSpread } from "../yield-spread.js";
|
|
3
|
+
function q(symbol, price, change = 0) {
|
|
4
|
+
return {
|
|
5
|
+
symbol,
|
|
6
|
+
price,
|
|
7
|
+
previousClose: price - change,
|
|
8
|
+
change,
|
|
9
|
+
changePercent: 0,
|
|
10
|
+
changeBp: change * 100,
|
|
11
|
+
fetchedAt: "",
|
|
12
|
+
sparkline: [],
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
describe("computeYieldSpread", () => {
|
|
16
|
+
it("^TNX - ^FVX を返す", () => {
|
|
17
|
+
const snap = {
|
|
18
|
+
fetchedAt: "",
|
|
19
|
+
quotes: {
|
|
20
|
+
"^TNX": q("^TNX", 4.5, 0.01),
|
|
21
|
+
"^FVX": q("^FVX", 4.2, 0.005),
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
const r = computeYieldSpread(snap);
|
|
25
|
+
expect(r.spread).toBeCloseTo(0.3, 5);
|
|
26
|
+
expect(r.spreadChangeBp).toBeCloseTo(0.5, 2);
|
|
27
|
+
});
|
|
28
|
+
it("片方欠損は null", () => {
|
|
29
|
+
const snap = {
|
|
30
|
+
fetchedAt: "",
|
|
31
|
+
quotes: { "^TNX": q("^TNX", 4.5) },
|
|
32
|
+
};
|
|
33
|
+
expect(computeYieldSpread(snap)).toBeNull();
|
|
34
|
+
});
|
|
35
|
+
it("error は null", () => {
|
|
36
|
+
const snap = {
|
|
37
|
+
fetchedAt: "",
|
|
38
|
+
quotes: {
|
|
39
|
+
"^TNX": q("^TNX", 4.5),
|
|
40
|
+
"^FVX": { error: "fail" },
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
expect(computeYieldSpread(snap)).toBeNull();
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
//# sourceMappingURL=yield-spread.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yield-spread.test.js","sourceRoot":"","sources":["../../../src/lib/__tests__/yield-spread.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxD,SAAS,CAAC,CAAC,MAAc,EAAE,KAAa,EAAE,SAAiB,CAAC;IAC1D,OAAO;QACL,MAAM;QACN,KAAK;QACL,aAAa,EAAE,KAAK,GAAG,MAAM;QAC7B,MAAM;QACN,aAAa,EAAE,CAAC;QAChB,QAAQ,EAAE,MAAM,GAAG,GAAG;QACtB,SAAS,EAAE,EAAE;QACb,SAAS,EAAE,EAAE;KACd,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;QACzB,MAAM,IAAI,GAAa;YACrB,SAAS,EAAE,EAAE;YACb,MAAM,EAAE;gBACN,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;gBAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC;aAC9B;SACF,CAAC;QACF,MAAM,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAE,CAAC;QACpC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;QACpB,MAAM,IAAI,GAAa;YACrB,SAAS,EAAE,EAAE;YACb,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;SACnC,CAAC;QACF,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;QACtB,MAAM,IAAI,GAAa;YACrB,SAAS,EAAE,EAAE;YACb,MAAM,EAAE;gBACN,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC;gBACtB,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;aAC1B;SACF,CAAC;QACF,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare function tailReturns(closes: readonly number[], windowDays?: number): number[];
|
|
2
|
+
export declare function pearson(a: readonly number[], b: readonly number[]): number | null;
|
|
3
|
+
export declare function correlationMatrix(symbols: readonly string[], getCloses: (symbol: string) => readonly number[] | undefined): (number | null)[][];
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// 日次リターン系列のピアソン相関係数を計算する純関数。
|
|
2
|
+
// PERFORMANCE_SYMBOLS(7 銘柄)の closes1y から「直近 30 営業日」のリターンを抽出し、
|
|
3
|
+
// 7×7 の相関行列を作って /today の相関ヒートマップで描画する。
|
|
4
|
+
//
|
|
5
|
+
// データ点不足は null を返し、UI 側で「—」表示にする。
|
|
6
|
+
const WINDOW_DAYS = 30;
|
|
7
|
+
const MIN_RETURNS = 20; // 30 日中 20 営業日以上ないと信頼性が低いので無効
|
|
8
|
+
// closes 配列から「直近 N 営業日のリターン系列」を返す。長さは N - 1。
|
|
9
|
+
// データ不足は空配列。
|
|
10
|
+
export function tailReturns(closes, windowDays = WINDOW_DAYS) {
|
|
11
|
+
const tail = closes.slice(-windowDays - 1);
|
|
12
|
+
if (tail.length < 2)
|
|
13
|
+
return [];
|
|
14
|
+
const out = [];
|
|
15
|
+
for (let i = 1; i < tail.length; i++) {
|
|
16
|
+
const prev = tail[i - 1];
|
|
17
|
+
const curr = tail[i];
|
|
18
|
+
if (prev === 0 || typeof prev !== "number" || typeof curr !== "number")
|
|
19
|
+
continue;
|
|
20
|
+
out.push((curr - prev) / prev);
|
|
21
|
+
}
|
|
22
|
+
return out;
|
|
23
|
+
}
|
|
24
|
+
// ピアソン相関係数。データ点不足や標準偏差ゼロの場合は null。
|
|
25
|
+
export function pearson(a, b) {
|
|
26
|
+
const n = Math.min(a.length, b.length);
|
|
27
|
+
if (n < MIN_RETURNS)
|
|
28
|
+
return null;
|
|
29
|
+
let sumA = 0;
|
|
30
|
+
let sumB = 0;
|
|
31
|
+
for (let i = 0; i < n; i++) {
|
|
32
|
+
sumA += a[i];
|
|
33
|
+
sumB += b[i];
|
|
34
|
+
}
|
|
35
|
+
const meanA = sumA / n;
|
|
36
|
+
const meanB = sumB / n;
|
|
37
|
+
let num = 0;
|
|
38
|
+
let denomA = 0;
|
|
39
|
+
let denomB = 0;
|
|
40
|
+
for (let i = 0; i < n; i++) {
|
|
41
|
+
const da = a[i] - meanA;
|
|
42
|
+
const db = b[i] - meanB;
|
|
43
|
+
num += da * db;
|
|
44
|
+
denomA += da * da;
|
|
45
|
+
denomB += db * db;
|
|
46
|
+
}
|
|
47
|
+
// 浮動小数の蓄積誤差を考慮して、十分小さい場合も std=0 とみなして null。
|
|
48
|
+
if (denomA < 1e-12 || denomB < 1e-12)
|
|
49
|
+
return null;
|
|
50
|
+
const denom = Math.sqrt(denomA * denomB);
|
|
51
|
+
if (denom === 0)
|
|
52
|
+
return null;
|
|
53
|
+
return num / denom;
|
|
54
|
+
}
|
|
55
|
+
// 銘柄リストと closes1y からの取得関数を受け取り、N×N の相関行列を返す。
|
|
56
|
+
// 自身との相関は 1。データ無い銘柄や算出できないペアは null。
|
|
57
|
+
export function correlationMatrix(symbols, getCloses) {
|
|
58
|
+
const returns = symbols.map((s) => {
|
|
59
|
+
const closes = getCloses(s);
|
|
60
|
+
return closes ? tailReturns(closes) : [];
|
|
61
|
+
});
|
|
62
|
+
const n = symbols.length;
|
|
63
|
+
const matrix = [];
|
|
64
|
+
for (let i = 0; i < n; i++) {
|
|
65
|
+
const row = [];
|
|
66
|
+
for (let j = 0; j < n; j++) {
|
|
67
|
+
if (i === j) {
|
|
68
|
+
row.push(returns[i].length >= MIN_RETURNS ? 1 : null);
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
row.push(pearson(returns[i], returns[j]));
|
|
72
|
+
}
|
|
73
|
+
matrix.push(row);
|
|
74
|
+
}
|
|
75
|
+
return matrix;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=correlation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"correlation.js","sourceRoot":"","sources":["../../src/lib/correlation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { EconomicEvent } from "./market-types.js";
|
|
2
|
+
export declare const LAST_UPDATED = "2026-05-01";
|
|
3
|
+
export declare const ECONOMIC_EVENTS: readonly EconomicEvent[];
|
|
4
|
+
export declare function jstDateKey(now?: Date): string;
|
|
5
|
+
export declare function getEventsForDate(date: string, events?: readonly EconomicEvent[]): EconomicEvent[];
|
|
6
|
+
export declare function getEventsForWeek(fromDate: string, events?: readonly EconomicEvent[]): EconomicEvent[];
|
|
7
|
+
export declare function filterByImportance(events: readonly EconomicEvent[], minImportance: 1 | 2 | 3): EconomicEvent[];
|
|
8
|
+
export declare const COUNTRY_LABEL: Record<EconomicEvent["country"], string>;
|
|
9
|
+
export declare const IMPORTANCE_STARS: Record<EconomicEvent["importance"], string>;
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
// 主要経済イベントカレンダー(2026 年 5 月〜10 月)。
|
|
2
|
+
// FOMC・日銀会合・米雇用統計・CPI・GDP・中国 PMI など、相場に影響大きいイベントのみ収録。
|
|
3
|
+
// 第三者 API に依存しない自前データ → AdSense YMYL 配慮 + スクレイピング先 DOM 変更で死なない。
|
|
4
|
+
// 半年に 1 回 PR で追加運用、`scripts/check-events-freshness.mjs` で 90 日前から CI 警告。
|
|
5
|
+
//
|
|
6
|
+
// 重要度: 1=★(参考)/ 2=★★(重要)/ 3=★★★(必読)。
|
|
7
|
+
// 日付は JST、時刻が示す場合は HH:MM JST。終日イベント(FOMC 結果等)は time 省略。
|
|
8
|
+
export const LAST_UPDATED = "2026-05-01";
|
|
9
|
+
export const ECONOMIC_EVENTS = [
|
|
10
|
+
// ============ 2026 年 5 月 ============
|
|
11
|
+
{ date: "2026-05-01", time: "10:30", country: "CN", name: "中国 製造業 PMI(4 月)", importance: 2 },
|
|
12
|
+
{ date: "2026-05-01", time: "23:00", country: "US", name: "米 ISM 製造業 PMI(4 月)", importance: 3 },
|
|
13
|
+
{ date: "2026-05-02", time: "21:30", country: "US", name: "米 雇用統計(4 月)", importance: 3, note: "非農業部門雇用者数・失業率・平均時給" },
|
|
14
|
+
{ date: "2026-05-05", time: "23:00", country: "US", name: "米 ISM 非製造業 PMI(4 月)", importance: 2 },
|
|
15
|
+
{ date: "2026-05-09", time: "08:50", country: "JP", name: "日銀 金融政策決定会合 議事要旨", importance: 2 },
|
|
16
|
+
{ date: "2026-05-13", time: "21:30", country: "US", name: "米 CPI(4 月)", importance: 3, note: "総合・コア前年比" },
|
|
17
|
+
{ date: "2026-05-14", time: "21:30", country: "US", name: "米 PPI(4 月)", importance: 2 },
|
|
18
|
+
{ date: "2026-05-15", time: "21:30", country: "US", name: "米 小売売上高(4 月)", importance: 2 },
|
|
19
|
+
{ date: "2026-05-15", country: "JP", name: "日 GDP 一次速報(1-3 月期)", importance: 3 },
|
|
20
|
+
{ date: "2026-05-22", time: "08:30", country: "JP", name: "日 CPI(4 月)", importance: 2 },
|
|
21
|
+
{ date: "2026-05-29", time: "21:30", country: "US", name: "米 PCE 価格指数(4 月)", importance: 3, note: "FRB が重視するインフレ指標" },
|
|
22
|
+
// ============ 2026 年 6 月 ============
|
|
23
|
+
{ date: "2026-06-01", time: "10:30", country: "CN", name: "中国 製造業 PMI(5 月)", importance: 2 },
|
|
24
|
+
{ date: "2026-06-01", time: "23:00", country: "US", name: "米 ISM 製造業 PMI(5 月)", importance: 3 },
|
|
25
|
+
{ date: "2026-06-03", time: "23:00", country: "US", name: "米 ISM 非製造業 PMI(5 月)", importance: 2 },
|
|
26
|
+
{ date: "2026-06-05", time: "21:30", country: "US", name: "米 雇用統計(5 月)", importance: 3 },
|
|
27
|
+
{ date: "2026-06-10", time: "21:30", country: "US", name: "米 CPI(5 月)", importance: 3 },
|
|
28
|
+
{ date: "2026-06-11", time: "21:30", country: "US", name: "米 PPI(5 月)", importance: 2 },
|
|
29
|
+
{ date: "2026-06-12", country: "JP", name: "日 SQ(先物・オプション特別清算指数)", importance: 1 },
|
|
30
|
+
{ date: "2026-06-15", country: "JP", name: "日銀 金融政策決定会合(1 日目)", importance: 3 },
|
|
31
|
+
{ date: "2026-06-16", country: "JP", name: "日銀 金融政策決定会合(結果発表)", importance: 3, note: "総裁会見あり" },
|
|
32
|
+
{ date: "2026-06-16", country: "US", name: "FOMC(1 日目)", importance: 3 },
|
|
33
|
+
{ date: "2026-06-17", time: "27:00", country: "US", name: "FOMC 結果発表 + 経済予測", importance: 3, note: "ドットチャート更新月" },
|
|
34
|
+
{ date: "2026-06-17", time: "27:30", country: "US", name: "FRB 議長記者会見", importance: 3 },
|
|
35
|
+
{ date: "2026-06-26", time: "21:30", country: "US", name: "米 PCE 価格指数(5 月)", importance: 3 },
|
|
36
|
+
// ============ 2026 年 7 月 ============
|
|
37
|
+
{ date: "2026-07-01", time: "10:30", country: "CN", name: "中国 製造業 PMI(6 月)", importance: 2 },
|
|
38
|
+
{ date: "2026-07-01", time: "23:00", country: "US", name: "米 ISM 製造業 PMI(6 月)", importance: 3 },
|
|
39
|
+
{ date: "2026-07-01", time: "08:50", country: "JP", name: "日銀短観(4-6 月期)", importance: 3, note: "大企業製造業 DI 等" },
|
|
40
|
+
{ date: "2026-07-03", time: "23:00", country: "US", name: "米 ISM 非製造業 PMI(6 月)", importance: 2 },
|
|
41
|
+
{ date: "2026-07-04", country: "US", name: "米 独立記念日(市場休場)", importance: 1 },
|
|
42
|
+
{ date: "2026-07-04", time: "21:30", country: "US", name: "米 雇用統計(6 月)", importance: 3, note: "祝日繰り上げ発表の可能性" },
|
|
43
|
+
{ date: "2026-07-10", country: "JP", name: "日 SQ", importance: 1 },
|
|
44
|
+
{ date: "2026-07-15", time: "21:30", country: "US", name: "米 CPI(6 月)", importance: 3 },
|
|
45
|
+
{ date: "2026-07-15", time: "11:00", country: "CN", name: "中国 GDP(4-6 月期)", importance: 3 },
|
|
46
|
+
{ date: "2026-07-16", time: "21:30", country: "US", name: "米 PPI(6 月)", importance: 2 },
|
|
47
|
+
{ date: "2026-07-17", time: "21:30", country: "US", name: "米 小売売上高(6 月)", importance: 2 },
|
|
48
|
+
{ date: "2026-07-30", country: "JP", name: "日銀 金融政策決定会合(1 日目)", importance: 3 },
|
|
49
|
+
{ date: "2026-07-31", country: "JP", name: "日銀 金融政策決定会合(結果 + 展望レポート)", importance: 3, note: "総裁会見あり" },
|
|
50
|
+
{ date: "2026-07-28", country: "US", name: "FOMC(1 日目)", importance: 3 },
|
|
51
|
+
{ date: "2026-07-29", time: "27:00", country: "US", name: "FOMC 結果発表", importance: 3 },
|
|
52
|
+
{ date: "2026-07-30", time: "21:30", country: "US", name: "米 GDP 速報値(4-6 月期)", importance: 3 },
|
|
53
|
+
{ date: "2026-07-31", time: "21:30", country: "US", name: "米 PCE 価格指数(6 月)", importance: 3 },
|
|
54
|
+
// ============ 2026 年 8 月 ============
|
|
55
|
+
{ date: "2026-08-01", time: "10:30", country: "CN", name: "中国 製造業 PMI(7 月)", importance: 2 },
|
|
56
|
+
{ date: "2026-08-03", time: "23:00", country: "US", name: "米 ISM 製造業 PMI(7 月)", importance: 3 },
|
|
57
|
+
{ date: "2026-08-05", time: "23:00", country: "US", name: "米 ISM 非製造業 PMI(7 月)", importance: 2 },
|
|
58
|
+
{ date: "2026-08-07", time: "21:30", country: "US", name: "米 雇用統計(7 月)", importance: 3 },
|
|
59
|
+
{ date: "2026-08-12", time: "21:30", country: "US", name: "米 CPI(7 月)", importance: 3 },
|
|
60
|
+
{ date: "2026-08-13", time: "21:30", country: "US", name: "米 PPI(7 月)", importance: 2 },
|
|
61
|
+
{ date: "2026-08-14", time: "21:30", country: "US", name: "米 小売売上高(7 月)", importance: 2 },
|
|
62
|
+
{ date: "2026-08-14", country: "JP", name: "日 SQ", importance: 1 },
|
|
63
|
+
{ date: "2026-08-17", time: "08:50", country: "JP", name: "日 GDP 一次速報(4-6 月期)", importance: 3 },
|
|
64
|
+
{ date: "2026-08-21", time: "08:30", country: "JP", name: "日 CPI(7 月)", importance: 2 },
|
|
65
|
+
{ date: "2026-08-27", country: "US", name: "ジャクソンホール会議(〜29)", importance: 3, note: "FRB 議長講演に注目" },
|
|
66
|
+
{ date: "2026-08-28", time: "21:30", country: "US", name: "米 PCE 価格指数(7 月)", importance: 3 },
|
|
67
|
+
// ============ 2026 年 9 月 ============
|
|
68
|
+
{ date: "2026-09-01", time: "10:30", country: "CN", name: "中国 製造業 PMI(8 月)", importance: 2 },
|
|
69
|
+
{ date: "2026-09-01", time: "23:00", country: "US", name: "米 ISM 製造業 PMI(8 月)", importance: 3 },
|
|
70
|
+
{ date: "2026-09-03", time: "23:00", country: "US", name: "米 ISM 非製造業 PMI(8 月)", importance: 2 },
|
|
71
|
+
{ date: "2026-09-04", time: "21:30", country: "US", name: "米 雇用統計(8 月)", importance: 3 },
|
|
72
|
+
{ date: "2026-09-11", time: "21:30", country: "US", name: "米 CPI(8 月)", importance: 3 },
|
|
73
|
+
{ date: "2026-09-11", country: "JP", name: "日 SQ", importance: 1 },
|
|
74
|
+
{ date: "2026-09-15", country: "US", name: "FOMC(1 日目)", importance: 3 },
|
|
75
|
+
{ date: "2026-09-16", time: "27:00", country: "US", name: "FOMC 結果発表 + 経済予測", importance: 3, note: "ドットチャート更新月" },
|
|
76
|
+
{ date: "2026-09-17", country: "JP", name: "日銀 金融政策決定会合(1 日目)", importance: 3 },
|
|
77
|
+
{ date: "2026-09-18", country: "JP", name: "日銀 金融政策決定会合(結果発表)", importance: 3, note: "総裁会見あり" },
|
|
78
|
+
{ date: "2026-09-25", time: "08:30", country: "JP", name: "日 CPI(8 月)", importance: 2 },
|
|
79
|
+
{ date: "2026-09-26", time: "21:30", country: "US", name: "米 PCE 価格指数(8 月)", importance: 3 },
|
|
80
|
+
// ============ 2026 年 10 月 ============
|
|
81
|
+
{ date: "2026-10-01", time: "08:50", country: "JP", name: "日銀短観(7-9 月期)", importance: 3 },
|
|
82
|
+
{ date: "2026-10-01", time: "10:30", country: "CN", name: "中国 製造業 PMI(9 月)", importance: 2 },
|
|
83
|
+
{ date: "2026-10-01", time: "23:00", country: "US", name: "米 ISM 製造業 PMI(9 月)", importance: 3 },
|
|
84
|
+
{ date: "2026-10-02", time: "23:00", country: "US", name: "米 ISM 非製造業 PMI(9 月)", importance: 2 },
|
|
85
|
+
{ date: "2026-10-02", time: "21:30", country: "US", name: "米 雇用統計(9 月)", importance: 3 },
|
|
86
|
+
{ date: "2026-10-09", country: "JP", name: "日 SQ", importance: 1 },
|
|
87
|
+
{ date: "2026-10-13", time: "21:30", country: "US", name: "米 CPI(9 月)", importance: 3 },
|
|
88
|
+
{ date: "2026-10-14", time: "21:30", country: "US", name: "米 PPI(9 月)", importance: 2 },
|
|
89
|
+
{ date: "2026-10-19", time: "11:00", country: "CN", name: "中国 GDP(7-9 月期)", importance: 3 },
|
|
90
|
+
{ date: "2026-10-27", country: "US", name: "FOMC(1 日目)", importance: 3 },
|
|
91
|
+
{ date: "2026-10-28", time: "27:00", country: "US", name: "FOMC 結果発表", importance: 3 },
|
|
92
|
+
{ date: "2026-10-29", country: "JP", name: "日銀 金融政策決定会合(1 日目)", importance: 3 },
|
|
93
|
+
{ date: "2026-10-30", country: "JP", name: "日銀 金融政策決定会合(結果 + 展望レポート)", importance: 3, note: "総裁会見あり" },
|
|
94
|
+
{ date: "2026-10-30", time: "21:30", country: "US", name: "米 GDP 速報値(7-9 月期)", importance: 3 },
|
|
95
|
+
{ date: "2026-10-30", time: "21:30", country: "US", name: "米 PCE 価格指数(9 月)", importance: 3 },
|
|
96
|
+
];
|
|
97
|
+
// JST の年月日を yyyy-mm-dd 形式で返す(leaderboard/keys.ts と同一ロジック)。
|
|
98
|
+
export function jstDateKey(now = new Date()) {
|
|
99
|
+
const jstMs = now.getTime() + 9 * 3600 * 1000;
|
|
100
|
+
const d = new Date(jstMs);
|
|
101
|
+
const y = d.getUTCFullYear();
|
|
102
|
+
const m = String(d.getUTCMonth() + 1).padStart(2, "0");
|
|
103
|
+
const day = String(d.getUTCDate()).padStart(2, "0");
|
|
104
|
+
return `${y}-${m}-${day}`;
|
|
105
|
+
}
|
|
106
|
+
// JST 当日のイベントを返す(重要度降順)。
|
|
107
|
+
export function getEventsForDate(date, events = ECONOMIC_EVENTS) {
|
|
108
|
+
return events
|
|
109
|
+
.filter((e) => e.date === date)
|
|
110
|
+
.sort((a, b) => b.importance - a.importance ||
|
|
111
|
+
(a.time ?? "00:00").localeCompare(b.time ?? "00:00"));
|
|
112
|
+
}
|
|
113
|
+
// 当日を含む 7 日間(今日〜+6 日)のイベントを返す。
|
|
114
|
+
export function getEventsForWeek(fromDate, events = ECONOMIC_EVENTS) {
|
|
115
|
+
const start = new Date(fromDate + "T00:00:00+09:00");
|
|
116
|
+
const dates = [];
|
|
117
|
+
for (let i = 0; i < 7; i++) {
|
|
118
|
+
const d = new Date(start);
|
|
119
|
+
d.setDate(d.getDate() + i);
|
|
120
|
+
dates.push(jstDateKey(d));
|
|
121
|
+
}
|
|
122
|
+
const set = new Set(dates);
|
|
123
|
+
return events
|
|
124
|
+
.filter((e) => set.has(e.date))
|
|
125
|
+
.sort((a, b) => a.date.localeCompare(b.date) ||
|
|
126
|
+
b.importance - a.importance ||
|
|
127
|
+
(a.time ?? "00:00").localeCompare(b.time ?? "00:00"));
|
|
128
|
+
}
|
|
129
|
+
// 重要度フィルタ(最低重要度)。例: minImportance=2 で ★★ 以上のみ。
|
|
130
|
+
export function filterByImportance(events, minImportance) {
|
|
131
|
+
return events.filter((e) => e.importance >= minImportance);
|
|
132
|
+
}
|
|
133
|
+
export const COUNTRY_LABEL = {
|
|
134
|
+
JP: "🇯🇵 日本",
|
|
135
|
+
US: "🇺🇸 米国",
|
|
136
|
+
CN: "🇨🇳 中国",
|
|
137
|
+
EU: "🇪🇺 欧州",
|
|
138
|
+
GB: "🇬🇧 英国",
|
|
139
|
+
OTHER: "🌏 その他",
|
|
140
|
+
};
|
|
141
|
+
export const IMPORTANCE_STARS = {
|
|
142
|
+
1: "★",
|
|
143
|
+
2: "★★",
|
|
144
|
+
3: "★★★",
|
|
145
|
+
};
|
|
146
|
+
//# sourceMappingURL=economic-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"economic-events.js","sourceRoot":"","sources":["../../src/lib/economic-events.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// NYSE FANG+ 指数の構成銘柄(10 社・等加重)。
|
|
2
|
+
// 指数は四半期ごとに rebalance され rotational members が入れ替わるため、
|
|
3
|
+
// 表示は「2026 年時点の代表的 10 銘柄」を運用上の固定リストとして扱う。
|
|
4
|
+
// Mag7 と 7 銘柄が重複するが、FANG+ 独自の 3 銘柄(NFLX / AVGO / CRWD)も含めて
|
|
5
|
+
// FANG+ 指数(^NYFANG)を実際に動かしている個別株を一覧で見られるようにする。
|
|
6
|
+
export const FANGPLUS_STOCKS = [
|
|
7
|
+
{ symbol: "META", name: "Meta", description: "FANG+ オリジナル構成銘柄、SNS・広告" },
|
|
8
|
+
{ symbol: "AAPL", name: "Apple", description: "FANG+ オリジナル構成銘柄、ハードウェア・サービス" },
|
|
9
|
+
{ symbol: "AMZN", name: "Amazon", description: "FANG+ オリジナル構成銘柄、EC・AWS" },
|
|
10
|
+
{ symbol: "NFLX", name: "Netflix", description: "FANG+ オリジナル構成銘柄、ストリーミング" },
|
|
11
|
+
{ symbol: "GOOGL", name: "Alphabet", description: "FANG+ オリジナル構成銘柄、検索・広告・Cloud" },
|
|
12
|
+
{ symbol: "MSFT", name: "Microsoft", description: "Azure・Office・OpenAI 出資" },
|
|
13
|
+
{ symbol: "NVDA", name: "Nvidia", description: "AI 向け GPU の中心企業" },
|
|
14
|
+
{ symbol: "TSLA", name: "Tesla", description: "EV・エネルギー貯蔵" },
|
|
15
|
+
{ symbol: "AVGO", name: "Broadcom", description: "半導体・AI ASIC・VMware" },
|
|
16
|
+
{ symbol: "CRWD", name: "CrowdStrike", description: "クラウドネイティブ・セキュリティ" },
|
|
17
|
+
];
|
|
18
|
+
export const FANGPLUS_SYMBOLS = FANGPLUS_STOCKS.map((s) => s.symbol);
|
|
19
|
+
//# sourceMappingURL=fangplus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fangplus.js","sourceRoot":"","sources":["../../src/lib/fangplus.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,sDAAsD;AACtD,0CAA0C;AAC1C,2DAA2D;AAC3D,+CAA+C;AAQ/C,MAAM,CAAC,MAAM,eAAe,GAA6B;IACvD,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,wBAAwB,EAAE;IACvE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,6BAA6B,EAAE;IAC7E,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE;IACzE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,yBAAyB,EAAE;IAC3E,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,6BAA6B,EAAE;IACjF,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,wBAAwB,EAAE;IAC5E,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE;IAClE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE;IAC5D,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,oBAAoB,EAAE;IACvE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,kBAAkB,EAAE;CACzE,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAsB,eAAe,CAAC,GAAG,CACpE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAChB,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// MCP server で扱うマクロ指標 28 銘柄。
|
|
2
|
+
// Web 側 (lit-forge/app/lib/market/indicators.ts) と同期管理。
|
|
3
|
+
// v0.4 で 9 → 28 銘柄に拡張(Web の v1.50 → v1.59 の拡張に追従)。
|
|
4
|
+
export const INDICATORS = [
|
|
5
|
+
// ====== 為替 ======
|
|
6
|
+
{ symbol: "JPY=X", displayName: "USD/JPY", category: "fx", unit: "円", decimals: 2, changeStyle: "ratio" },
|
|
7
|
+
{ symbol: "EURJPY=X", displayName: "EUR/JPY", category: "fx", unit: "円", decimals: 2, changeStyle: "ratio" },
|
|
8
|
+
{ symbol: "GBPJPY=X", displayName: "GBP/JPY", category: "fx", unit: "円", decimals: 2, changeStyle: "ratio" },
|
|
9
|
+
{ symbol: "AUDJPY=X", displayName: "AUD/JPY", category: "fx", unit: "円", decimals: 2, changeStyle: "ratio" },
|
|
10
|
+
{ symbol: "EURUSD=X", displayName: "EUR/USD", category: "fx", unit: "", decimals: 4, changeStyle: "ratio" },
|
|
11
|
+
{ symbol: "CHFJPY=X", displayName: "CHF/JPY", category: "fx", unit: "円", decimals: 2, changeStyle: "ratio" },
|
|
12
|
+
{ symbol: "DX-Y.NYB", fallback: "DX=F", displayName: "ドル指数 (DXY)", category: "fx", unit: "", decimals: 2, changeStyle: "ratio" },
|
|
13
|
+
// ====== 株式(日本) ======
|
|
14
|
+
{ symbol: "^N225", displayName: "日経平均", category: "equity", unit: "", decimals: 2, changeStyle: "ratio" },
|
|
15
|
+
{ symbol: "^TPX", fallback: "1305.T", displayName: "TOPIX", category: "equity", unit: "", decimals: 2, changeStyle: "ratio" },
|
|
16
|
+
// ====== 株式(米) ======
|
|
17
|
+
{ symbol: "^DJI", displayName: "NY ダウ", category: "equity", unit: "", decimals: 2, changeStyle: "ratio" },
|
|
18
|
+
{ symbol: "^GSPC", displayName: "S&P 500", category: "equity", unit: "", decimals: 2, changeStyle: "ratio" },
|
|
19
|
+
{ symbol: "^NDX", displayName: "NASDAQ 100", category: "equity", unit: "", decimals: 2, changeStyle: "ratio" },
|
|
20
|
+
{ symbol: "^VIX", displayName: "VIX (恐怖指数)", category: "equity", unit: "", decimals: 2, changeStyle: "ratio" },
|
|
21
|
+
{ symbol: "^NYFANG", displayName: "NYSE FANG+", category: "equity", unit: "", decimals: 2, changeStyle: "ratio" },
|
|
22
|
+
{ symbol: "^SOX", displayName: "フィラデルフィア半導体 (SOX)", category: "equity", unit: "", decimals: 2, changeStyle: "ratio" },
|
|
23
|
+
// ====== 株式(欧州) ======
|
|
24
|
+
{ symbol: "^GDAXI", displayName: "DAX", category: "equity", unit: "", decimals: 2, changeStyle: "ratio" },
|
|
25
|
+
{ symbol: "^FTSE", displayName: "FTSE 100", category: "equity", unit: "", decimals: 2, changeStyle: "ratio" },
|
|
26
|
+
// ====== 株式(アジア) ======
|
|
27
|
+
{ symbol: "000001.SS", displayName: "上海総合", category: "equity", unit: "", decimals: 2, changeStyle: "ratio" },
|
|
28
|
+
{ symbol: "^HSI", displayName: "ハンセン", category: "equity", unit: "", decimals: 2, changeStyle: "ratio" },
|
|
29
|
+
{ symbol: "^KS11", displayName: "KOSPI", category: "equity", unit: "", decimals: 2, changeStyle: "ratio" },
|
|
30
|
+
{ symbol: "^BSESN", displayName: "SENSEX", category: "equity", unit: "", decimals: 2, changeStyle: "ratio" },
|
|
31
|
+
// ====== 金利 ======
|
|
32
|
+
{ symbol: "^TNX", displayName: "米10年債利回り", category: "bond", unit: "%", decimals: 3, changeStyle: "bp" },
|
|
33
|
+
{ symbol: "^FVX", displayName: "米5年債利回り", category: "bond", unit: "%", decimals: 3, changeStyle: "bp" },
|
|
34
|
+
// ====== コモディティ ======
|
|
35
|
+
{ symbol: "GC=F", displayName: "金(先物)", category: "commodity", unit: "USD/oz", decimals: 2, changeStyle: "ratio" },
|
|
36
|
+
{ symbol: "CL=F", displayName: "原油 WTI", category: "commodity", unit: "USD/bbl", decimals: 2, changeStyle: "ratio" },
|
|
37
|
+
{ symbol: "HG=F", displayName: "銅(先物)", category: "commodity", unit: "USD/lb", decimals: 3, changeStyle: "ratio" },
|
|
38
|
+
// ====== 暗号資産 ======
|
|
39
|
+
{ symbol: "BTC-USD", displayName: "ビットコイン", category: "crypto", unit: "USD", decimals: 0, changeStyle: "ratio" },
|
|
40
|
+
{ symbol: "ETH-USD", displayName: "イーサリアム", category: "crypto", unit: "USD", decimals: 0, changeStyle: "ratio" },
|
|
41
|
+
];
|
|
42
|
+
export const CATEGORY_LABEL = {
|
|
43
|
+
fx: "為替",
|
|
44
|
+
equity: "株式",
|
|
45
|
+
bond: "金利",
|
|
46
|
+
commodity: "コモディティ",
|
|
47
|
+
crypto: "暗号資産",
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=indicators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indicators.js","sourceRoot":"","sources":["../../src/lib/indicators.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/mag7.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// マグニフィセント 7:米株を牽引する大型テック 7 銘柄。
|
|
2
|
+
// 米株セクター ETF と並列に「個別株の強弱」セクションとして /today に表示する。
|
|
3
|
+
export const MAG7_STOCKS = [
|
|
4
|
+
{ symbol: "AAPL", name: "Apple", description: "iPhone・サービス事業" },
|
|
5
|
+
{ symbol: "MSFT", name: "Microsoft", description: "Azure・Office・OpenAI 出資" },
|
|
6
|
+
{ symbol: "GOOGL", name: "Alphabet", description: "検索・広告・YouTube・Cloud" },
|
|
7
|
+
{ symbol: "AMZN", name: "Amazon", description: "EC・AWS(クラウド最大手)" },
|
|
8
|
+
{ symbol: "META", name: "Meta", description: "Instagram・Facebook・WhatsApp" },
|
|
9
|
+
{ symbol: "NVDA", name: "Nvidia", description: "AI 向け GPU の中心企業" },
|
|
10
|
+
{ symbol: "TSLA", name: "Tesla", description: "EV・エネルギー貯蔵" },
|
|
11
|
+
];
|
|
12
|
+
export const MAG7_SYMBOLS = MAG7_STOCKS.map((s) => s.symbol);
|
|
13
|
+
//# sourceMappingURL=mag7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mag7.js","sourceRoot":"","sources":["../../src/lib/mag7.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,gDAAgD;AAShD,MAAM,CAAC,MAAM,WAAW,GAAyB;IAC/C,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE;IAC/D,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,wBAAwB,EAAE;IAC5E,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,qBAAqB,EAAE;IACzE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE;IAClE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,6BAA6B,EAAE;IAC5E,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE;IAClE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE;CAC7D,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAsB,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export type IndicatorCategory = "fx" | "equity" | "bond" | "commodity" | "crypto";
|
|
2
|
+
export type ChangeStyle = "ratio" | "bp";
|
|
3
|
+
export type Indicator = {
|
|
4
|
+
symbol: string;
|
|
5
|
+
fallback?: string;
|
|
6
|
+
displayName: string;
|
|
7
|
+
category: IndicatorCategory;
|
|
8
|
+
unit: string;
|
|
9
|
+
decimals: number;
|
|
10
|
+
changeStyle: ChangeStyle;
|
|
11
|
+
};
|
|
12
|
+
export type PerformanceWindow = {
|
|
13
|
+
d7: number | null;
|
|
14
|
+
d30: number | null;
|
|
15
|
+
d365: number | null;
|
|
16
|
+
};
|
|
17
|
+
export type Quote = {
|
|
18
|
+
symbol: string;
|
|
19
|
+
displayName?: string;
|
|
20
|
+
category?: IndicatorCategory;
|
|
21
|
+
unit?: string;
|
|
22
|
+
price: number;
|
|
23
|
+
previousClose: number;
|
|
24
|
+
change: number;
|
|
25
|
+
changePercent: number;
|
|
26
|
+
changeBp: number;
|
|
27
|
+
fetchedAt: string;
|
|
28
|
+
sparkline: number[];
|
|
29
|
+
fiftyTwoWeekHigh?: number;
|
|
30
|
+
fiftyTwoWeekLow?: number;
|
|
31
|
+
dayHigh?: number;
|
|
32
|
+
dayLow?: number;
|
|
33
|
+
volume?: number;
|
|
34
|
+
performance?: PerformanceWindow;
|
|
35
|
+
closes1y?: number[];
|
|
36
|
+
isStale?: boolean;
|
|
37
|
+
};
|
|
38
|
+
export type QuoteResult = Quote | {
|
|
39
|
+
error: string;
|
|
40
|
+
};
|
|
41
|
+
export type Snapshot = {
|
|
42
|
+
fetchedAt: string;
|
|
43
|
+
quotes: Record<string, QuoteResult>;
|
|
44
|
+
};
|
|
45
|
+
export type EventImportance = 1 | 2 | 3;
|
|
46
|
+
export type Country = "JP" | "US" | "CN" | "EU" | "GB" | "OTHER";
|
|
47
|
+
export type EconomicEvent = {
|
|
48
|
+
date: string;
|
|
49
|
+
time?: string;
|
|
50
|
+
country: Country;
|
|
51
|
+
name: string;
|
|
52
|
+
importance: EventImportance;
|
|
53
|
+
note?: string;
|
|
54
|
+
forecast?: string;
|
|
55
|
+
actual?: string;
|
|
56
|
+
previous?: string;
|
|
57
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"market-types.js","sourceRoot":"","sources":["../../src/lib/market-types.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,uDAAuD;AACvD,0EAA0E"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// 期間別パフォーマンス計算(純関数)。
|
|
2
|
+
// 日足 close 配列のインデックス基準で「直近 5 営業日 / 約 1 ヶ月(21 営業日)/ 約 1 年(252 営業日)」
|
|
3
|
+
// に対する % 変化率を返す。データ点が足りない場合は null。
|
|
4
|
+
//
|
|
5
|
+
// 暦日ベースだと休場日を巡って境界がぶれる(金曜の close が「1 週間前」なのか「5 営業日前」なのか)ため、
|
|
6
|
+
// 「Yahoo の日足配列から N 件遡る」という素朴な定義で運用する。文言は「1w / 1m / 1y」と短縮表示し、
|
|
7
|
+
// 厳密には「直近 5 / 21 / 252 営業日」だがユーザー視点での体感で十分という割り切り。
|
|
8
|
+
const D7_INDEX = 5; // 直近 5 営業日前
|
|
9
|
+
const D30_INDEX = 21; // 約 1 ヶ月前
|
|
10
|
+
const D365_INDEX = 252; // 約 1 年前
|
|
11
|
+
// 単一の遡及インデックスに対する変化率(%)。データ不足は null。
|
|
12
|
+
function changePercent(closes, backIndex) {
|
|
13
|
+
if (closes.length <= backIndex)
|
|
14
|
+
return null;
|
|
15
|
+
const today = closes[closes.length - 1];
|
|
16
|
+
const past = closes[closes.length - 1 - backIndex];
|
|
17
|
+
if (typeof today !== "number" || typeof past !== "number")
|
|
18
|
+
return null;
|
|
19
|
+
if (past === 0)
|
|
20
|
+
return null;
|
|
21
|
+
return ((today - past) / past) * 100;
|
|
22
|
+
}
|
|
23
|
+
// 日足 close 配列から d7 / d30 / d365 を一括計算。
|
|
24
|
+
export function computePerformance(closes) {
|
|
25
|
+
return {
|
|
26
|
+
d7: changePercent(closes, D7_INDEX),
|
|
27
|
+
d30: changePercent(closes, D30_INDEX),
|
|
28
|
+
d365: changePercent(closes, D365_INDEX),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
// /today で期間別パフォーマンス + 1y 期間タブ + 分位値表示を有効化する銘柄。
|
|
32
|
+
// Yahoo の追加 fetch(1y 日足)はこの銘柄のみで実施。ISR 24h + Redis 7d でキャッシュ。
|
|
33
|
+
// v1.54 で 3 → 7 に拡張:マクロ俯瞰の主要グループを網羅。
|
|
34
|
+
export const PERFORMANCE_SYMBOLS = [
|
|
35
|
+
"JPY=X", // USD/JPY
|
|
36
|
+
"^GSPC", // S&P 500
|
|
37
|
+
"^NDX", // NASDAQ 100
|
|
38
|
+
"^DJI", // NY ダウ
|
|
39
|
+
"^TNX", // 米10年債利回り
|
|
40
|
+
"^VIX", // VIX
|
|
41
|
+
"DX-Y.NYB", // ドル指数
|
|
42
|
+
];
|
|
43
|
+
//# sourceMappingURL=performance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"performance.js","sourceRoot":"","sources":["../../src/lib/performance.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,mEAAmE;AACnE,mCAAmC;AACnC,EAAE;AACF,4DAA4D;AAC5D,8DAA8D;AAC9D,mDAAmD;AAInD,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,YAAY;AAChC,MAAM,SAAS,GAAG,EAAE,CAAC,CAAC,UAAU;AAChC,MAAM,UAAU,GAAG,GAAG,CAAC,CAAC,SAAS;AAEjC,qCAAqC;AACrC,SAAS,aAAa,CACpB,MAAyB,EACzB,SAAiB;IAEjB,IAAI,MAAM,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;IACnD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACvE,IAAI,IAAI,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5B,OAAO,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACvC,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,kBAAkB,CAChC,MAAyB;IAEzB,OAAO;QACL,EAAE,EAAE,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC;QACnC,GAAG,EAAE,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC;QACrC,IAAI,EAAE,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC;KACxC,CAAC;AACJ,CAAC;AAED,gDAAgD;AAChD,8DAA8D;AAC9D,qCAAqC;AACrC,MAAM,CAAC,MAAM,mBAAmB,GAAsB;IACpD,OAAO,EAAE,UAAU;IACnB,OAAO,EAAE,UAAU;IACnB,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,MAAM;IACd,UAAU,EAAE,OAAO;CACpB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export declare function pricePercentile(closes: readonly number[]): number | null;
|
|
2
|
+
export type OutlierResult = {
|
|
3
|
+
sigma: number;
|
|
4
|
+
exceeds1Sigma: boolean;
|
|
5
|
+
};
|
|
6
|
+
export declare function detectOutlier(closes: readonly number[], todayChangePercent: number): OutlierResult | null;
|
|
7
|
+
export type LevelEvent = {
|
|
8
|
+
type: "52w-new-high" | "52w-new-low" | "ma200-cross-up" | "ma200-cross-down";
|
|
9
|
+
label: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function detectLevelEvents(input: {
|
|
12
|
+
closes1y?: readonly number[];
|
|
13
|
+
dayHigh?: number;
|
|
14
|
+
dayLow?: number;
|
|
15
|
+
fiftyTwoWeekHigh?: number;
|
|
16
|
+
fiftyTwoWeekLow?: number;
|
|
17
|
+
}): LevelEvent[];
|
|
18
|
+
export type MilestoneEvent = {
|
|
19
|
+
type: "n-day-high" | "n-day-low";
|
|
20
|
+
days: number;
|
|
21
|
+
label: string;
|
|
22
|
+
};
|
|
23
|
+
export declare function detectMilestone(closes: readonly number[]): MilestoneEvent | null;
|
|
24
|
+
export declare function percentileLabel(percentile: number | null): string;
|