> ## Documentation Index
> Fetch the complete documentation index at: https://docs.models.dunsky.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Spécification solaire et stockage SAM

> Spécifier les flux clients, rémunération solaire, stockage, courbes financières, diffusion, concurrence et sorties de déploiement SAM.

SAM évalue solaire, solaire avec stockage et stockage autonome par segment. Le calcul actif importe le classeur, construit les scénarios, évalue l’économie client, estime l’adoption, met les options en concurrence et produit les résultats.

## Entrées, unités et axes

`Scenarios` sélectionne les segments. Les feuilles technologiques décrivent tailles, CAPEX, OPEX, marchés maximaux, incitatifs, profils, financement et adoption. Les paramètres utilisent `Input`, les séries annuelles `Year`. `Sector Selector` et les nouvelles feuilles d’incitatifs de stockage ont un traitement optionnel; les autres feuilles et colonnes directement indexées sont requises.

Chaque année d’acquisition correspond à une colonne de flux sur la durée de projet, temps zéro inclus. Les prévisions comprennent une observation initiale d’installations et les années suivantes. Aligner positions, durées et années tarifaires; les séries doivent couvrir la durée des achats en fin d’horizon.

| Quantité | Contrat |
| - | - |
| Taille PV | kW × profil de production correspondant |
| Taille et durée du stockage | kW et heures, produit en kWh |
| CAPEX PV | monnaie/kW dans le produit taille × coût |
| CAPEX stockage | monnaie/kWh dans taille × durée × coût |
| Profils et tarifs | Intervalles concordants; somme de kW horaires en kWh |
| Clients et parts | Nombres et fractions; pourcentages seulement si conversion explicite |
| Taux | Fractions par période correspondante |

Le CLI analyse `--inputs-folder`, mais `main` transmet directement la constante de chemin configurée à `import_data`. Ce paramètre ne sélectionne donc pas le classeur exécuté. L’importation programmatique accepte un chemin.

## Production et rémunération solaire

Pour profil $g_h$, taille $K_y$ et charge $L_h$ :

$$
P_{y,h}=K_yg_h,\quad X_{y,h}=\max(P_{y,h}-L_h,0),\quad S_{y,h}=P_{y,h}-X_{y,h}
$$

$X$ est l’export et $S$ l’autoconsommation. Le multiplicateur de production sur la durée est `-npf.pv(r, age, 0, 1)`, soit $(1+r)^{-age}$, différent de $(1-r)^{age}$. Le mesurage net valorise export et autoconsommation au tarif temporel sélectionné, puis applique multiplicateur et taxes. La facturation nette distingue les deux quantités; le tarif de rachat suit sa branche contractuelle. Les tarifs utilisent des masques mois/heures et des trajectoires d’augmentation.

## Investissement, exploitation et financement

L’investissement PV vaut taille × CAPEX × $(1+sales\_tax)$. Le stockage ajoute puissance × durée × CAPEX et remplacements applicables. La branche solaire-stockage traite explicitement zéro, un ou deux remplacements, avec coûts futurs aux positions de durée de vie du stockage. Prévoir une couverture suffisante des coûts.

Achat direct, prêt et autres financements créent des flux distincts. Mise de fonds, intérêts, taxes, incitatifs et exploitation ne sont pas interchangeables. Ils sont combinés avant le calcul économique et l’adoption; ne pas soustraire une deuxième fois les incitatifs.

### Branches exactes de financement

Soit $C_y$ le coût à l’acquisition $y$, $d$ la mise de fonds, $n$ la durée et $r_y$ le taux. Pour principal positif $P$, `npf.pmt` donne $PMT(r,n,P)=-Pr/[1-(1+r)^{-n}]$ si $r$ est non nul, et $-P/n$ sinon.

* `Direct Purchase` : $-C_y$ au temps zéro, puis zéros sur les autres lignes de durée de projet.
* `Lease` : $-d_{lease}C_y$ initialement, puis $n_{lease}$ paiements. Le principal est $C_y(1-d_{lease})+\sum_{t>n_{lease}}OPEX_{y,t}$, les OPEX étant négatifs. Le code utilise la tranche d’OPEX **après** la durée du bail. Ce comportement implémenté ne doit pas être remplacé par une hypothèse conventionnelle de bail.
* Toute autre chaîne entre dans la branche prêt : $-d_{loan}C_y$ initialement, puis $n_{loan}$ paiements $PMT(r_y,n_{loan},C_y(1-d_{loan}))$. Le taux est choisi dans `Loan_Rate` par année d’acquisition et type de client, pas par un scalaire commun.

Le tableau final est additionné au tableau `purchase` de durée de projet avec remplacement des cellules absentes par zéro. Une durée de paiement supérieure au projet peut donc prolonger le résultat aligné. L’exploitation est calculée séparément; conserver le retrait des OPEX initiaux propre au bail pour reproduire les flux combinés.

## Applications du stockage

Revenus et économies de puissance suivent la branche d’application. L’autoconsommation utilise la première ligne de taille de stockage, calcule capacité kWh = kW × durée, recharge depuis l’export PV et décharge dans les importations sous limite de puissance :

$$
u_h=\min(X_h,P_{ES}),\quad v_h=\min(Import_h,P_{ES}),\quad SOC_h=\operatorname{clip}(SOC_{h-1}+u_h-v_h,0,E_{ES})
$$

Cette forme suppose les intervalles d’une heure du code. L’état de charge est réinitialisé au début de l’année simulée. Aucun multiplicateur explicite de rendement aller-retour n’est inclus dans cette récurrence. Les bénéfices livrés proviennent des variations d’état borné, pas des flux demandés non contraints. Ce n’est pas un arbitrage tarifaire optimisé. Les autres branches calculent séparément pointe et réponse à la demande; ne pas additionner leurs usages comme s’ils étaient simultanément disponibles sans contrainte.

## Réponse financière

Pour achat/prêt, le délai alternatif d’adoption est $PB^{alt}=-NPV(coûts)/moyenne(bénéfices)$, borné à la durée du projet. Le délai résidentiel rapporté cherche séparément le dernier passage ascendant à zéro du flux cumulé, avec interpolation. Le non-résidentiel utilise $\ln2/\ln(1+IRR)$ après bornage du TRI négatif à zéro. Le stockage autonome ajuste le délai borné sur 15 ans à la durée du projet.

$$
m_y=\exp(A\,PB^{alt}_y+B)
$$

Cette branche ne plafonne pas ensuite $m$ à un : les coefficients doivent rester cohérents. Pour les autres financements, $r$ est le ratio d’économies nettes de première année à la facture initiale :

$$
m(r)=\begin{cases}e^{3.93r-3.02},&r<0\\Q(r),&0<r\le1.5\\0.99,&r>1.5\\0,&r=0\end{cases}
$$

$$
Q(r)=-0.105168269230765r^5+0.875491695804174r^4-2.39574227855474r^3+2.28287077505825r^2+0.167472319347325r+0.0490034965034988
$$

Le cas exactement zéro découle des masques stricts. `nan_to_num` est appliqué au résultat de cette réponse; il ne valide pas toutes les divisions par facture nulle ni les autres métriques indéfinies.

## Diffusion et adoption avant concurrence

Initialiser le temps équivalent à `Time in Market`, puis avancer d’un an à chaque position, même si le marché maximal diminue :

$$
F_y=\frac{1-e^{-(p+q_y)(t_y+2)}}{1+(q_y/p)e^{-(p+q_y)(t_y+2)}}
$$

`None` ou `No` laisse $q$ inchangé. `Low`, `Moderate`, `High` utilisent $q_y=q_0(1+ay)$ avec $a=0.005,0.01,0.02$. Une autre chaîne provoque une erreur. Le candidat cumulatif est $M_ym_yF_y$; ajouter les installations initiales, puis imposer le maximum cumulatif pour éviter une diminution avant concurrence.

## Concurrence et annualisation

Le groupe partage segment, rémunération solaire, indicateurs incitatifs/ITC, financement, type de taille, CAPEX, augmentation tarifaire et facteur de capacité. Pour les candidats $n_j$ :

$$
n'_j=\begin{cases}n_j\max_k(n_k)/\sum_kn_k,&\sum_kn_k\ne0\\0,&\text{sinon}\end{cases}
$$

Le total devient le plus grand candidat, pas leur somme. Aucun maximum cumulatif après concurrence : une option peut diminuer lorsque les parts concurrentes changent.

L’adoption annuelle est la différence du cumul après concurrence, avec zéro initial. Lisser les positions intérieures par moyenne précédent/courant/suivant et conserver les extrémités. Reconstituer le cumul lissé en remplaçant la première valeur annuelle par l’adoption initiale après concurrence, puis en cumulant. Ce n’est pas un lissage direct du cumul.

## Sorties

La capacité PV est l’adoption cumulative lissée après concurrence × taille de l’année, avec taille initiale ajoutée. La capacité annuelle est la différence du cumul, pas nécessairement un nombre d’installations × taille constante. Le stockage utilise taille et adoption applicables. Les sorties comprennent adoption, déploiement, production, autoconsommation, incitatifs et diagnostics économiques. Respecter les conversions kW/MW et kWh/GWh avant d’agréger les sorties.

## Exemples et limites

1 000 clients × fraction 0,4 × diffusion 0,25 donnent 100 candidats. Si le cumul précédent est 120, le maximum avant concurrence conserve 120. Deux candidats 100 et 50 deviennent 66,666… et 33,333…, total 100, sans arrondissement entier implicite.

Contrôler factures nulles, TRI non positif/indéfini, passages du flux cumulé à zéro, couverture des coûts futurs, adoption concurrente décroissante, groupes vides et limites puissance/énergie. Les vérifications doivent conserver les axes acquisition/durée, pas seulement le total final. Les tests existants couvrent moins de cas que les branches financières/applicatives; une courbe lisse ne valide ni calibration ni hypothèses politiques.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.