diff --git a/.gitignore b/.gitignore
index 581f276..ad52b48 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,4 @@
data
build
out.txt
-result.csv
\ No newline at end of file
+*.csv
\ No newline at end of file
diff --git a/data.ipynb b/data.ipynb
index 9e0ca72..a747e50 100644
--- a/data.ipynb
+++ b/data.ipynb
@@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": 20,
"id": "2acce44b",
"metadata": {},
"outputs": [],
@@ -12,7 +12,7 @@
},
{
"cell_type": "code",
- "execution_count": 14,
+ "execution_count": 21,
"id": "5ba70af7",
"metadata": {},
"outputs": [
@@ -111,7 +111,7 @@
"7317758 0.410369 "
]
},
- "execution_count": 14,
+ "execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
@@ -124,8 +124,8 @@
},
{
"cell_type": "code",
- "execution_count": 19,
- "id": "d4b22f3b",
+ "execution_count": 23,
+ "id": "3b320537",
"metadata": {},
"outputs": [
{
@@ -150,67 +150,190 @@
"
\n",
" | \n",
" Timestamp | \n",
- " Low | \n",
- " High | \n",
" Open | \n",
+ " High | \n",
+ " Low | \n",
" Close | \n",
+ " Volume | \n",
+ " Avg | \n",
"
\n",
" \n",
" \n",
" \n",
- " | 5078 | \n",
- " 2025-11-26 | \n",
- " 86304.0 | \n",
- " 90646.0 | \n",
- " 87331.0 | \n",
- " 90477.0 | \n",
+ " 7317754 | \n",
+ " 2025-11-30 23:55:00+00:00 | \n",
+ " 90405.0 | \n",
+ " 90452.0 | \n",
+ " 90403.0 | \n",
+ " 90452.0 | \n",
+ " 0.531700 | \n",
+ " 90427.5 | \n",
"
\n",
" \n",
- " | 5079 | \n",
- " 2025-11-27 | \n",
- " 90091.0 | \n",
- " 91926.0 | \n",
- " 90476.0 | \n",
- " 91325.0 | \n",
+ " 7317755 | \n",
+ " 2025-11-30 23:56:00+00:00 | \n",
+ " 90452.0 | \n",
+ " 90481.0 | \n",
+ " 90420.0 | \n",
+ " 90420.0 | \n",
+ " 0.055547 | \n",
+ " 90450.5 | \n",
"
\n",
" \n",
- " | 5080 | \n",
- " 2025-11-28 | \n",
- " 90233.0 | \n",
- " 93091.0 | \n",
- " 91326.0 | \n",
- " 90913.0 | \n",
+ " 7317756 | \n",
+ " 2025-11-30 23:57:00+00:00 | \n",
+ " 90412.0 | \n",
+ " 90458.0 | \n",
+ " 90396.0 | \n",
+ " 90435.0 | \n",
+ " 0.301931 | \n",
+ " 90427.0 | \n",
"
\n",
" \n",
- " | 5081 | \n",
- " 2025-11-29 | \n",
- " 90216.0 | \n",
- " 91179.0 | \n",
- " 90913.0 | \n",
- " 90832.0 | \n",
- "
\n",
- " \n",
- " | 5082 | \n",
- " 2025-11-30 | \n",
+ " 7317757 | \n",
+ " 2025-11-30 23:58:00+00:00 | \n",
+ " 90428.0 | \n",
+ " 90428.0 | \n",
+ " 90362.0 | \n",
+ " 90362.0 | \n",
+ " 4.591653 | \n",
+ " 90395.0 | \n",
+ "
\n",
+ " \n",
+ " | 7317758 | \n",
+ " 2025-11-30 23:59:00+00:00 | \n",
+ " 90363.0 | \n",
+ " 90386.0 | \n",
" 90362.0 | \n",
- " 91969.0 | \n",
- " 90832.0 | \n",
" 90382.0 | \n",
+ " 0.410369 | \n",
+ " 90374.0 | \n",
"
\n",
" \n",
"\n",
""
],
"text/plain": [
- " Timestamp Low High Open Close\n",
- "5078 2025-11-26 86304.0 90646.0 87331.0 90477.0\n",
- "5079 2025-11-27 90091.0 91926.0 90476.0 91325.0\n",
- "5080 2025-11-28 90233.0 93091.0 91326.0 90913.0\n",
- "5081 2025-11-29 90216.0 91179.0 90913.0 90832.0\n",
- "5082 2025-11-30 90362.0 91969.0 90832.0 90382.0"
+ " Timestamp Open High Low Close \\\n",
+ "7317754 2025-11-30 23:55:00+00:00 90405.0 90452.0 90403.0 90452.0 \n",
+ "7317755 2025-11-30 23:56:00+00:00 90452.0 90481.0 90420.0 90420.0 \n",
+ "7317756 2025-11-30 23:57:00+00:00 90412.0 90458.0 90396.0 90435.0 \n",
+ "7317757 2025-11-30 23:58:00+00:00 90428.0 90428.0 90362.0 90362.0 \n",
+ "7317758 2025-11-30 23:59:00+00:00 90363.0 90386.0 90362.0 90382.0 \n",
+ "\n",
+ " Volume Avg \n",
+ "7317754 0.531700 90427.5 \n",
+ "7317755 0.055547 90450.5 \n",
+ "7317756 0.301931 90427.0 \n",
+ "7317757 4.591653 90395.0 \n",
+ "7317758 0.410369 90374.0 "
]
},
- "execution_count": 19,
+ "execution_count": 23,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df['Avg'] = (df['Low'] + df['High']) / 2\n",
+ "df.tail()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "id": "4b1cd63c",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Timestamp | \n",
+ " Avg | \n",
+ " OpenMin | \n",
+ " OpenMax | \n",
+ " CloseMin | \n",
+ " CloseMax | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 5078 | \n",
+ " 2025-11-26 | \n",
+ " 88057.301736 | \n",
+ " 86312.0 | \n",
+ " 90574.0 | \n",
+ " 86323.0 | \n",
+ " 90574.0 | \n",
+ "
\n",
+ " \n",
+ " | 5079 | \n",
+ " 2025-11-27 | \n",
+ " 91245.092708 | \n",
+ " 90126.0 | \n",
+ " 91888.0 | \n",
+ " 90126.0 | \n",
+ " 91925.0 | \n",
+ "
\n",
+ " \n",
+ " | 5080 | \n",
+ " 2025-11-28 | \n",
+ " 91324.308681 | \n",
+ " 90255.0 | \n",
+ " 92970.0 | \n",
+ " 90283.0 | \n",
+ " 92966.0 | \n",
+ "
\n",
+ " \n",
+ " | 5081 | \n",
+ " 2025-11-29 | \n",
+ " 90746.479514 | \n",
+ " 90265.0 | \n",
+ " 91158.0 | \n",
+ " 90279.0 | \n",
+ " 91179.0 | \n",
+ "
\n",
+ " \n",
+ " | 5082 | \n",
+ " 2025-11-30 | \n",
+ " 91187.356250 | \n",
+ " 90363.0 | \n",
+ " 91940.0 | \n",
+ " 90362.0 | \n",
+ " 91940.0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Timestamp Avg OpenMin OpenMax CloseMin CloseMax\n",
+ "5078 2025-11-26 88057.301736 86312.0 90574.0 86323.0 90574.0\n",
+ "5079 2025-11-27 91245.092708 90126.0 91888.0 90126.0 91925.0\n",
+ "5080 2025-11-28 91324.308681 90255.0 92970.0 90283.0 92966.0\n",
+ "5081 2025-11-29 90746.479514 90265.0 91158.0 90279.0 91179.0\n",
+ "5082 2025-11-30 91187.356250 90363.0 91940.0 90362.0 91940.0"
+ ]
+ },
+ "execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
@@ -218,7 +341,13 @@
"source": [
"df_days = (\n",
" df.groupby(df[\"Timestamp\"].dt.date)\n",
- " .agg({\"Low\": \"min\", \"High\": \"max\", \"Open\": \"first\", \"Close\": \"last\"})\n",
+ " .agg(\n",
+ " Avg=(\"Avg\", \"mean\"),\n",
+ " OpenMin=(\"Open\", \"min\"),\n",
+ " OpenMax=(\"Open\", \"max\"),\n",
+ " CloseMin=(\"Close\", \"min\"),\n",
+ " CloseMax=(\"Close\", \"max\"),\n",
+ " )\n",
" .reset_index()\n",
")\n",
"df_days.tail()"
@@ -226,111 +355,7 @@
},
{
"cell_type": "code",
- "execution_count": 21,
- "id": "91823496",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " Timestamp | \n",
- " Low | \n",
- " High | \n",
- " Open | \n",
- " Close | \n",
- " Avg | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " | 5078 | \n",
- " 2025-11-26 | \n",
- " 86304.0 | \n",
- " 90646.0 | \n",
- " 87331.0 | \n",
- " 90477.0 | \n",
- " 88475.0 | \n",
- "
\n",
- " \n",
- " | 5079 | \n",
- " 2025-11-27 | \n",
- " 90091.0 | \n",
- " 91926.0 | \n",
- " 90476.0 | \n",
- " 91325.0 | \n",
- " 91008.5 | \n",
- "
\n",
- " \n",
- " | 5080 | \n",
- " 2025-11-28 | \n",
- " 90233.0 | \n",
- " 93091.0 | \n",
- " 91326.0 | \n",
- " 90913.0 | \n",
- " 91662.0 | \n",
- "
\n",
- " \n",
- " | 5081 | \n",
- " 2025-11-29 | \n",
- " 90216.0 | \n",
- " 91179.0 | \n",
- " 90913.0 | \n",
- " 90832.0 | \n",
- " 90697.5 | \n",
- "
\n",
- " \n",
- " | 5082 | \n",
- " 2025-11-30 | \n",
- " 90362.0 | \n",
- " 91969.0 | \n",
- " 90832.0 | \n",
- " 90382.0 | \n",
- " 91165.5 | \n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " Timestamp Low High Open Close Avg\n",
- "5078 2025-11-26 86304.0 90646.0 87331.0 90477.0 88475.0\n",
- "5079 2025-11-27 90091.0 91926.0 90476.0 91325.0 91008.5\n",
- "5080 2025-11-28 90233.0 93091.0 91326.0 90913.0 91662.0\n",
- "5081 2025-11-29 90216.0 91179.0 90913.0 90832.0 90697.5\n",
- "5082 2025-11-30 90362.0 91969.0 90832.0 90382.0 91165.5"
- ]
- },
- "execution_count": 21,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "df_days[\"Avg\"] = (df_days[\"Low\"] + df_days[\"High\"]) / 2\n",
- "df_days.tail()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 25,
+ "execution_count": 26,
"id": "9a7b3310",
"metadata": {},
"outputs": [
@@ -358,6 +383,8 @@
" start_date | \n",
" end_date | \n",
" min_open | \n",
+ " max_open | \n",
+ " min_close | \n",
" max_close | \n",
" start_avg | \n",
" end_avg | \n",
@@ -366,76 +393,86 @@
" \n",
" \n",
" \n",
- " | 335 | \n",
+ " 316 | \n",
" 2025-02-27 | \n",
- " 2025-04-23 | \n",
- " 76252.0 | \n",
- " 94273.0 | \n",
- " 84801.5 | \n",
- " 93335.0 | \n",
- " 0.100629 | \n",
+ " 2025-04-25 | \n",
+ " 74509.0 | \n",
+ " 95801.0 | \n",
+ " 74515.0 | \n",
+ " 95800.0 | \n",
+ " 85166.063889 | \n",
+ " 94303.907292 | \n",
+ " 0.107294 | \n",
"
\n",
" \n",
- " | 336 | \n",
- " 2025-04-24 | \n",
- " 2025-05-09 | \n",
- " 93730.0 | \n",
- " 103261.0 | \n",
- " 92867.5 | \n",
- " 103341.0 | \n",
- " 0.112779 | \n",
+ " 317 | \n",
+ " 2025-04-26 | \n",
+ " 2025-05-11 | \n",
+ " 92877.0 | \n",
+ " 104971.0 | \n",
+ " 92872.0 | \n",
+ " 104965.0 | \n",
+ " 94500.950347 | \n",
+ " 104182.167708 | \n",
+ " 0.102446 | \n",
"
\n",
" \n",
- " | 337 | \n",
- " 2025-05-10 | \n",
+ " 318 | \n",
+ " 2025-05-12 | \n",
" 2025-07-11 | \n",
- " 100990.0 | \n",
- " 117579.0 | \n",
- " 103915.0 | \n",
- " 117032.5 | \n",
- " 0.126233 | \n",
+ " 98384.0 | \n",
+ " 118833.0 | \n",
+ " 98382.0 | \n",
+ " 118839.0 | \n",
+ " 103569.791319 | \n",
+ " 117463.666667 | \n",
+ " 0.134150 | \n",
"
\n",
" \n",
- " | 338 | \n",
+ " 319 | \n",
" 2025-07-12 | \n",
" 2025-11-04 | \n",
- " 106470.0 | \n",
- " 124728.0 | \n",
- " 117599.0 | \n",
- " 103079.0 | \n",
- " 0.123470 | \n",
+ " 98944.0 | \n",
+ " 126202.0 | \n",
+ " 98943.0 | \n",
+ " 126202.0 | \n",
+ " 117640.026389 | \n",
+ " 103712.985764 | \n",
+ " 0.118387 | \n",
"
\n",
" \n",
- " | 339 | \n",
+ " 320 | \n",
" 2025-11-05 | \n",
" 2025-11-18 | \n",
- " 92112.0 | \n",
- " 105972.0 | \n",
- " 101737.5 | \n",
- " 91471.0 | \n",
- " 0.100912 | \n",
+ " 89291.0 | \n",
+ " 107343.0 | \n",
+ " 89286.0 | \n",
+ " 107343.0 | \n",
+ " 102514.621181 | \n",
+ " 91705.833333 | \n",
+ " 0.105437 | \n",
"
\n",
" \n",
"\n",
""
],
"text/plain": [
- " start_date end_date min_open max_close start_avg end_avg \\\n",
- "335 2025-02-27 2025-04-23 76252.0 94273.0 84801.5 93335.0 \n",
- "336 2025-04-24 2025-05-09 93730.0 103261.0 92867.5 103341.0 \n",
- "337 2025-05-10 2025-07-11 100990.0 117579.0 103915.0 117032.5 \n",
- "338 2025-07-12 2025-11-04 106470.0 124728.0 117599.0 103079.0 \n",
- "339 2025-11-05 2025-11-18 92112.0 105972.0 101737.5 91471.0 \n",
+ " start_date end_date min_open max_open min_close max_close \\\n",
+ "316 2025-02-27 2025-04-25 74509.0 95801.0 74515.0 95800.0 \n",
+ "317 2025-04-26 2025-05-11 92877.0 104971.0 92872.0 104965.0 \n",
+ "318 2025-05-12 2025-07-11 98384.0 118833.0 98382.0 118839.0 \n",
+ "319 2025-07-12 2025-11-04 98944.0 126202.0 98943.0 126202.0 \n",
+ "320 2025-11-05 2025-11-18 89291.0 107343.0 89286.0 107343.0 \n",
"\n",
- " change \n",
- "335 0.100629 \n",
- "336 0.112779 \n",
- "337 0.126233 \n",
- "338 0.123470 \n",
- "339 0.100912 "
+ " start_avg end_avg change \n",
+ "316 85166.063889 94303.907292 0.107294 \n",
+ "317 94500.950347 104182.167708 0.102446 \n",
+ "318 103569.791319 117463.666667 0.134150 \n",
+ "319 117640.026389 103712.985764 0.118387 \n",
+ "320 102514.621181 91705.833333 0.105437 "
]
},
- "execution_count": 25,
+ "execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
@@ -455,8 +492,10 @@
" intervals.append({\n",
" \"start_date\": df_days.loc[start_idx, \"Timestamp\"],\n",
" \"end_date\": df_days.loc[i, \"Timestamp\"],\n",
- " \"min_open\": interval[\"Open\"].min(),\n",
- " \"max_close\": interval[\"Close\"].max(),\n",
+ " \"min_open\": interval[\"OpenMin\"].min(),\n",
+ " \"max_open\": interval[\"OpenMax\"].max(),\n",
+ " \"min_close\": interval[\"CloseMin\"].min(),\n",
+ " \"max_close\": interval[\"CloseMax\"].max(),\n",
" \"start_avg\": price_base,\n",
" \"end_avg\": price_now,\n",
" \"change\": change,\n",
@@ -470,6 +509,14 @@
"df_intervals = pd.DataFrame(intervals)\n",
"df_intervals.tail()"
]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "07f1cd58",
+ "metadata": {},
+ "outputs": [],
+ "source": []
}
],
"metadata": {