preferreds-portfolio-updater — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited preferreds-portfolio-updater (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
This skill governs all updates to a BTC Treasury Preferred Portfolio Rotation Engine: a quantitative system that rotates capital daily across three preferred-stock instruments (STRC, STRD, SATA) plus cash, driven by per-instrument OLS return models, Sharpe-ratio softmax allocation, an ex-dividend drop playbook, and a BTC power-law cash overlay. The user is the CEO — the final decision-maker. Claude acts as the analyst team: it builds, checks, and recommends; it never assumes a trade was executed.
Golden rule: every update ingests ALL data since the last run — never just today. The model improves with each new data point; no observations are ever skipped.
Single Source of Truth rule: all numerical values (R², vol, coefficients, sell thresholds, skip variants, drop parameters) live ONLY in the tables of references/model-architecture.md. Narrative sections describe logic and structure but must not duplicate numbers. If narrative and table disagree, the table wins. After a regression run, update only the tables.
| File | Canonical name | Purpose |
|---|---|---|
portfolio_price_database.md | Master price store | Source of truth: prices + PORTFOLIO_SNAPSHOT (state) |
scripts/portfolio_regression.py | Regression rebuild script | Sensitivity, hold, ride, drop gate, softmax, widget blocks |
portfolio_engine.html | Output widget | The live dashboard — rebuilt each session from script output |
SKILL.md + references/ | This skill | Protocol, formulas, calibration tables, QC |
File resolution: the user's project may use versioned filenames (e.g. *_v2_1.md). If a canonical name is not found, look for the highest-versioned variant. A blank database template lives at assets/templates/portfolio_price_database.template.md.
At the start of each update session the user will have the latest database (and any script changes) uploaded to the project. Read the database — including its PORTFOLIO_SNAPSHOT — before doing anything else.
| STRC | STRD | SATA | |
|---|---|---|---|
| Issuer | Strategy | Strategy | Strive |
| Par | $100 | $100 | $100 |
| Div/period | $0.9583/mo | $2.50/qtr | $1.0625/mo |
| Annual rate | 11.50% variable | 10.00% fixed | 12.75% variable |
| Ex-div schedule | 15th of each month | Mar/Jun/Sep/Dec 15th | Last trading day of month (Exception: Nov 2025 → Dec 1) |
| Regression window | 30 days | 90 days → monthly | 30 days |
| IPO cutoff | Full dataset | Skip first 20 days | Skip first 30 days |
| holdSpec | simple (b0+b1·ptp+b2·dtex) | strd (…+b3·dtex²+b4·ptp·dtex) | sata (b0+b1·ptp+b2·dtex+b3·dtex²) |
| rideSpec | log (suppressed R²<0.50) | log (active) | log (active) |
| rideMaxDtex | 30d (monthly cycle) | 91d (quarterly cycle) | 30d (monthly cycle) |
Exact coefficients, R², vol, sell thresholds and drop parameters: see the tables in references/model-architecture.md (single source of truth).
Follow references/update-protocol.md step by step. Overview:
Collection rules and column layouts: references/data-collection.md.
scripts/portfolio_regression.py) with current prices,DTEX, BTC price + quantile table, EUR/USD, and the CEO's locked skip variants. Post-regression checks D7, M1–M7. Then present the model comparison (Step 4b).
pre-populate positions + drop state from the snapshot. Run S/DM/O checks.
confirmed positions in chat. Anti-target guard applies. Write the snapshot back to the database (P1–P5) and deliver the file for re-upload.
Severity doctrine and the full check index: references/qc-checklist.md.
Model formulas, zone logic, the drop playbook, and the BTC overlay are in references/model-architecture.md. Read it before touching coefficients or zones.
Nothing persists in Claude's memory. All session state flows through one mechanism:
database PORTFOLIO_SNAPSHOT → read at session start → lifecycle check →
widget pre-populated → CEO adjusts & trades → CEO confirms in chat →
snapshot written back → database delivered → user re-uploads to projectoriginal shares, previous B%, in-drop flags, drop entry dates, T-1 refs.
unless the CEO explicitly confirms those exact trades were executed.
re-upload. Without it, the next session starts from stale state.
dropGate and rideActive are computed outputs of every regression run, neverhardcoded or manually overridden.
failed QC. Flag the failure, diagnose, fix or mark "NOT CLEARED".
it outputs is investment advice.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.