@ruaruababa/vibe-kit 1.0.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/CATALOG.md +317 -0
- package/README.md +121 -0
- package/aliases.json +65 -0
- package/bin/vibe.js +2 -0
- package/bundles.json +265 -0
- package/catalog.json +1560 -0
- package/dist/antigravity-skills/bin/cli.js +438 -0
- package/dist/antigravity-skills/lib/skill-utils.js +158 -0
- package/dist/antigravity-skills/scripts/build-catalog.js +305 -0
- package/dist/antigravity-skills/scripts/normalize-frontmatter.js +144 -0
- package/dist/antigravity-skills/scripts/validate-skills.js +230 -0
- package/dist/bin/vibe.js +2 -0
- package/dist/dist/src/cli/index.js +26 -0
- package/dist/lib/skill-utils.js +158 -0
- package/dist/scripts/build-catalog.js +50 -0
- package/dist/scripts/normalize-frontmatter.js +144 -0
- package/dist/scripts/validate-skills.js +56 -0
- package/dist/src/cli/index.js +146 -0
- package/dist/src/types/index.js +13 -0
- package/dist/src/utils/fs.js +1 -0
- package/package.json +43 -0
- package/skills/accessibility-compliance-accessibility-audit/SKILL.md +42 -0
- package/skills/accessibility-compliance-accessibility-audit/resources/implementation-playbook.md +502 -0
- package/skills/agent-orchestration-improve-agent/SKILL.md +349 -0
- package/skills/agent-orchestration-multi-agent-optimize/SKILL.md +239 -0
- package/skills/agent-orchestrator/SKILL.md +24 -0
- package/skills/ai-engineer/SKILL.md +171 -0
- package/skills/airflow-dag-patterns/SKILL.md +41 -0
- package/skills/airflow-dag-patterns/resources/implementation-playbook.md +509 -0
- package/skills/angular-migration/SKILL.md +428 -0
- package/skills/anti-reversing-techniques/SKILL.md +42 -0
- package/skills/anti-reversing-techniques/resources/implementation-playbook.md +539 -0
- package/skills/api-design-principles/SKILL.md +37 -0
- package/skills/api-design-principles/assets/api-design-checklist.md +155 -0
- package/skills/api-design-principles/assets/rest-api-template.py +182 -0
- package/skills/api-design-principles/references/graphql-schema-design.md +583 -0
- package/skills/api-design-principles/references/rest-best-practices.md +408 -0
- package/skills/api-design-principles/resources/implementation-playbook.md +513 -0
- package/skills/api-documenter/SKILL.md +184 -0
- package/skills/api-testing-observability-api-mock/SKILL.md +46 -0
- package/skills/api-testing-observability-api-mock/resources/implementation-playbook.md +1327 -0
- package/skills/application-performance-performance-optimization/SKILL.md +154 -0
- package/skills/architect-review/SKILL.md +174 -0
- package/skills/architecture-decision-records/SKILL.md +441 -0
- package/skills/architecture-patterns/SKILL.md +37 -0
- package/skills/architecture-patterns/resources/implementation-playbook.md +479 -0
- package/skills/arm-cortex-expert/SKILL.md +306 -0
- package/skills/async-python-patterns/SKILL.md +39 -0
- package/skills/async-python-patterns/resources/implementation-playbook.md +678 -0
- package/skills/attack-tree-construction/SKILL.md +38 -0
- package/skills/attack-tree-construction/resources/implementation-playbook.md +671 -0
- package/skills/auth-implementation-patterns/SKILL.md +39 -0
- package/skills/auth-implementation-patterns/resources/implementation-playbook.md +618 -0
- package/skills/backend-architect/SKILL.md +333 -0
- package/skills/backend-development-feature-development/SKILL.md +180 -0
- package/skills/backend-security-coder/SKILL.md +156 -0
- package/skills/backtesting-frameworks/SKILL.md +39 -0
- package/skills/backtesting-frameworks/resources/implementation-playbook.md +647 -0
- package/skills/bash-defensive-patterns/SKILL.md +43 -0
- package/skills/bash-defensive-patterns/resources/implementation-playbook.md +517 -0
- package/skills/bash-pro/SKILL.md +310 -0
- package/skills/bats-testing-patterns/SKILL.md +34 -0
- package/skills/bats-testing-patterns/resources/implementation-playbook.md +614 -0
- package/skills/bazel-build-optimization/SKILL.md +397 -0
- package/skills/billing-automation/SKILL.md +42 -0
- package/skills/billing-automation/resources/implementation-playbook.md +544 -0
- package/skills/binary-analysis-patterns/SKILL.md +450 -0
- package/skills/blockchain-developer/SKILL.md +208 -0
- package/skills/business-analyst/SKILL.md +182 -0
- package/skills/c-pro/SKILL.md +56 -0
- package/skills/c4-architecture-c4-architecture/SKILL.md +389 -0
- package/skills/c4-code/SKILL.md +244 -0
- package/skills/c4-component/SKILL.md +153 -0
- package/skills/c4-container/SKILL.md +171 -0
- package/skills/c4-context/SKILL.md +150 -0
- package/skills/changelog-automation/SKILL.md +38 -0
- package/skills/changelog-automation/resources/implementation-playbook.md +538 -0
- package/skills/cicd-automation-workflow-automate/SKILL.md +51 -0
- package/skills/cicd-automation-workflow-automate/resources/implementation-playbook.md +1333 -0
- package/skills/clean-markdown/SKILL.md +23 -0
- package/skills/cloud-architect/SKILL.md +135 -0
- package/skills/code-documentation-code-explain/SKILL.md +46 -0
- package/skills/code-documentation-code-explain/resources/implementation-playbook.md +802 -0
- package/skills/code-documentation-doc-generate/SKILL.md +48 -0
- package/skills/code-documentation-doc-generate/resources/implementation-playbook.md +640 -0
- package/skills/code-refactoring-context-restore/SKILL.md +179 -0
- package/skills/code-refactoring-refactor-clean/SKILL.md +51 -0
- package/skills/code-refactoring-refactor-clean/resources/implementation-playbook.md +879 -0
- package/skills/code-refactoring-tech-debt/SKILL.md +386 -0
- package/skills/code-review-ai-ai-review/SKILL.md +450 -0
- package/skills/code-review-excellence/SKILL.md +40 -0
- package/skills/code-review-excellence/resources/implementation-playbook.md +515 -0
- package/skills/code-reviewer/SKILL.md +178 -0
- package/skills/codebase-cleanup-deps-audit/SKILL.md +51 -0
- package/skills/codebase-cleanup-deps-audit/resources/implementation-playbook.md +766 -0
- package/skills/codebase-cleanup-refactor-clean/SKILL.md +51 -0
- package/skills/codebase-cleanup-refactor-clean/resources/implementation-playbook.md +879 -0
- package/skills/codebase-cleanup-tech-debt/SKILL.md +386 -0
- package/skills/competitive-landscape/SKILL.md +34 -0
- package/skills/competitive-landscape/resources/implementation-playbook.md +494 -0
- package/skills/comprehensive-review-full-review/SKILL.md +146 -0
- package/skills/comprehensive-review-pr-enhance/SKILL.md +46 -0
- package/skills/comprehensive-review-pr-enhance/resources/implementation-playbook.md +691 -0
- package/skills/conductor-implement/SKILL.md +388 -0
- package/skills/conductor-manage/SKILL.md +39 -0
- package/skills/conductor-manage/resources/implementation-playbook.md +1120 -0
- package/skills/conductor-new-track/SKILL.md +433 -0
- package/skills/conductor-revert/SKILL.md +372 -0
- package/skills/conductor-setup/SKILL.md +426 -0
- package/skills/conductor-status/SKILL.md +338 -0
- package/skills/conductor-validator/SKILL.md +62 -0
- package/skills/content-marketer/SKILL.md +170 -0
- package/skills/context-driven-development/SKILL.md +400 -0
- package/skills/context-management-context-restore/SKILL.md +179 -0
- package/skills/context-management-context-save/SKILL.md +177 -0
- package/skills/context-manager/SKILL.md +185 -0
- package/skills/cost-optimization/SKILL.md +286 -0
- package/skills/cpp-pro/SKILL.md +59 -0
- package/skills/cqrs-implementation/SKILL.md +35 -0
- package/skills/cqrs-implementation/resources/implementation-playbook.md +540 -0
- package/skills/csharp-pro/SKILL.md +59 -0
- package/skills/customer-support/SKILL.md +170 -0
- package/skills/data-engineer/SKILL.md +224 -0
- package/skills/data-engineering-data-driven-feature/SKILL.md +182 -0
- package/skills/data-engineering-data-pipeline/SKILL.md +201 -0
- package/skills/data-quality-frameworks/SKILL.md +40 -0
- package/skills/data-quality-frameworks/resources/implementation-playbook.md +573 -0
- package/skills/data-scientist/SKILL.md +199 -0
- package/skills/data-storytelling/SKILL.md +465 -0
- package/skills/database-admin/SKILL.md +165 -0
- package/skills/database-architect/SKILL.md +268 -0
- package/skills/database-cloud-optimization-cost-optimize/SKILL.md +44 -0
- package/skills/database-cloud-optimization-cost-optimize/resources/implementation-playbook.md +1441 -0
- package/skills/database-migration/SKILL.md +436 -0
- package/skills/database-migrations-migration-observability/SKILL.md +420 -0
- package/skills/database-migrations-sql-migrations/SKILL.md +53 -0
- package/skills/database-migrations-sql-migrations/resources/implementation-playbook.md +499 -0
- package/skills/database-optimizer/SKILL.md +167 -0
- package/skills/dbt-transformation-patterns/SKILL.md +34 -0
- package/skills/dbt-transformation-patterns/resources/implementation-playbook.md +547 -0
- package/skills/debugger/SKILL.md +49 -0
- package/skills/debugging-strategies/SKILL.md +34 -0
- package/skills/debugging-strategies/resources/implementation-playbook.md +511 -0
- package/skills/debugging-toolkit-smart-debug/SKILL.md +197 -0
- package/skills/defi-protocol-templates/SKILL.md +466 -0
- package/skills/dependency-management-deps-audit/SKILL.md +44 -0
- package/skills/dependency-management-deps-audit/resources/implementation-playbook.md +766 -0
- package/skills/dependency-upgrade/SKILL.md +421 -0
- package/skills/deployment-engineer/SKILL.md +170 -0
- package/skills/deployment-pipeline-design/SKILL.md +371 -0
- package/skills/deployment-validation-config-validate/SKILL.md +496 -0
- package/skills/devops-troubleshooter/SKILL.md +161 -0
- package/skills/distributed-debugging-debug-trace/SKILL.md +44 -0
- package/skills/distributed-debugging-debug-trace/resources/implementation-playbook.md +1307 -0
- package/skills/distributed-tracing/SKILL.md +450 -0
- package/skills/django-pro/SKILL.md +180 -0
- package/skills/docs-architect/SKILL.md +98 -0
- package/skills/documentation-generation-doc-generate/SKILL.md +48 -0
- package/skills/documentation-generation-doc-generate/resources/implementation-playbook.md +640 -0
- package/skills/dotnet-architect/SKILL.md +197 -0
- package/skills/dotnet-backend-patterns/SKILL.md +37 -0
- package/skills/dotnet-backend-patterns/assets/repository-template.cs +523 -0
- package/skills/dotnet-backend-patterns/assets/service-template.cs +336 -0
- package/skills/dotnet-backend-patterns/references/dapper-patterns.md +544 -0
- package/skills/dotnet-backend-patterns/references/ef-core-best-practices.md +355 -0
- package/skills/dotnet-backend-patterns/resources/implementation-playbook.md +799 -0
- package/skills/dummy-skill/SKILL.md +5 -0
- package/skills/dx-optimizer/SKILL.md +83 -0
- package/skills/e2e-testing-patterns/SKILL.md +41 -0
- package/skills/e2e-testing-patterns/resources/implementation-playbook.md +531 -0
- package/skills/elixir-pro/SKILL.md +59 -0
- package/skills/embedding-strategies/SKILL.md +491 -0
- package/skills/employment-contract-templates/SKILL.md +39 -0
- package/skills/employment-contract-templates/resources/implementation-playbook.md +493 -0
- package/skills/error-debugging-error-analysis/SKILL.md +47 -0
- package/skills/error-debugging-error-analysis/resources/implementation-playbook.md +1143 -0
- package/skills/error-debugging-error-trace/SKILL.md +43 -0
- package/skills/error-debugging-error-trace/resources/implementation-playbook.md +1361 -0
- package/skills/error-debugging-multi-agent-review/SKILL.md +216 -0
- package/skills/error-detective/SKILL.md +53 -0
- package/skills/error-diagnostics-error-analysis/SKILL.md +47 -0
- package/skills/error-diagnostics-error-analysis/resources/implementation-playbook.md +1143 -0
- package/skills/error-diagnostics-error-trace/SKILL.md +48 -0
- package/skills/error-diagnostics-error-trace/resources/implementation-playbook.md +1371 -0
- package/skills/error-diagnostics-smart-debug/SKILL.md +197 -0
- package/skills/error-handling-patterns/SKILL.md +35 -0
- package/skills/error-handling-patterns/resources/implementation-playbook.md +635 -0
- package/skills/event-sourcing-architect/SKILL.md +58 -0
- package/skills/event-store-design/SKILL.md +449 -0
- package/skills/fastapi-pro/SKILL.md +192 -0
- package/skills/fastapi-templates/SKILL.md +32 -0
- package/skills/fastapi-templates/resources/implementation-playbook.md +566 -0
- package/skills/final-test/SKILL.md +5 -0
- package/skills/firmware-analyst/SKILL.md +320 -0
- package/skills/flutter-expert/SKILL.md +200 -0
- package/skills/framework-migration-code-migrate/SKILL.md +48 -0
- package/skills/framework-migration-code-migrate/resources/implementation-playbook.md +1052 -0
- package/skills/framework-migration-deps-upgrade/SKILL.md +48 -0
- package/skills/framework-migration-deps-upgrade/resources/implementation-playbook.md +755 -0
- package/skills/framework-migration-legacy-modernize/SKILL.md +132 -0
- package/skills/frontend-developer/SKILL.md +171 -0
- package/skills/frontend-mobile-development-component-scaffold/SKILL.md +403 -0
- package/skills/frontend-mobile-security-xss-scan/SKILL.md +322 -0
- package/skills/frontend-security-coder/SKILL.md +170 -0
- package/skills/full-stack-orchestration-full-stack-feature/SKILL.md +135 -0
- package/skills/gdpr-data-handling/SKILL.md +33 -0
- package/skills/gdpr-data-handling/resources/implementation-playbook.md +615 -0
- package/skills/git-advanced-workflows/SKILL.md +412 -0
- package/skills/git-pr-workflows-git-workflow/SKILL.md +140 -0
- package/skills/git-pr-workflows-onboard/SKILL.md +416 -0
- package/skills/git-pr-workflows-pr-enhance/SKILL.md +48 -0
- package/skills/git-pr-workflows-pr-enhance/resources/implementation-playbook.md +701 -0
- package/skills/github-actions-templates/SKILL.md +345 -0
- package/skills/gitlab-ci-patterns/SKILL.md +283 -0
- package/skills/gitops-workflow/SKILL.md +303 -0
- package/skills/gitops-workflow/references/argocd-setup.md +134 -0
- package/skills/gitops-workflow/references/sync-policies.md +131 -0
- package/skills/go-concurrency-patterns/SKILL.md +33 -0
- package/skills/go-concurrency-patterns/resources/implementation-playbook.md +654 -0
- package/skills/godot-gdscript-patterns/SKILL.md +33 -0
- package/skills/godot-gdscript-patterns/resources/implementation-playbook.md +804 -0
- package/skills/golang-pro/SKILL.md +179 -0
- package/skills/grafana-dashboards/SKILL.md +381 -0
- package/skills/graphql-architect/SKILL.md +182 -0
- package/skills/haskell-pro/SKILL.md +56 -0
- package/skills/helm-chart-scaffolding/SKILL.md +34 -0
- package/skills/helm-chart-scaffolding/assets/Chart.yaml.template +42 -0
- package/skills/helm-chart-scaffolding/assets/values.yaml.template +185 -0
- package/skills/helm-chart-scaffolding/references/chart-structure.md +500 -0
- package/skills/helm-chart-scaffolding/resources/implementation-playbook.md +543 -0
- package/skills/helm-chart-scaffolding/scripts/validate-chart.sh +244 -0
- package/skills/hr-pro/SKILL.md +126 -0
- package/skills/hybrid-cloud-architect/SKILL.md +168 -0
- package/skills/hybrid-cloud-networking/SKILL.md +238 -0
- package/skills/hybrid-search-implementation/SKILL.md +32 -0
- package/skills/hybrid-search-implementation/resources/implementation-playbook.md +567 -0
- package/skills/incident-responder/SKILL.md +213 -0
- package/skills/incident-response-incident-response/SKILL.md +168 -0
- package/skills/incident-response-smart-fix/SKILL.md +29 -0
- package/skills/incident-response-smart-fix/resources/implementation-playbook.md +838 -0
- package/skills/incident-runbook-templates/SKILL.md +395 -0
- package/skills/ios-developer/SKILL.md +219 -0
- package/skills/istio-traffic-management/SKILL.md +337 -0
- package/skills/java-pro/SKILL.md +177 -0
- package/skills/javascript-pro/SKILL.md +57 -0
- package/skills/javascript-testing-patterns/SKILL.md +35 -0
- package/skills/javascript-testing-patterns/resources/implementation-playbook.md +1024 -0
- package/skills/javascript-typescript-typescript-scaffold/SKILL.md +361 -0
- package/skills/julia-pro/SKILL.md +209 -0
- package/skills/k8s-manifest-generator/SKILL.md +35 -0
- package/skills/k8s-manifest-generator/assets/configmap-template.yaml +296 -0
- package/skills/k8s-manifest-generator/assets/deployment-template.yaml +203 -0
- package/skills/k8s-manifest-generator/assets/service-template.yaml +171 -0
- package/skills/k8s-manifest-generator/references/deployment-spec.md +753 -0
- package/skills/k8s-manifest-generator/references/service-spec.md +724 -0
- package/skills/k8s-manifest-generator/resources/implementation-playbook.md +510 -0
- package/skills/k8s-security-policies/SKILL.md +346 -0
- package/skills/k8s-security-policies/assets/network-policy-template.yaml +177 -0
- package/skills/k8s-security-policies/references/rbac-patterns.md +187 -0
- package/skills/kpi-dashboard-design/SKILL.md +440 -0
- package/skills/kubernetes-architect/SKILL.md +170 -0
- package/skills/langchain-architecture/SKILL.md +350 -0
- package/skills/legacy-modernizer/SKILL.md +53 -0
- package/skills/legal-advisor/SKILL.md +70 -0
- package/skills/linkerd-patterns/SKILL.md +321 -0
- package/skills/llm-application-dev-ai-assistant/SKILL.md +35 -0
- package/skills/llm-application-dev-ai-assistant/resources/implementation-playbook.md +1236 -0
- package/skills/llm-application-dev-langchain-agent/SKILL.md +246 -0
- package/skills/llm-application-dev-prompt-optimize/SKILL.md +37 -0
- package/skills/llm-application-dev-prompt-optimize/resources/implementation-playbook.md +591 -0
- package/skills/llm-evaluation/SKILL.md +483 -0
- package/skills/machine-learning-ops-ml-pipeline/SKILL.md +314 -0
- package/skills/malware-analyst/SKILL.md +247 -0
- package/skills/market-sizing-analysis/SKILL.md +425 -0
- package/skills/market-sizing-analysis/examples/saas-market-sizing.md +349 -0
- package/skills/market-sizing-analysis/references/data-sources.md +360 -0
- package/skills/memory-forensics/SKILL.md +491 -0
- package/skills/memory-safety-patterns/SKILL.md +33 -0
- package/skills/memory-safety-patterns/resources/implementation-playbook.md +603 -0
- package/skills/mermaid-expert/SKILL.md +59 -0
- package/skills/microservices-patterns/SKILL.md +35 -0
- package/skills/microservices-patterns/resources/implementation-playbook.md +607 -0
- package/skills/minecraft-bukkit-pro/SKILL.md +126 -0
- package/skills/ml-engineer/SKILL.md +168 -0
- package/skills/ml-pipeline-workflow/SKILL.md +257 -0
- package/skills/mlops-engineer/SKILL.md +219 -0
- package/skills/mobile-developer/SKILL.md +205 -0
- package/skills/mobile-security-coder/SKILL.md +184 -0
- package/skills/modern-javascript-patterns/SKILL.md +35 -0
- package/skills/modern-javascript-patterns/resources/implementation-playbook.md +910 -0
- package/skills/monorepo-architect/SKILL.md +61 -0
- package/skills/monorepo-management/SKILL.md +35 -0
- package/skills/monorepo-management/resources/implementation-playbook.md +621 -0
- package/skills/mtls-configuration/SKILL.md +359 -0
- package/skills/multi-cloud-architecture/SKILL.md +189 -0
- package/skills/multi-platform-apps-multi-platform/SKILL.md +203 -0
- package/skills/network-engineer/SKILL.md +169 -0
- package/skills/nextjs-app-router-patterns/SKILL.md +33 -0
- package/skills/nextjs-app-router-patterns/resources/implementation-playbook.md +543 -0
- package/skills/nft-standards/SKILL.md +395 -0
- package/skills/node-expert/SKILL.md +23 -0
- package/skills/nodejs-backend-patterns/SKILL.md +35 -0
- package/skills/nodejs-backend-patterns/resources/implementation-playbook.md +1019 -0
- package/skills/nx-workspace-patterns/SKILL.md +464 -0
- package/skills/observability-engineer/SKILL.md +237 -0
- package/skills/observability-monitoring-monitor-setup/SKILL.md +48 -0
- package/skills/observability-monitoring-monitor-setup/resources/implementation-playbook.md +505 -0
- package/skills/observability-monitoring-slo-implement/SKILL.md +43 -0
- package/skills/observability-monitoring-slo-implement/resources/implementation-playbook.md +1077 -0
- package/skills/on-call-handoff-patterns/SKILL.md +453 -0
- package/skills/openapi-spec-generation/SKILL.md +33 -0
- package/skills/openapi-spec-generation/resources/implementation-playbook.md +1027 -0
- package/skills/payment-integration/SKILL.md +77 -0
- package/skills/paypal-integration/SKILL.md +479 -0
- package/skills/pci-compliance/SKILL.md +478 -0
- package/skills/performance-engineer/SKILL.md +180 -0
- package/skills/performance-testing-review-ai-review/SKILL.md +450 -0
- package/skills/performance-testing-review-multi-agent-review/SKILL.md +216 -0
- package/skills/php-pro/SKILL.md +63 -0
- package/skills/posix-shell-pro/SKILL.md +304 -0
- package/skills/postgresql/SKILL.md +230 -0
- package/skills/postmortem-writing/SKILL.md +386 -0
- package/skills/projection-patterns/SKILL.md +33 -0
- package/skills/projection-patterns/resources/implementation-playbook.md +501 -0
- package/skills/prometheus-configuration/SKILL.md +404 -0
- package/skills/prompt-engineer/SKILL.md +272 -0
- package/skills/prompt-engineering-patterns/SKILL.md +213 -0
- package/skills/prompt-engineering-patterns/assets/few-shot-examples.json +106 -0
- package/skills/prompt-engineering-patterns/assets/prompt-template-library.md +246 -0
- package/skills/prompt-engineering-patterns/references/chain-of-thought.md +399 -0
- package/skills/prompt-engineering-patterns/references/few-shot-learning.md +369 -0
- package/skills/prompt-engineering-patterns/references/prompt-optimization.md +414 -0
- package/skills/prompt-engineering-patterns/references/prompt-templates.md +470 -0
- package/skills/prompt-engineering-patterns/references/system-prompts.md +189 -0
- package/skills/prompt-engineering-patterns/scripts/optimize-prompt.py +279 -0
- package/skills/protocol-reverse-engineering/SKILL.md +29 -0
- package/skills/protocol-reverse-engineering/resources/implementation-playbook.md +509 -0
- package/skills/python-development-python-scaffold/SKILL.md +331 -0
- package/skills/python-packaging/SKILL.md +36 -0
- package/skills/python-packaging/resources/implementation-playbook.md +869 -0
- package/skills/python-performance-optimization/SKILL.md +36 -0
- package/skills/python-performance-optimization/resources/implementation-playbook.md +868 -0
- package/skills/python-pro/SKILL.md +158 -0
- package/skills/python-testing-patterns/SKILL.md +37 -0
- package/skills/python-testing-patterns/resources/implementation-playbook.md +906 -0
- package/skills/quant-analyst/SKILL.md +53 -0
- package/skills/rag-implementation/SKILL.md +421 -0
- package/skills/react-modernization/SKILL.md +34 -0
- package/skills/react-modernization/resources/implementation-playbook.md +512 -0
- package/skills/react-native-architecture/SKILL.md +33 -0
- package/skills/react-native-architecture/resources/implementation-playbook.md +670 -0
- package/skills/react-state-management/SKILL.md +441 -0
- package/skills/reference-builder/SKILL.md +188 -0
- package/skills/reverse-engineer/SKILL.md +173 -0
- package/skills/risk-manager/SKILL.md +61 -0
- package/skills/risk-metrics-calculation/SKILL.md +33 -0
- package/skills/risk-metrics-calculation/resources/implementation-playbook.md +554 -0
- package/skills/ruby-pro/SKILL.md +56 -0
- package/skills/rust-async-patterns/SKILL.md +33 -0
- package/skills/rust-async-patterns/resources/implementation-playbook.md +516 -0
- package/skills/rust-pro/SKILL.md +178 -0
- package/skills/saga-orchestration/SKILL.md +496 -0
- package/skills/sales-automator/SKILL.md +55 -0
- package/skills/sast-configuration/SKILL.md +212 -0
- package/skills/scala-pro/SKILL.md +82 -0
- package/skills/screen-reader-testing/SKILL.md +33 -0
- package/skills/screen-reader-testing/resources/implementation-playbook.md +544 -0
- package/skills/search-specialist/SKILL.md +80 -0
- package/skills/secrets-management/SKILL.md +364 -0
- package/skills/security-auditor/SKILL.md +169 -0
- package/skills/security-compliance-compliance-check/SKILL.md +55 -0
- package/skills/security-compliance-compliance-check/resources/implementation-playbook.md +963 -0
- package/skills/security-requirement-extraction/SKILL.md +33 -0
- package/skills/security-requirement-extraction/resources/implementation-playbook.md +676 -0
- package/skills/security-scanning-security-dependencies/SKILL.md +43 -0
- package/skills/security-scanning-security-dependencies/resources/implementation-playbook.md +544 -0
- package/skills/security-scanning-security-hardening/SKILL.md +147 -0
- package/skills/security-scanning-security-sast/SKILL.md +495 -0
- package/skills/seo-authority-builder/SKILL.md +136 -0
- package/skills/seo-cannibalization-detector/SKILL.md +123 -0
- package/skills/seo-content-auditor/SKILL.md +83 -0
- package/skills/seo-content-planner/SKILL.md +108 -0
- package/skills/seo-content-refresher/SKILL.md +118 -0
- package/skills/seo-content-writer/SKILL.md +96 -0
- package/skills/seo-keyword-strategist/SKILL.md +95 -0
- package/skills/seo-meta-optimizer/SKILL.md +92 -0
- package/skills/seo-snippet-hunter/SKILL.md +114 -0
- package/skills/seo-structure-architect/SKILL.md +108 -0
- package/skills/service-mesh-expert/SKILL.md +58 -0
- package/skills/service-mesh-observability/SKILL.md +395 -0
- package/skills/shellcheck-configuration/SKILL.md +466 -0
- package/skills/similarity-search-patterns/SKILL.md +33 -0
- package/skills/similarity-search-patterns/resources/implementation-playbook.md +557 -0
- package/skills/slo-implementation/SKILL.md +341 -0
- package/skills/solidity-security/SKILL.md +34 -0
- package/skills/solidity-security/resources/implementation-playbook.md +524 -0
- package/skills/spark-optimization/SKILL.md +427 -0
- package/skills/sql-optimization-patterns/SKILL.md +35 -0
- package/skills/sql-optimization-patterns/resources/implementation-playbook.md +504 -0
- package/skills/sql-pro/SKILL.md +173 -0
- package/skills/startup-analyst/SKILL.md +328 -0
- package/skills/startup-business-analyst-business-case/SKILL.md +487 -0
- package/skills/startup-business-analyst-financial-projections/SKILL.md +353 -0
- package/skills/startup-business-analyst-market-opportunity/SKILL.md +240 -0
- package/skills/startup-financial-modeling/SKILL.md +467 -0
- package/skills/startup-metrics-framework/SKILL.md +34 -0
- package/skills/startup-metrics-framework/resources/implementation-playbook.md +500 -0
- package/skills/stride-analysis-patterns/SKILL.md +33 -0
- package/skills/stride-analysis-patterns/resources/implementation-playbook.md +655 -0
- package/skills/stripe-integration/SKILL.md +454 -0
- package/skills/systems-programming-rust-project/SKILL.md +440 -0
- package/skills/tailwind-design-system/SKILL.md +33 -0
- package/skills/tailwind-design-system/resources/implementation-playbook.md +665 -0
- package/skills/tdd-orchestrator/SKILL.md +205 -0
- package/skills/tdd-workflows-tdd-cycle/SKILL.md +221 -0
- package/skills/tdd-workflows-tdd-green/SKILL.md +73 -0
- package/skills/tdd-workflows-tdd-green/resources/implementation-playbook.md +870 -0
- package/skills/tdd-workflows-tdd-red/SKILL.md +164 -0
- package/skills/tdd-workflows-tdd-refactor/SKILL.md +187 -0
- package/skills/team-collaboration-issue/SKILL.md +37 -0
- package/skills/team-collaboration-issue/resources/implementation-playbook.md +640 -0
- package/skills/team-collaboration-standup-notes/SKILL.md +44 -0
- package/skills/team-collaboration-standup-notes/resources/implementation-playbook.md +768 -0
- package/skills/team-composition-analysis/SKILL.md +413 -0
- package/skills/temporal-python-pro/SKILL.md +370 -0
- package/skills/temporal-python-testing/SKILL.md +170 -0
- package/skills/temporal-python-testing/resources/integration-testing.md +455 -0
- package/skills/temporal-python-testing/resources/local-setup.md +553 -0
- package/skills/temporal-python-testing/resources/replay-testing.md +462 -0
- package/skills/temporal-python-testing/resources/unit-testing.md +328 -0
- package/skills/terraform-module-library/SKILL.md +261 -0
- package/skills/terraform-module-library/references/aws-modules.md +63 -0
- package/skills/terraform-specialist/SKILL.md +166 -0
- package/skills/test-automator/SKILL.md +224 -0
- package/skills/threat-mitigation-mapping/SKILL.md +33 -0
- package/skills/threat-mitigation-mapping/resources/implementation-playbook.md +744 -0
- package/skills/threat-modeling-expert/SKILL.md +60 -0
- package/skills/track-management/SKILL.md +38 -0
- package/skills/track-management/resources/implementation-playbook.md +591 -0
- package/skills/turborepo-caching/SKILL.md +419 -0
- package/skills/tutorial-engineer/SKILL.md +139 -0
- package/skills/typescript-advanced-types/SKILL.md +35 -0
- package/skills/typescript-advanced-types/resources/implementation-playbook.md +716 -0
- package/skills/typescript-pro/SKILL.md +55 -0
- package/skills/ui-minimal/SKILL.md +23 -0
- package/skills/ui-ux-designer/SKILL.md +209 -0
- package/skills/ui-visual-validator/SKILL.md +214 -0
- package/skills/unit-testing-test-generate/SKILL.md +319 -0
- package/skills/unity-developer/SKILL.md +230 -0
- package/skills/unity-ecs-patterns/SKILL.md +33 -0
- package/skills/unity-ecs-patterns/resources/implementation-playbook.md +625 -0
- package/skills/uv-package-manager/SKILL.md +37 -0
- package/skills/uv-package-manager/resources/implementation-playbook.md +830 -0
- package/skills/vector-database-engineer/SKILL.md +60 -0
- package/skills/vector-index-tuning/SKILL.md +42 -0
- package/skills/vector-index-tuning/resources/implementation-playbook.md +507 -0
- package/skills/wcag-audit-patterns/SKILL.md +41 -0
- package/skills/wcag-audit-patterns/resources/implementation-playbook.md +541 -0
- package/skills/web3-testing/SKILL.md +427 -0
- package/skills/workflow-orchestration-patterns/SKILL.md +333 -0
- package/skills/workflow-patterns/SKILL.md +38 -0
- package/skills/workflow-patterns/resources/implementation-playbook.md +621 -0
|
@@ -0,0 +1,554 @@
|
|
|
1
|
+
# Risk Metrics Calculation Implementation Playbook
|
|
2
|
+
|
|
3
|
+
This file contains detailed patterns, checklists, and code samples referenced by the skill.
|
|
4
|
+
|
|
5
|
+
# Risk Metrics Calculation
|
|
6
|
+
|
|
7
|
+
Comprehensive risk measurement toolkit for portfolio management, including Value at Risk, Expected Shortfall, and drawdown analysis.
|
|
8
|
+
|
|
9
|
+
## When to Use This Skill
|
|
10
|
+
|
|
11
|
+
- Measuring portfolio risk
|
|
12
|
+
- Implementing risk limits
|
|
13
|
+
- Building risk dashboards
|
|
14
|
+
- Calculating risk-adjusted returns
|
|
15
|
+
- Setting position sizes
|
|
16
|
+
- Regulatory reporting
|
|
17
|
+
|
|
18
|
+
## Core Concepts
|
|
19
|
+
|
|
20
|
+
### 1. Risk Metric Categories
|
|
21
|
+
|
|
22
|
+
| Category | Metrics | Use Case |
|
|
23
|
+
|----------|---------|----------|
|
|
24
|
+
| **Volatility** | Std Dev, Beta | General risk |
|
|
25
|
+
| **Tail Risk** | VaR, CVaR | Extreme losses |
|
|
26
|
+
| **Drawdown** | Max DD, Calmar | Capital preservation |
|
|
27
|
+
| **Risk-Adjusted** | Sharpe, Sortino | Performance |
|
|
28
|
+
|
|
29
|
+
### 2. Time Horizons
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
Intraday: Minute/hourly VaR for day traders
|
|
33
|
+
Daily: Standard risk reporting
|
|
34
|
+
Weekly: Rebalancing decisions
|
|
35
|
+
Monthly: Performance attribution
|
|
36
|
+
Annual: Strategic allocation
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Implementation
|
|
40
|
+
|
|
41
|
+
### Pattern 1: Core Risk Metrics
|
|
42
|
+
|
|
43
|
+
```python
|
|
44
|
+
import numpy as np
|
|
45
|
+
import pandas as pd
|
|
46
|
+
from scipy import stats
|
|
47
|
+
from typing import Dict, Optional, Tuple
|
|
48
|
+
|
|
49
|
+
class RiskMetrics:
|
|
50
|
+
"""Core risk metric calculations."""
|
|
51
|
+
|
|
52
|
+
def __init__(self, returns: pd.Series, rf_rate: float = 0.02):
|
|
53
|
+
"""
|
|
54
|
+
Args:
|
|
55
|
+
returns: Series of periodic returns
|
|
56
|
+
rf_rate: Annual risk-free rate
|
|
57
|
+
"""
|
|
58
|
+
self.returns = returns
|
|
59
|
+
self.rf_rate = rf_rate
|
|
60
|
+
self.ann_factor = 252 # Trading days per year
|
|
61
|
+
|
|
62
|
+
# Volatility Metrics
|
|
63
|
+
def volatility(self, annualized: bool = True) -> float:
|
|
64
|
+
"""Standard deviation of returns."""
|
|
65
|
+
vol = self.returns.std()
|
|
66
|
+
if annualized:
|
|
67
|
+
vol *= np.sqrt(self.ann_factor)
|
|
68
|
+
return vol
|
|
69
|
+
|
|
70
|
+
def downside_deviation(self, threshold: float = 0, annualized: bool = True) -> float:
|
|
71
|
+
"""Standard deviation of returns below threshold."""
|
|
72
|
+
downside = self.returns[self.returns < threshold]
|
|
73
|
+
if len(downside) == 0:
|
|
74
|
+
return 0.0
|
|
75
|
+
dd = downside.std()
|
|
76
|
+
if annualized:
|
|
77
|
+
dd *= np.sqrt(self.ann_factor)
|
|
78
|
+
return dd
|
|
79
|
+
|
|
80
|
+
def beta(self, market_returns: pd.Series) -> float:
|
|
81
|
+
"""Beta relative to market."""
|
|
82
|
+
aligned = pd.concat([self.returns, market_returns], axis=1).dropna()
|
|
83
|
+
if len(aligned) < 2:
|
|
84
|
+
return np.nan
|
|
85
|
+
cov = np.cov(aligned.iloc[:, 0], aligned.iloc[:, 1])
|
|
86
|
+
return cov[0, 1] / cov[1, 1] if cov[1, 1] != 0 else 0
|
|
87
|
+
|
|
88
|
+
# Value at Risk
|
|
89
|
+
def var_historical(self, confidence: float = 0.95) -> float:
|
|
90
|
+
"""Historical VaR at confidence level."""
|
|
91
|
+
return -np.percentile(self.returns, (1 - confidence) * 100)
|
|
92
|
+
|
|
93
|
+
def var_parametric(self, confidence: float = 0.95) -> float:
|
|
94
|
+
"""Parametric VaR assuming normal distribution."""
|
|
95
|
+
z_score = stats.norm.ppf(confidence)
|
|
96
|
+
return self.returns.mean() - z_score * self.returns.std()
|
|
97
|
+
|
|
98
|
+
def var_cornish_fisher(self, confidence: float = 0.95) -> float:
|
|
99
|
+
"""VaR with Cornish-Fisher expansion for non-normality."""
|
|
100
|
+
z = stats.norm.ppf(confidence)
|
|
101
|
+
s = stats.skew(self.returns) # Skewness
|
|
102
|
+
k = stats.kurtosis(self.returns) # Excess kurtosis
|
|
103
|
+
|
|
104
|
+
# Cornish-Fisher expansion
|
|
105
|
+
z_cf = (z + (z**2 - 1) * s / 6 +
|
|
106
|
+
(z**3 - 3*z) * k / 24 -
|
|
107
|
+
(2*z**3 - 5*z) * s**2 / 36)
|
|
108
|
+
|
|
109
|
+
return -(self.returns.mean() + z_cf * self.returns.std())
|
|
110
|
+
|
|
111
|
+
# Conditional VaR (Expected Shortfall)
|
|
112
|
+
def cvar(self, confidence: float = 0.95) -> float:
|
|
113
|
+
"""Expected Shortfall / CVaR / Average VaR."""
|
|
114
|
+
var = self.var_historical(confidence)
|
|
115
|
+
return -self.returns[self.returns <= -var].mean()
|
|
116
|
+
|
|
117
|
+
# Drawdown Analysis
|
|
118
|
+
def drawdowns(self) -> pd.Series:
|
|
119
|
+
"""Calculate drawdown series."""
|
|
120
|
+
cumulative = (1 + self.returns).cumprod()
|
|
121
|
+
running_max = cumulative.cummax()
|
|
122
|
+
return (cumulative - running_max) / running_max
|
|
123
|
+
|
|
124
|
+
def max_drawdown(self) -> float:
|
|
125
|
+
"""Maximum drawdown."""
|
|
126
|
+
return self.drawdowns().min()
|
|
127
|
+
|
|
128
|
+
def avg_drawdown(self) -> float:
|
|
129
|
+
"""Average drawdown."""
|
|
130
|
+
dd = self.drawdowns()
|
|
131
|
+
return dd[dd < 0].mean() if (dd < 0).any() else 0
|
|
132
|
+
|
|
133
|
+
def drawdown_duration(self) -> Dict[str, int]:
|
|
134
|
+
"""Drawdown duration statistics."""
|
|
135
|
+
dd = self.drawdowns()
|
|
136
|
+
in_drawdown = dd < 0
|
|
137
|
+
|
|
138
|
+
# Find drawdown periods
|
|
139
|
+
drawdown_starts = in_drawdown & ~in_drawdown.shift(1).fillna(False)
|
|
140
|
+
drawdown_ends = ~in_drawdown & in_drawdown.shift(1).fillna(False)
|
|
141
|
+
|
|
142
|
+
durations = []
|
|
143
|
+
current_duration = 0
|
|
144
|
+
|
|
145
|
+
for i in range(len(dd)):
|
|
146
|
+
if in_drawdown.iloc[i]:
|
|
147
|
+
current_duration += 1
|
|
148
|
+
elif current_duration > 0:
|
|
149
|
+
durations.append(current_duration)
|
|
150
|
+
current_duration = 0
|
|
151
|
+
|
|
152
|
+
if current_duration > 0:
|
|
153
|
+
durations.append(current_duration)
|
|
154
|
+
|
|
155
|
+
return {
|
|
156
|
+
"max_duration": max(durations) if durations else 0,
|
|
157
|
+
"avg_duration": np.mean(durations) if durations else 0,
|
|
158
|
+
"current_duration": current_duration
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
# Risk-Adjusted Returns
|
|
162
|
+
def sharpe_ratio(self) -> float:
|
|
163
|
+
"""Annualized Sharpe ratio."""
|
|
164
|
+
excess_return = self.returns.mean() * self.ann_factor - self.rf_rate
|
|
165
|
+
vol = self.volatility(annualized=True)
|
|
166
|
+
return excess_return / vol if vol > 0 else 0
|
|
167
|
+
|
|
168
|
+
def sortino_ratio(self) -> float:
|
|
169
|
+
"""Sortino ratio using downside deviation."""
|
|
170
|
+
excess_return = self.returns.mean() * self.ann_factor - self.rf_rate
|
|
171
|
+
dd = self.downside_deviation(threshold=0, annualized=True)
|
|
172
|
+
return excess_return / dd if dd > 0 else 0
|
|
173
|
+
|
|
174
|
+
def calmar_ratio(self) -> float:
|
|
175
|
+
"""Calmar ratio (return / max drawdown)."""
|
|
176
|
+
annual_return = (1 + self.returns).prod() ** (self.ann_factor / len(self.returns)) - 1
|
|
177
|
+
max_dd = abs(self.max_drawdown())
|
|
178
|
+
return annual_return / max_dd if max_dd > 0 else 0
|
|
179
|
+
|
|
180
|
+
def omega_ratio(self, threshold: float = 0) -> float:
|
|
181
|
+
"""Omega ratio."""
|
|
182
|
+
returns_above = self.returns[self.returns > threshold] - threshold
|
|
183
|
+
returns_below = threshold - self.returns[self.returns <= threshold]
|
|
184
|
+
|
|
185
|
+
if returns_below.sum() == 0:
|
|
186
|
+
return np.inf
|
|
187
|
+
|
|
188
|
+
return returns_above.sum() / returns_below.sum()
|
|
189
|
+
|
|
190
|
+
# Information Ratio
|
|
191
|
+
def information_ratio(self, benchmark_returns: pd.Series) -> float:
|
|
192
|
+
"""Information ratio vs benchmark."""
|
|
193
|
+
active_returns = self.returns - benchmark_returns
|
|
194
|
+
tracking_error = active_returns.std() * np.sqrt(self.ann_factor)
|
|
195
|
+
active_return = active_returns.mean() * self.ann_factor
|
|
196
|
+
return active_return / tracking_error if tracking_error > 0 else 0
|
|
197
|
+
|
|
198
|
+
# Summary
|
|
199
|
+
def summary(self) -> Dict[str, float]:
|
|
200
|
+
"""Generate comprehensive risk summary."""
|
|
201
|
+
dd_stats = self.drawdown_duration()
|
|
202
|
+
|
|
203
|
+
return {
|
|
204
|
+
# Returns
|
|
205
|
+
"total_return": (1 + self.returns).prod() - 1,
|
|
206
|
+
"annual_return": (1 + self.returns).prod() ** (self.ann_factor / len(self.returns)) - 1,
|
|
207
|
+
|
|
208
|
+
# Volatility
|
|
209
|
+
"annual_volatility": self.volatility(),
|
|
210
|
+
"downside_deviation": self.downside_deviation(),
|
|
211
|
+
|
|
212
|
+
# VaR & CVaR
|
|
213
|
+
"var_95_historical": self.var_historical(0.95),
|
|
214
|
+
"var_99_historical": self.var_historical(0.99),
|
|
215
|
+
"cvar_95": self.cvar(0.95),
|
|
216
|
+
|
|
217
|
+
# Drawdowns
|
|
218
|
+
"max_drawdown": self.max_drawdown(),
|
|
219
|
+
"avg_drawdown": self.avg_drawdown(),
|
|
220
|
+
"max_drawdown_duration": dd_stats["max_duration"],
|
|
221
|
+
|
|
222
|
+
# Risk-Adjusted
|
|
223
|
+
"sharpe_ratio": self.sharpe_ratio(),
|
|
224
|
+
"sortino_ratio": self.sortino_ratio(),
|
|
225
|
+
"calmar_ratio": self.calmar_ratio(),
|
|
226
|
+
"omega_ratio": self.omega_ratio(),
|
|
227
|
+
|
|
228
|
+
# Distribution
|
|
229
|
+
"skewness": stats.skew(self.returns),
|
|
230
|
+
"kurtosis": stats.kurtosis(self.returns),
|
|
231
|
+
}
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
### Pattern 2: Portfolio Risk
|
|
235
|
+
|
|
236
|
+
```python
|
|
237
|
+
class PortfolioRisk:
|
|
238
|
+
"""Portfolio-level risk calculations."""
|
|
239
|
+
|
|
240
|
+
def __init__(
|
|
241
|
+
self,
|
|
242
|
+
returns: pd.DataFrame,
|
|
243
|
+
weights: Optional[pd.Series] = None
|
|
244
|
+
):
|
|
245
|
+
"""
|
|
246
|
+
Args:
|
|
247
|
+
returns: DataFrame with asset returns (columns = assets)
|
|
248
|
+
weights: Portfolio weights (default: equal weight)
|
|
249
|
+
"""
|
|
250
|
+
self.returns = returns
|
|
251
|
+
self.weights = weights if weights is not None else \
|
|
252
|
+
pd.Series(1/len(returns.columns), index=returns.columns)
|
|
253
|
+
self.ann_factor = 252
|
|
254
|
+
|
|
255
|
+
def portfolio_return(self) -> float:
|
|
256
|
+
"""Weighted portfolio return."""
|
|
257
|
+
return (self.returns @ self.weights).mean() * self.ann_factor
|
|
258
|
+
|
|
259
|
+
def portfolio_volatility(self) -> float:
|
|
260
|
+
"""Portfolio volatility."""
|
|
261
|
+
cov_matrix = self.returns.cov() * self.ann_factor
|
|
262
|
+
port_var = self.weights @ cov_matrix @ self.weights
|
|
263
|
+
return np.sqrt(port_var)
|
|
264
|
+
|
|
265
|
+
def marginal_risk_contribution(self) -> pd.Series:
|
|
266
|
+
"""Marginal contribution to risk by asset."""
|
|
267
|
+
cov_matrix = self.returns.cov() * self.ann_factor
|
|
268
|
+
port_vol = self.portfolio_volatility()
|
|
269
|
+
|
|
270
|
+
# Marginal contribution
|
|
271
|
+
mrc = (cov_matrix @ self.weights) / port_vol
|
|
272
|
+
return mrc
|
|
273
|
+
|
|
274
|
+
def component_risk(self) -> pd.Series:
|
|
275
|
+
"""Component contribution to total risk."""
|
|
276
|
+
mrc = self.marginal_risk_contribution()
|
|
277
|
+
return self.weights * mrc
|
|
278
|
+
|
|
279
|
+
def risk_parity_weights(self, target_vol: float = None) -> pd.Series:
|
|
280
|
+
"""Calculate risk parity weights."""
|
|
281
|
+
from scipy.optimize import minimize
|
|
282
|
+
|
|
283
|
+
n = len(self.returns.columns)
|
|
284
|
+
cov_matrix = self.returns.cov() * self.ann_factor
|
|
285
|
+
|
|
286
|
+
def risk_budget_objective(weights):
|
|
287
|
+
port_vol = np.sqrt(weights @ cov_matrix @ weights)
|
|
288
|
+
mrc = (cov_matrix @ weights) / port_vol
|
|
289
|
+
rc = weights * mrc
|
|
290
|
+
target_rc = port_vol / n # Equal risk contribution
|
|
291
|
+
return np.sum((rc - target_rc) ** 2)
|
|
292
|
+
|
|
293
|
+
constraints = [
|
|
294
|
+
{"type": "eq", "fun": lambda w: np.sum(w) - 1}, # Weights sum to 1
|
|
295
|
+
]
|
|
296
|
+
bounds = [(0.01, 1.0) for _ in range(n)] # Min 1%, max 100%
|
|
297
|
+
x0 = np.array([1/n] * n)
|
|
298
|
+
|
|
299
|
+
result = minimize(
|
|
300
|
+
risk_budget_objective,
|
|
301
|
+
x0,
|
|
302
|
+
method="SLSQP",
|
|
303
|
+
bounds=bounds,
|
|
304
|
+
constraints=constraints
|
|
305
|
+
)
|
|
306
|
+
|
|
307
|
+
return pd.Series(result.x, index=self.returns.columns)
|
|
308
|
+
|
|
309
|
+
def correlation_matrix(self) -> pd.DataFrame:
|
|
310
|
+
"""Asset correlation matrix."""
|
|
311
|
+
return self.returns.corr()
|
|
312
|
+
|
|
313
|
+
def diversification_ratio(self) -> float:
|
|
314
|
+
"""Diversification ratio (higher = more diversified)."""
|
|
315
|
+
asset_vols = self.returns.std() * np.sqrt(self.ann_factor)
|
|
316
|
+
weighted_vol = (self.weights * asset_vols).sum()
|
|
317
|
+
port_vol = self.portfolio_volatility()
|
|
318
|
+
return weighted_vol / port_vol if port_vol > 0 else 1
|
|
319
|
+
|
|
320
|
+
def tracking_error(self, benchmark_returns: pd.Series) -> float:
|
|
321
|
+
"""Tracking error vs benchmark."""
|
|
322
|
+
port_returns = self.returns @ self.weights
|
|
323
|
+
active_returns = port_returns - benchmark_returns
|
|
324
|
+
return active_returns.std() * np.sqrt(self.ann_factor)
|
|
325
|
+
|
|
326
|
+
def conditional_correlation(
|
|
327
|
+
self,
|
|
328
|
+
threshold_percentile: float = 10
|
|
329
|
+
) -> pd.DataFrame:
|
|
330
|
+
"""Correlation during stress periods."""
|
|
331
|
+
port_returns = self.returns @ self.weights
|
|
332
|
+
threshold = np.percentile(port_returns, threshold_percentile)
|
|
333
|
+
stress_mask = port_returns <= threshold
|
|
334
|
+
return self.returns[stress_mask].corr()
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
### Pattern 3: Rolling Risk Metrics
|
|
338
|
+
|
|
339
|
+
```python
|
|
340
|
+
class RollingRiskMetrics:
|
|
341
|
+
"""Rolling window risk calculations."""
|
|
342
|
+
|
|
343
|
+
def __init__(self, returns: pd.Series, window: int = 63):
|
|
344
|
+
"""
|
|
345
|
+
Args:
|
|
346
|
+
returns: Return series
|
|
347
|
+
window: Rolling window size (default: 63 = ~3 months)
|
|
348
|
+
"""
|
|
349
|
+
self.returns = returns
|
|
350
|
+
self.window = window
|
|
351
|
+
|
|
352
|
+
def rolling_volatility(self, annualized: bool = True) -> pd.Series:
|
|
353
|
+
"""Rolling volatility."""
|
|
354
|
+
vol = self.returns.rolling(self.window).std()
|
|
355
|
+
if annualized:
|
|
356
|
+
vol *= np.sqrt(252)
|
|
357
|
+
return vol
|
|
358
|
+
|
|
359
|
+
def rolling_sharpe(self, rf_rate: float = 0.02) -> pd.Series:
|
|
360
|
+
"""Rolling Sharpe ratio."""
|
|
361
|
+
rolling_return = self.returns.rolling(self.window).mean() * 252
|
|
362
|
+
rolling_vol = self.rolling_volatility()
|
|
363
|
+
return (rolling_return - rf_rate) / rolling_vol
|
|
364
|
+
|
|
365
|
+
def rolling_var(self, confidence: float = 0.95) -> pd.Series:
|
|
366
|
+
"""Rolling historical VaR."""
|
|
367
|
+
return self.returns.rolling(self.window).apply(
|
|
368
|
+
lambda x: -np.percentile(x, (1 - confidence) * 100),
|
|
369
|
+
raw=True
|
|
370
|
+
)
|
|
371
|
+
|
|
372
|
+
def rolling_max_drawdown(self) -> pd.Series:
|
|
373
|
+
"""Rolling maximum drawdown."""
|
|
374
|
+
def max_dd(returns):
|
|
375
|
+
cumulative = (1 + returns).cumprod()
|
|
376
|
+
running_max = cumulative.cummax()
|
|
377
|
+
drawdowns = (cumulative - running_max) / running_max
|
|
378
|
+
return drawdowns.min()
|
|
379
|
+
|
|
380
|
+
return self.returns.rolling(self.window).apply(max_dd, raw=False)
|
|
381
|
+
|
|
382
|
+
def rolling_beta(self, market_returns: pd.Series) -> pd.Series:
|
|
383
|
+
"""Rolling beta vs market."""
|
|
384
|
+
def calc_beta(window_data):
|
|
385
|
+
port_ret = window_data.iloc[:, 0]
|
|
386
|
+
mkt_ret = window_data.iloc[:, 1]
|
|
387
|
+
cov = np.cov(port_ret, mkt_ret)
|
|
388
|
+
return cov[0, 1] / cov[1, 1] if cov[1, 1] != 0 else 0
|
|
389
|
+
|
|
390
|
+
combined = pd.concat([self.returns, market_returns], axis=1)
|
|
391
|
+
return combined.rolling(self.window).apply(
|
|
392
|
+
lambda x: calc_beta(x.to_frame()),
|
|
393
|
+
raw=False
|
|
394
|
+
).iloc[:, 0]
|
|
395
|
+
|
|
396
|
+
def volatility_regime(
|
|
397
|
+
self,
|
|
398
|
+
low_threshold: float = 0.10,
|
|
399
|
+
high_threshold: float = 0.20
|
|
400
|
+
) -> pd.Series:
|
|
401
|
+
"""Classify volatility regime."""
|
|
402
|
+
vol = self.rolling_volatility()
|
|
403
|
+
|
|
404
|
+
def classify(v):
|
|
405
|
+
if v < low_threshold:
|
|
406
|
+
return "low"
|
|
407
|
+
elif v > high_threshold:
|
|
408
|
+
return "high"
|
|
409
|
+
else:
|
|
410
|
+
return "normal"
|
|
411
|
+
|
|
412
|
+
return vol.apply(classify)
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
### Pattern 4: Stress Testing
|
|
416
|
+
|
|
417
|
+
```python
|
|
418
|
+
class StressTester:
|
|
419
|
+
"""Historical and hypothetical stress testing."""
|
|
420
|
+
|
|
421
|
+
# Historical crisis periods
|
|
422
|
+
HISTORICAL_SCENARIOS = {
|
|
423
|
+
"2008_financial_crisis": ("2008-09-01", "2009-03-31"),
|
|
424
|
+
"2020_covid_crash": ("2020-02-19", "2020-03-23"),
|
|
425
|
+
"2022_rate_hikes": ("2022-01-01", "2022-10-31"),
|
|
426
|
+
"dot_com_bust": ("2000-03-01", "2002-10-01"),
|
|
427
|
+
"flash_crash_2010": ("2010-05-06", "2010-05-06"),
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
def __init__(self, returns: pd.Series, weights: pd.Series = None):
|
|
431
|
+
self.returns = returns
|
|
432
|
+
self.weights = weights
|
|
433
|
+
|
|
434
|
+
def historical_stress_test(
|
|
435
|
+
self,
|
|
436
|
+
scenario_name: str,
|
|
437
|
+
historical_data: pd.DataFrame
|
|
438
|
+
) -> Dict[str, float]:
|
|
439
|
+
"""Test portfolio against historical crisis period."""
|
|
440
|
+
if scenario_name not in self.HISTORICAL_SCENARIOS:
|
|
441
|
+
raise ValueError(f"Unknown scenario: {scenario_name}")
|
|
442
|
+
|
|
443
|
+
start, end = self.HISTORICAL_SCENARIOS[scenario_name]
|
|
444
|
+
|
|
445
|
+
# Get returns during crisis
|
|
446
|
+
crisis_returns = historical_data.loc[start:end]
|
|
447
|
+
|
|
448
|
+
if self.weights is not None:
|
|
449
|
+
port_returns = (crisis_returns @ self.weights)
|
|
450
|
+
else:
|
|
451
|
+
port_returns = crisis_returns
|
|
452
|
+
|
|
453
|
+
total_return = (1 + port_returns).prod() - 1
|
|
454
|
+
max_dd = self._calculate_max_dd(port_returns)
|
|
455
|
+
worst_day = port_returns.min()
|
|
456
|
+
|
|
457
|
+
return {
|
|
458
|
+
"scenario": scenario_name,
|
|
459
|
+
"period": f"{start} to {end}",
|
|
460
|
+
"total_return": total_return,
|
|
461
|
+
"max_drawdown": max_dd,
|
|
462
|
+
"worst_day": worst_day,
|
|
463
|
+
"volatility": port_returns.std() * np.sqrt(252)
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
def hypothetical_stress_test(
|
|
467
|
+
self,
|
|
468
|
+
shocks: Dict[str, float]
|
|
469
|
+
) -> float:
|
|
470
|
+
"""
|
|
471
|
+
Test portfolio against hypothetical shocks.
|
|
472
|
+
|
|
473
|
+
Args:
|
|
474
|
+
shocks: Dict of {asset: shock_return}
|
|
475
|
+
"""
|
|
476
|
+
if self.weights is None:
|
|
477
|
+
raise ValueError("Weights required for hypothetical stress test")
|
|
478
|
+
|
|
479
|
+
total_impact = 0
|
|
480
|
+
for asset, shock in shocks.items():
|
|
481
|
+
if asset in self.weights.index:
|
|
482
|
+
total_impact += self.weights[asset] * shock
|
|
483
|
+
|
|
484
|
+
return total_impact
|
|
485
|
+
|
|
486
|
+
def monte_carlo_stress(
|
|
487
|
+
self,
|
|
488
|
+
n_simulations: int = 10000,
|
|
489
|
+
horizon_days: int = 21,
|
|
490
|
+
vol_multiplier: float = 2.0
|
|
491
|
+
) -> Dict[str, float]:
|
|
492
|
+
"""Monte Carlo stress test with elevated volatility."""
|
|
493
|
+
mean = self.returns.mean()
|
|
494
|
+
vol = self.returns.std() * vol_multiplier
|
|
495
|
+
|
|
496
|
+
simulations = np.random.normal(
|
|
497
|
+
mean,
|
|
498
|
+
vol,
|
|
499
|
+
(n_simulations, horizon_days)
|
|
500
|
+
)
|
|
501
|
+
|
|
502
|
+
total_returns = (1 + simulations).prod(axis=1) - 1
|
|
503
|
+
|
|
504
|
+
return {
|
|
505
|
+
"expected_loss": -total_returns.mean(),
|
|
506
|
+
"var_95": -np.percentile(total_returns, 5),
|
|
507
|
+
"var_99": -np.percentile(total_returns, 1),
|
|
508
|
+
"worst_case": -total_returns.min(),
|
|
509
|
+
"prob_10pct_loss": (total_returns < -0.10).mean()
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
def _calculate_max_dd(self, returns: pd.Series) -> float:
|
|
513
|
+
cumulative = (1 + returns).cumprod()
|
|
514
|
+
running_max = cumulative.cummax()
|
|
515
|
+
drawdowns = (cumulative - running_max) / running_max
|
|
516
|
+
return drawdowns.min()
|
|
517
|
+
```
|
|
518
|
+
|
|
519
|
+
## Quick Reference
|
|
520
|
+
|
|
521
|
+
```python
|
|
522
|
+
# Daily usage
|
|
523
|
+
metrics = RiskMetrics(returns)
|
|
524
|
+
print(f"Sharpe: {metrics.sharpe_ratio():.2f}")
|
|
525
|
+
print(f"Max DD: {metrics.max_drawdown():.2%}")
|
|
526
|
+
print(f"VaR 95%: {metrics.var_historical(0.95):.2%}")
|
|
527
|
+
|
|
528
|
+
# Full summary
|
|
529
|
+
summary = metrics.summary()
|
|
530
|
+
for metric, value in summary.items():
|
|
531
|
+
print(f"{metric}: {value:.4f}")
|
|
532
|
+
```
|
|
533
|
+
|
|
534
|
+
## Best Practices
|
|
535
|
+
|
|
536
|
+
### Do's
|
|
537
|
+
- **Use multiple metrics** - No single metric captures all risk
|
|
538
|
+
- **Consider tail risk** - VaR isn't enough, use CVaR
|
|
539
|
+
- **Rolling analysis** - Risk changes over time
|
|
540
|
+
- **Stress test** - Historical and hypothetical
|
|
541
|
+
- **Document assumptions** - Distribution, lookback, etc.
|
|
542
|
+
|
|
543
|
+
### Don'ts
|
|
544
|
+
- **Don't rely on VaR alone** - Underestimates tail risk
|
|
545
|
+
- **Don't assume normality** - Returns are fat-tailed
|
|
546
|
+
- **Don't ignore correlation** - Increases in stress
|
|
547
|
+
- **Don't use short lookbacks** - Miss regime changes
|
|
548
|
+
- **Don't forget transaction costs** - Affects realized risk
|
|
549
|
+
|
|
550
|
+
## Resources
|
|
551
|
+
|
|
552
|
+
- [Risk Management and Financial Institutions (John Hull)](https://www.amazon.com/Risk-Management-Financial-Institutions-5th/dp/1119448115)
|
|
553
|
+
- [Quantitative Risk Management (McNeil, Frey, Embrechts)](https://www.amazon.com/Quantitative-Risk-Management-Techniques-Princeton/dp/0691166277)
|
|
554
|
+
- [pyfolio Documentation](https://quantopian.github.io/pyfolio/)
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ruby-pro
|
|
3
|
+
description: Write idiomatic Ruby code with metaprogramming, Rails patterns, and
|
|
4
|
+
performance optimization. Specializes in Ruby on Rails, gem development, and
|
|
5
|
+
testing frameworks. Use PROACTIVELY for Ruby refactoring, optimization, or
|
|
6
|
+
complex Ruby features.
|
|
7
|
+
metadata:
|
|
8
|
+
model: inherit
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Use this skill when
|
|
12
|
+
|
|
13
|
+
- Working on ruby pro tasks or workflows
|
|
14
|
+
- Needing guidance, best practices, or checklists for ruby pro
|
|
15
|
+
|
|
16
|
+
## Do not use this skill when
|
|
17
|
+
|
|
18
|
+
- The task is unrelated to ruby pro
|
|
19
|
+
- You need a different domain or tool outside this scope
|
|
20
|
+
|
|
21
|
+
## Instructions
|
|
22
|
+
|
|
23
|
+
- Clarify goals, constraints, and required inputs.
|
|
24
|
+
- Apply relevant best practices and validate outcomes.
|
|
25
|
+
- Provide actionable steps and verification.
|
|
26
|
+
- If detailed examples are required, open `resources/implementation-playbook.md`.
|
|
27
|
+
|
|
28
|
+
You are a Ruby expert specializing in clean, maintainable, and performant Ruby code.
|
|
29
|
+
|
|
30
|
+
## Focus Areas
|
|
31
|
+
|
|
32
|
+
- Ruby metaprogramming (modules, mixins, DSLs)
|
|
33
|
+
- Rails patterns (ActiveRecord, controllers, views)
|
|
34
|
+
- Gem development and dependency management
|
|
35
|
+
- Performance optimization and profiling
|
|
36
|
+
- Testing with RSpec and Minitest
|
|
37
|
+
- Code quality with RuboCop and static analysis
|
|
38
|
+
|
|
39
|
+
## Approach
|
|
40
|
+
|
|
41
|
+
1. Embrace Ruby's expressiveness and metaprogramming features
|
|
42
|
+
2. Follow Ruby and Rails conventions and idioms
|
|
43
|
+
3. Use blocks and enumerables effectively
|
|
44
|
+
4. Handle exceptions with proper rescue/ensure patterns
|
|
45
|
+
5. Optimize for readability first, performance second
|
|
46
|
+
|
|
47
|
+
## Output
|
|
48
|
+
|
|
49
|
+
- Idiomatic Ruby code following community conventions
|
|
50
|
+
- Rails applications with MVC architecture
|
|
51
|
+
- RSpec/Minitest tests with fixtures and mocks
|
|
52
|
+
- Gem specifications with proper versioning
|
|
53
|
+
- Performance benchmarks with benchmark-ips
|
|
54
|
+
- Refactoring suggestions for legacy Ruby code
|
|
55
|
+
|
|
56
|
+
Favor Ruby's expressiveness. Include Gemfile and .rubocop.yml when relevant.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rust-async-patterns
|
|
3
|
+
description: Master Rust async programming with Tokio, async traits, error handling, and concurrent patterns. Use when building async Rust applications, implementing concurrent systems, or debugging async code.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Rust Async Patterns
|
|
7
|
+
|
|
8
|
+
Production patterns for async Rust programming with Tokio runtime, including tasks, channels, streams, and error handling.
|
|
9
|
+
|
|
10
|
+
## Use this skill when
|
|
11
|
+
|
|
12
|
+
- Building async Rust applications
|
|
13
|
+
- Implementing concurrent network services
|
|
14
|
+
- Using Tokio for async I/O
|
|
15
|
+
- Handling async errors properly
|
|
16
|
+
- Debugging async code issues
|
|
17
|
+
- Optimizing async performance
|
|
18
|
+
|
|
19
|
+
## Do not use this skill when
|
|
20
|
+
|
|
21
|
+
- The task is unrelated to rust async patterns
|
|
22
|
+
- You need a different domain or tool outside this scope
|
|
23
|
+
|
|
24
|
+
## Instructions
|
|
25
|
+
|
|
26
|
+
- Clarify goals, constraints, and required inputs.
|
|
27
|
+
- Apply relevant best practices and validate outcomes.
|
|
28
|
+
- Provide actionable steps and verification.
|
|
29
|
+
- If detailed examples are required, open `resources/implementation-playbook.md`.
|
|
30
|
+
|
|
31
|
+
## Resources
|
|
32
|
+
|
|
33
|
+
- `resources/implementation-playbook.md` for detailed patterns and examples.
|