Poshkan Paper Trading について
Poshkan Paper Tradingは、米国株、ETF、暗号資産、外国為替の取引練習向けシミュレーションアプリです。市場調査やポートフォリオ追跡、独自戦略のバックテスト、任意のAIツールを備えています。
主な機能
- 014市場のシミュレーション口座
- 02レバレッジ対応の成行・指値注文
- 03企業調査、チャート、ニュース
- 04ポートフォリオの成績とランキング
- 05独自戦略のバックテストとアラート
- 06任意のAIスキャンと分析
活用シーン
- 01実資金を使わず取引を練習
- 02ペーパー注文前の市場調査
- 03過去のローソク足で独自ルールを検証
- 04ポートフォリオの収益とドローダウンを確認
MCP 対応
個人トークンにより、対応するMCPクライアントは口座と市場データの参照、現物取引、外国為替ポジションや未約定注文の管理を行えます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://www.poshkan.com/api/mcp/mcpclaude mcp add --transport http poshkan-v2 https://www.poshkan.com/api/mcp/mcp{"mcpServers":{"poshkan-v2":{"type":"http","url":"https://www.poshkan.com/api/mcp/mcp"}}}Cursor で開く{"servers":{"poshkan-v2":{"type":"http","url":"https://www.poshkan.com/api/mcp/mcp"}}}VS Code で開く{"mcpServers":{"poshkan-v2":{"type":"http","url":"https://www.poshkan.com/api/mcp/mcp"}}}{"mcpServers":{"poshkan-v2":{"serverUrl":"https://www.poshkan.com/api/mcp/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://www.poshkan.com/api/mcp/mcp認証が必要ツール
詳細
Poshkan — ペーパートレーディング
仮想資金を使って、米国株、ETF、暗号資産、外国為替の取引を練習できます。Poshkan は、ペーパーアカウント、各取引に付随するリサーチ、パフォーマンス追跡機能に加え、独自の取引ルールを作成・テストできる Strategy Lab を備えています。
残高、取引、リターンはすべてシミュレーションです。アプリは市場データを使用してペーパートレードの価格を算出します。
ライブアプリ:www.poshkan.com。
機能
- 市場ごとのアカウント — 独立したポートフォリオ、設定可能な仮想初期資金、ウォッチリスト、現金の調整機能を利用できます。
- 初心者向けオンボーディング — ペーパーアカウントを作成し、企業を調査して、ペーパートレードを行い、履歴で判断を振り返ることができます。アカウントと取引の完了状況は自動で記録されます。調査と振り返りはユーザー自身が完了を確認する方式で、進捗は現在のブラウザー内でユーザーごとに保存されます。Strategy Lab はダッシュボードのナビゲーションにある Advanced の下にあります。
- 現物取引とレバレッジ取引 — 株式/暗号資産の成行注文と指値注文に加え、3つすべての市場で、取引ごとにレバレッジを設定できるロング/ショートポジションと、損切り/利確に対応しています。外国為替では、主要7通貨ペア、エントリーの予約注文、段階的な決済、時間指定の自動決済に対応しています。予約注文では、DAY/GTC の有効期間を指定できます。
- 購入前のリサーチ — 企業のファンダメンタルズ、過去の価格動向、チャート、ニュース、銘柄検索、暗号資産のマーケットマップを利用できます。公開リサーチページ、市場スキャン、取引の解説、計算ツールは、アカウントなしで利用できます。
- パフォーマンスとランキング — 実現/未実現損益、資産配分、アカウント評価額の推移、取引履歴、活動状況とドローダウンの統計を含む、リターン率によるアカウントランキングを確認できます。
- Strategy Lab — エントリールールを組み合わせ、銘柄と時間軸を選択し、損切り/利確目標と保有制限を設定して、取引コストの推定値を含めた完了済みローソク足でバックテストできます。バックテスト済みの戦略は、ペーパー取引のライブアラートを実行できます。カスタム戦略は現在、取引を発注しません。
- オプションの AI ツール — カスタム指示を使える AI Scanner、アカウントのリスク制限内での任意のペーパートレード自動実行、ポジション分析を利用できます。これらの機能では、各ユーザー自身の Anthropic API キーを使用します。キーは保存前に暗号化されます。
- 通知とモバイルアクセス — アプリ内通知、Web Push、メールアラート、週間ダイジェストのエンドポイントに加え、ライト/ダークテーマに対応したインストール可能な PWA を利用できます。
- Claude/MCP アクセス — 個人用トークンを使って、互換性のある MCP クライアントからアカウントと市場データを確認し、現物取引を発注し、外国為替のポジションと予約注文を管理できます。
以前の SMC、OTE、トレンド、平均回帰、ローソク足レンジの各スキャナー切り替え機能は廃止されました。それらの戦略解説は引き続き教育コンテンツとして利用できます。現在のツールは、ユーザー作成の戦略と AI Scanner です。
スタックとアーキテクチャ
| 領域 | 実装 |
|---|---|
| アプリ | Next.js 16 App Router、React 19、TypeScript |
| UI | Tailwind CSS v4、Lucide アイコン、カスタム SVG/ローソク足チャート、TradingView ウィジェット |
| 認証とデータベース | Supabase Auth、Postgres、Row-Level Security、取引実行用 SQL RPC |
| クライアントデータ | 相場情報のポーリングとキャッシュ管理に TanStack Query |
| マーケットデータ | yahoo-finance2 経由の Yahoo Finance、任意で Twelve Data と連携 |
| AI | ユーザー提供キーを暗号化して使用する Anthropic SDK |
| 連携 | MCP サーバー、Resend メール、Web Push/VAPID |
| ホスティング | Vercel、スケジュールジョブ、外部の高頻度 cron ピンガー |
相場情報は Yahoo を優先します。 バッチリクエストで複数のシンボルを解決し、Twelve Data が設定されている場合は、取得できなかった相場情報を補完します。相場情報はメモリ内と共有の market_quotes テーブルにキャッシュされます。ローソク足データは、Twelve Data が設定されている場合は Twelve Data を優先し、取得できない場合は Yahoo にフォールバックします。 Yahoo は銘柄の検索とニュースにも使用されます。マーケットデータキーがなくても、Yahoo のみでアプリを実行できます。過去データの範囲と相場情報の鮮度は、プロバイダーと利用可能なキャッシュによって異なります。
取引アクションでは、サーバー上で価格を取得します。Postgres RPC は残高を検証し、取引状態をアトミックに更新します。指値注文の実行では status = 'pending' の状態を取得します。レバレッジポジションエンジンは、データベース上の名前が fx_* であるにもかかわらず、株式、暗号資産、外国為替で共通して使用されます。
ローカルでのセットアップ
1. 依存関係をインストールする
Node.js 20.9 以降、npm、Supabase プロジェクトを使用します。
git clone https://github.com/afrazja/poshkan-v2.git
cd poshkan-v2
npm ci
2. 環境を設定する
.env.local.example を .env.local にコピーし、プレースホルダーを置き換えます。
PowerShell の場合:
Copy-Item .env.local.example .env.local
| 変数 | 用途 |
|---|---|
NEXT_PUBLIC_SUPABASE_URL | 必須の Supabase プロジェクト URL です。 |
NEXT_PUBLIC_SUPABASE_ANON_KEY | 必須の公開 Supabase クライアントキーです。データベースアクセスは RLS によって制限されます。 |
NEXT_PUBLIC_SITE_URL | メール確認とパスワード再設定に使用するアプリのオリジンです。ローカルでは http://localhost:3000 を使用します。 |
SUPABASE_SERVICE_ROLE_KEY | ユーザー名ログイン、cron ジョブ、MCP 認証、共有キャッシュ、通知に使用するサーバー側の管理者アクセスキーです。アプリの全機能を利用するには設定してください。 |
CRON_SECRET | スケジュールジョブの認証と、ダイジェストの配信停止リンクへの署名に使用するシークレットです。 |
任意の設定は .env.local に追加できます。サンプルファイルには基本的な設定のみが含まれています。
| 変数 | 有効になる機能/動作 |
|---|---|
TWELVE_DATA_API_KEY | 任意のローソク足データプロバイダーと相場情報のフォールバックです。Yahoo のみを使用する場合は空欄にします。 |
TWELVE_DATA_CREDITS_PER_MINUTE | ローカル環境の Twelve Data リクエスト予算です。既定値は 8 です。プロバイダーの利用枠に合わせてください。 |
ENCRYPTION_KEY | ユーザー提供の Anthropic キーの保存/使用に必要です。ランダムな 32 バイトを base64 でエンコードした値を指定します。 |
RESEND_API_KEY | アプリのメール配信に使用します。 |
EMAIL_FROM | アプリのメール送信者情報です。Resend アカウントで許可されている送信者を設定してください。 |
CONTACT_EMAIL | 公開お問い合わせフォームの送信先です。 |
NEXT_PUBLIC_VAPID_PUBLIC_KEY | 公開 Web Push キーです。 |
VAPID_PRIVATE_KEY | 対応するサーバー側 Web Push 秘密鍵です。 |
ADMIN_EMAILS | 管理者の許可リストをカンマ区切りで指定します。メールが設定されている場合、最初のアドレスにサインアップ通知が届きます。 |
AUTO_TRADE_ENABLED | false に設定すると、AI Scanner の自動取引を全体で無効にします。ユーザーが作成した戦略はアラートのみを生成します。 |
次のコマンドで、ローカルに暗号化キーを生成できます。
node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"
.env.local は非公開にしてください。ブラウザーでの使用を意図した変数にのみ NEXT_PUBLIC_ を付けます。service-role、cron、暗号化、プロバイダー、プッシュ通知の秘密鍵はサーバー側に保管する必要があります。
AI 機能では、アプリ内でユーザーが保存したキーを使用します。運営者が共有する Anthropic キーへのフォールバックはありません。
現在、AI Scanner の使用にはユーザーのプッシュ通知登録も必要です。
3. データベーススクリプトを適用する
SQL は supabase/ にあり、Supabase SQL エディターから手動で適用します。
npm run dev または npm run build による自動マイグレーションはありません。
新しいデータベースの場合は、次の基本シーケンスを順番に適用します(各名前は .sql ファイルです)。
schema → orders → upgrades → forex → forex-sltp → orders-tif
→ leaderboard → hardening → mcp → push-journal → ai-limits
→ login-stats → market-quotes → leaderboard-stats
続いて、以下の順序で残りのスクリプトを適用します。各行では左から右の順に適用してください。
| 順序 | supabase/ 内のファイル | 追加される内容 |
|---|---|---|
| 1 | username-login.sql → google-auth.sql | ユーザー名ログインとソーシャル認証プロフィールのサポート。 |
| 2 | market-data-cache.sql | 共有ローソク足キャッシュと履歴同期メタデータ。 |
| 3 | fx-leverage.sql → forex-pairs.sql → forex-timed-close.sql → forex-tp-levels.sql → fx-position-source.sql | 口座レバレッジ、通貨換算、時間指定/段階的な決済、ポジション起源の追跡。 |
| 4 | forex-scan-alerts.sql → forex-scan-auto.sql → forex-auto-settings.sql → forex-ai-instruction.sql → ai-scanner-symbols.sql → byok-anthropic-key.sql | AI Scanner の履歴、リスク設定、指示、銘柄、暗号化キー。 |
| 5 | smc-scanner.sql → ote-scanner.sql → trend-scanner.sql → meanrev-scanner.sql → candlerange-scanner.sql | 後続のスキーマスクリプトから引き続き参照されるレガシーテーブル。 |
| 6 | scanner-auto-close.sql → scanner-position-cap.sql → per-trade-leverage.sql | 保有制限、ポジション上限、取引ごとのレバレッジ。 |
| 7 | custom-strategies.sql | 現在の Strategy Lab の設定、バックテスト、シグナル。 |
| 8 | notifications.sql → account-notify.sql → scans.sql | 通知センター、アカウント通知設定、公開デイリースキャン。 |
| 9 | mcp-crypto-risk.sql | ガード付き MCP 暗号資産エントリー:1~2×のレバレッジ、ストップ/ターゲット/期限のアトミック設定、ポジションおよびリスク上限、暗号資産の小数単位。 |
| 10 | crypto-cloud-monitor.sql | 永続的なクラウドスキャンの取得とアトミックな取引レシート。mcp-crypto-risk.sql が必要です。 |
レガシーのスキャナーテーブルが含まれているのは、scanner-position-cap.sql と
per-trade-leverage.sql がそれらを変更し、さらに現在の機能で使用されるフィールドを追加するためです。レガシーテーブルがない状態でこれらのスクリプトを適用すると、失敗する場合があります。既存のデータベースでは、未適用のスクリプトを実行する前に、すでに適用済みの内容と各ファイルの前提条件を確認してください。一部のオプション機能は、マイグレーションが適用されるまで非表示になるか、利用できない状態を表示します。
4. 認証を設定する
Supabase で、メール確認付きのメール/パスワード認証を有効にします。Supabase Auth Site URL をアプリのオリジンに設定し、以下のローカルリダイレクト URL と、 デプロイ済みの各オリジンに対応する URL を許可します。
http://localhost:3000/auth/confirm
http://localhost:3000/auth/callback
http://localhost:3000/auth/reset
メール確認ハンドラーは、token_hash および type クエリパラメーターを必要とします。確認メールのリンク先を /auth/confirm に設定してください。例:
<a href="{{ .RedirectTo }}?token_hash={{ .TokenHash }}&type=email">Confirm your email</a>
サインアップフォームでは、RedirectTo として /auth/confirm を指定します。Google サインインでは、認可コードを交換するために別の /auth/callback ルートを使用します。パスワードの再設定には /auth/reset を使用します。
Google サインインを使用するには、google-auth.sql を適用し、アプリのオリジンを指定して Google OAuth ウェブクライアントを設定し、Supabase プロバイダーのコールバックを認証済みリダイレクト URI として登録します。
https://YOUR-PROJECT-REF.supabase.co/auth/v1/callback
Google クライアント ID とシークレットを Supabase の Google プロバイダーに追加し、有効にします。Google プロバイダーのコールバックとアプリの /auth/callback は、同じフローにおける別々のステップです。
5. アプリを起動する
npm run dev
localhost:3000 を開き、アカウントを作成して、ペーパーポートフォリオを作成します。バックグラウンドスキャン、注文の監視、日次履歴には、以下のスケジュール済みジョブが必要です。
スケジュールされたジョブとデプロイ
このプロジェクトは main から Vercel にデプロイされます。そこで環境変数を設定し、
NEXT_PUBLIC_SITE_URL と Supabase Auth のリダイレクト先をデプロイ先のオリジンに設定してください。データベーススクリプトはアプリのデプロイとは別に適用します。
vercel.json では現在、次の2つのジョブがスケジュールされています(UTC)。
| エンドポイント | スケジュール | 処理内容 |
|---|---|---|
/api/cron/market-check | 平日の15:30 | 注文の処理待ち、価格アラート、レバレッジポジションの決済。 |
/api/cron/snapshots | 毎日22:15 | 口座価値のスナップショット、DAY注文の有効期限処理、一般公開の日次スキャン。 |
継続的な注文監視と戦略スキャンには、外部スケジューラーを設定し、
GET /api/cron/scanners を 1~5分ごとに次のヘッダー付きで呼び出してください。
Authorization: Bearer <CRON_SECRET>
このエンドポイントは custom-scan、scan-opportunities(AI)、market-check をまとめて実行します。
vercel.json の2つのスケジュールだけでは、頻繁な監視は行われません。以前の
smc-scan、ote-scan、trend-scan、meanrev-scan、candlerange-scan のルートはもう存在しません。
/api/cron/weekly-digest は利用できますが、vercel.json ではスケジュールされていません。メールダイジェストが必要な場合は、外部で毎週のスケジュールを追加してください。/api/cron/daily-scans も個別に呼び出せますが、スナップショットからすでに呼び出されています。スケジュールされたルートには CRON_SECRET とサーバー側の Supabase アクセスが必要です。
MCP 連携
アプリの AI/MCP access ダイアログで個人用トークンを作成してください。MCP クライアントを
Authorization: Bearer <token> を使用して https://<your-app-host>/api/mcp/mcp に接続します。
ダイアログに接続情報が表示されます。トークンは一度だけ表示され、ハッシュとして保存され、失効させることもできます。
サーバーは、トークン所有者のアカウントにツールのアクセス範囲を限定します。アカウント/保有資産の読み取り、
相場情報、価格履歴とインジケーター、銘柄検索、取引、現物取引、指値注文に対応しています。
専用の外国為替ツールでは、ポジションの新規作成/一覧表示/決済と、エントリー待機注文の発注/一覧表示/取消ができます。
open_crypto_position は、必須の SL/TP、1~2倍のレバレッジ、計画上のストップリスクを余剰資金の最大0.5%、証拠金を最大25%、計画上のリスクリワード比を最低3:1、6日以内の時間指定決済(デフォルトは72時間)として、レバレッジ付きの暗号資産ロング/ショートを開始します。dry_run: true を指定すると、取引を行わずに検証します。口座で保有できるレバレッジポジションは、オープン中のものが1つのみで、レバレッジ付きのエントリー待機注文は保有できません。SQL RPC は口座をロックし、ブラケットと期限をポジションとともに保存します。このツールを使う前に mcp-crypto-risk.sql を適用してください。RPC がない場合は利用不可エラーを返し、従来の fx_open RPC による固定30倍の証拠金計算にはフォールバックしません。
list_forex_positions は市場をまたいだレバレッジポジションを読み取ります。status: "closed" を指定すると、実現損失の追跡に使える最近の決済済みポジションを返します。時間指定決済とブラケット決済は、市場データを利用できる状態で market-check ワーカーが稼働していることを前提とします。決済が実行される時刻は保証されません。
開発リファレンス
コンピューターの電源がオフの間の暗号資産監視
.github/workflows/crypto-cloud-monitor.yml は GitHub ホストランナーで、1時間に2回
POST /api/cron/crypto-monitor を呼び出します。これは Codex や PC とは独立して実行されます。
GitHub のスケジュール実行はベストエフォートで、遅延またはスキップされる場合があります。正確な
30分間隔や、確実なストップ実行を提供するサービスではありません。既存の market-check ワーカーも、保存済みのブラケットと時間指定決済を処理します。
supabase/mcp-crypto-risk.sql の後に supabase/crypto-cloud-monitor.sql を適用します。リポジトリ変数
CRYPTO_MONITOR_ACCOUNT_ID に選択した暗号資産口座の UUID を設定し、
CRYPTO_MONITOR_ENABLED を true に設定してください。このワークフローでは、既存のリポジトリ
シークレット CRON_SECRET を使用します。このワークフローを停止するには変数を false に設定するか、GitHub Actions で無効にしてください。グローバル設定 AUTO_TRADE_ENABLED=false は、新規エントリーをブロックしながら、ワーカーによる決済チェックを継続します。ボットが2つ稼働するのを避けるため、口座の従来の AI 自動取引をオフにしてください。
クラウドアナリストは、Poshkan に保存されているアカウント所有者の Claude API キーと、アプリに既存の Opus 4.8 モデルを使用します。API の使用料はそのキーに請求され、Codex のサブスクリプションとは別です。オペレーターキーへのフォールバックはありません。キーや移行が不足している場合、エントリーはブロックされ、ワークフローの概要に報告されます。status は取引を行わずに前提条件を確認し、preview は取引を行わずに分析し、run は条件を満たすペーパーポジションを開くことがあります。どのモードもテスト取引を強制しません。
検討対象は、BTC、ETH、SOL のレバレッジ付きロング/ショートのみです。確定済みの15分足、1時間足、日足のローソク足を分析に使用します。サーバー側のチェックでは、レバレッジを2倍に制限し、予定ストップによるリスクを利用可能な現金の最大0.5%、現金証拠金を最大25%、予定損益比を最低3:1に制限します。また、レバレッジ付きポジションは1つまでとし、SL/TP と72時間の期限を必須とします。既存の現物保有資産は維持されます。データベースは各アカウントの30分間のスキャンを一度だけ実行し、取引レシートを現金の変更とともにコミットするため、再試行時には元のレシートが返されます。レシートと分析結果は、所有者が読み取り可能な crypto_monitor_runs テーブルに保存されます。エントリー/決済の通知と、新たに対応が必要となった障害通知には、Poshkan の既存の通知センターと、設定済みのプッシュサブスクリプションを使用します。
次のコマンドでポリシーチェックを実行します:node --experimental-strip-types --test scripts/crypto-monitor-policy.test.mjs。
| 場所 | 役割 |
|---|---|
src/app/page.tsx | 公開ランディングページです。 |
src/app/dashboard/ | アカウント、リーダーボード、履歴、Strategy Lab のルートです。 |
src/app/dashboard/actions.ts | アカウントの作成とデモのセットアップです。 |
src/app/dashboard/[accountId]/actions.ts | 取引、注文、アカウント設定、トークン、アラートです。 |
src/app/dashboard/scanners/ | 戦略の永続化、バックテスト、有効化、スキャナーの健全性です。 |
src/lib/marketdata.ts | プロバイダーのルーティングとマーケットデータの取得です。 |
src/lib/market-quote-cache.ts、src/lib/market-candle-cache.ts | 共有マーケットデータキャッシュです。 |
src/lib/pnl.ts、src/lib/forex.ts、src/lib/assets.ts | 損益、証拠金/ポジションの計算、資産クラスの適用です。 |
src/lib/custom-strategy.ts、src/lib/custom-strategy-backtest.ts、src/lib/trading-costs.ts | ルールの評価、バックテスト、推定執行コストです。 |
src/app/api/cron/、src/app/api/mcp/[transport]/ | バックグラウンドジョブと、トークン認証を使用する MCP ツールです。 |
src/lib/supabase/、src/proxy.ts | データベースクライアント、認証セッション、ルート保護です。 |
src/lib/email.ts、src/lib/push.ts、public/sw.js | メール、プッシュ通知の配信、サービスワーカーです。 |
supabase/ | 手動で適用するスキーマと RPC の移行です。 |
便利なコマンド:
npm run dev # Development server
npx tsc --noEmit # Type check
npm run lint # ESLint
npm run build # Production build
npm start # Serve a completed production build
リリース前に、型チェックと本番ビルドを実行し、ブラウザーで公開ページを確認してください。開発サーバーの実行中に .next を削除しないでください。Next.js を変更する場合は、node_modules/next/dist/docs/ にある関連ガイドを参照してください。このリポジトリでは Next.js 16 の規約を使用しています。
コントリビューションのルールについては AGENTS.md、予定されている作業については docs/ROADMAP.md を参照してください。DESIGN.md と docs/OVERVIEW.md は過去の経緯を説明するもので、以前のバージョンについて記述している場合があります。現在の動作はコードで定義されています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。