import yfinance as yf
import pandas as pd
from datetime import datetime, timedelta
import logging
def get_data(symbols, start_date, end_date=None, frequency='daily'):
"""
Fetches historical data for one or more ETFs using yfinance.
Args:
symbols (str or list of str): Ticker symbol(s) of the ETF(s).
start (str): Start date for data retrieval (YYYY-MM-DD).
end (str, optional): End date for data retrieval (YYYY-MM-DD).
OSKAR 100% vermögenwirksame Leistungen komplett in ETF -> nur bei OSKAR
Bücher:
Gottfried Heller "Der einfache Weg zum Wohlstand"
TODO
Sparkasse
- Union Pacific (Schienenverkehr) USA
Konkurent BSNF
Faierer Wert 200 Euro
KGV 17,4
Cash Flow
Dividentet 2,7
Wächst 13,7
- Johnson & Johnson
Konkurent Rosh
KGV 16
Fairer Wert 170
Dividended 2,7
- Apple
Fairer Preis 103
Cashflow 5 %
Dividenden 0,56
- Altria (Tabac)
Riskant
Fiarer Wert 70$ = Gewinn pro Aktie 4,84 * 10 Jahres KGV 14,4
Kurs 45 $
Cashf
Accéder à des coloriages de qualité n'a jamais été aussi simple. Le web regorge de ressources gratuites qui vous permettent d'imprimer des dessins directement chez vous, sans frais. C'est une solution pratique et économique pour divertir les enfants à tout moment. Pour une source fiable et variée, consultez https://coloriageenfants.com/. Il vous suffit d'un clic pour trouver le dessin parfait pour votre enfant.
/**
* @param {string} s
* @return {number}
*/
var maxFreqSum = function(s) {
// Step 1: Define vowels for easy lookup
const vowels = new Set(['a', 'e', 'i', 'o', 'u']);
// Step 2: Create frequency maps for vowels and consonants
const vowelFreq = {};
const consonantFreq = {};
// Step 3: Loop through each character in the string
for (let char of s) {
if (vowels.has(char)) {
// It's a vowel
vowelFreq[char] = (vowelFreq[char] || 0) + 1
# Amazon Q pre block. Keep at the top of this file.
[[ -f "${HOME}/Library/Application Support/amazon-q/shell/zshrc.pre.zsh" ]] && builtin source "${HOME}/Library/Application Support/amazon-q/shell/zshrc.pre.zsh"
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
# Initialization code that may require console input (password prompts, [y/n]
# confirmations, etc.) must go above this block; everything else may go below.
# if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-
php artisan view:clear
<!--
https://jsbin.com/kiliyineca/2/edit?html,css,output
-->
<!-- /// 1 /// -->
<!-- .btn -->
<div class="btn" style="--status: success">Success</div>
<div class="btn" style="--status: danger">Danger</div>
<div class="btn" style="--status: warning">Warning</div>
<div class="btn">Else</div>
<!-- .cover -->
<div class="cover" style="--priority: medium;">Iam Cover</div>
<!-- .container -->
<div class="container">Container</div>
<!-- /// 2 /// -->
/**
* @param {string} s
* @return {boolean}
*/
var doesAliceWin = function(s) {
// Define a set containing all lowercase English vowels
const vowels = new Set(['a', 'e', 'i', 'o', 'u']);
let prefixParity = new Set();
// Initialize a counter to track the number of vowels in the string
let count = 0;
// Add initial parity (empty prefix)
prefixParity.add(0);
// Loop through each character in the string
for (let char of s) {
// If the character is a v
# Renewing Let's Encrypt Certificates with Certbot
This guide explains how to list, delete, renew, and verify Let's Encrypt certificates on an OpenWISP setup using **Certbot** and the **webroot authenticator**.
---
## 1. List Existing Certificates
To check which certificates are currently installed:
```bash
certbot certificates
```
---
## 2. Delete Existing Certificates (Optional)
If you want to force a complete re-issuance, you can delete existing certificates before renewal.
### Meth
$bytes = New-Object byte[] 32 # 256 bits = 32 bytes
[System.Security.Cryptography.RandomNumberGenerator]::Create().GetBytes($bytes)
$key = [Convert]::ToBase64String($bytes)
$key
<canvas class="canvas"></canvas>
<canvas class="water"></canvas>
<div>
<span>進捗率</span>
<span class="progress"></span>
</div>
<div>
<span>マウス座標</span>
<span class="mousePosition"></span>
</div>
<button class="trigger">スタート</button>
<canvas id="canvas"></canvas>
%session.context.initialValueIn.ValueIn%
{
"options": {
"valueIn": "{KeyFields.QuoteNum}"
}
}
# Guide complet : `type -a` vs `command -v`
## Comparaison rapide
| **Aspect** | **`command -v`** | **`type -a`** |
|------------|------------------|---------------|
| **Usage principal** | Vérifier l'existence | Debug et investigation |
| **Montre le type** | Non | Oui ("is a function", "is aliased") |
| **Montre tous les emplacements** | Non (premier seulement) | Oui (tous) |
| **Montre le code des fonctions** | Non | Oui |
| **Montre la définition des alias** | Basique | Détaillée