[{"data":1,"prerenderedAt":477},["ShallowReactive",2],{"home-work-id":3,"home-articles-id":297},[4,148,229],{"id":5,"title":6,"body":7,"category":119,"date":120,"description":121,"extension":122,"externalUrl":123,"featured":124,"locale":125,"meta":126,"navigation":124,"outcome":127,"path":132,"rank":133,"release":134,"role":135,"screenshot":136,"seo":137,"stack":138,"stem":143,"summary":144,"tier":145,"year":146,"__hash__":147},"projects\u002Fid\u002Fprojects\u002Faruna-dashboard.md","Aruna",{"type":8,"value":9,"toc":109},"minimark",[10,14,17,22,25,29,32,36,71,75,95,99,102,106],[11,12,13],"p",{},"Aruna adalah produk personal yang dibangun untuk satu titik sakit yang terus saya lihat: investor ritel Indonesia memetakan saham tanpa konteks musiman — apa yang terjadi pada pasar di sekitar siklus pemilu, kapan sektor berotasi, atau ke arah mana uang institusi sebenarnya bergerak. Data pasar mentah banyak tersedia; hampir tidak ada yang menghubungkannya ke sebuah keputusan.",[11,15,16],{},"Saya membangun semuanya sendiri: definisi produk, desain, analitik backend, frontend, dan deployment. Platform ini berjalan sebagai progressive web app.",[18,19,21],"h2",{"id":20},"masalahnya","Masalahnya",[11,23,24],{},"Investor ritel di pasar Indonesia haus pola tetapi kekurangan data. Perilaku musiman terkubur dalam bertahun-tahun sejarah, money flow institusi terkunci di dalam data transaksi broker, dan alat analisis yang menambah konteks biasanya berbayar atau menyembunyikan datanya di balik langganan.",[18,26,28],{"id":27},"peran-saya","Peran saya",[11,30,31],{},"Founder, pemilik produk, dan satu-satunya engineer. Masalah yang ambigu, pengguna nyata, tanpa spesifikasi yang menunggu — persis jenis pekerjaan yang ingin saya dikenal.",[18,33,35],{"id":34},"pekerjaan-teknis","Pekerjaan teknis",[37,38,39,47,53,59,65],"ul",{},[40,41,42,46],"li",{},[43,44,45],"strong",{},"Analisis musiman."," Grafik return historis dengan konteks siklus politik dan pemilu, plus heatmap return bulanan dan kuartalan.",[40,48,49,52],{},[43,50,51],{},"Money flow institusi."," Mesin skoring kustom yang menarik data transaksi broker untuk mengevaluasi akumulasi versus distribusi, ditampilkan sebagai skor per saham.",[40,54,55,58],{},[43,56,57],{},"Pelacak progres MSCI."," Perhitungan estimasi progres kapitalisasi pasar free-float saham IDX menuju ambang inklusi MSCI Standard dan Small Cap.",[40,60,61,64],{},[43,62,63],{},"Data local-first."," State watchlist dan portofolio hidup di browser terlebih dahulu, lalu bergabung dan sinkron ke Supabase (dengan keamanan tingkat baris) setelah pengguna masuk.",[40,66,67,70],{},[43,68,69],{},"Visualisasi interaktif."," Relative Rotation Graph, peta bubble pasar berbasis canvas, dan chart candlestick ala TradingView.",[18,72,74],{"id":73},"keputusan","Keputusan",[37,76,77,83,89],{},[40,78,79,82],{},[43,80,81],{},"Sinkronisasi local-first."," Watchlist pasar saham berubah cepat dan dibaca terus-menerus. Menjaga state lokal membuat aplikasi terasa instan sambil autentikasi terjadi di latar belakang.",[40,84,85,88],{},[43,86,87],{},"Amplop API terobfuskasi."," Aplikasi mem-proxy endpoint Yahoo Finance dan Stockbit di sisi server. Saya membungkus respons dalam amplop JSON terobfuskasi XOR agar proxy tidak mudah di-scrape.",[40,90,91,94],{},[43,92,93],{},"Cron server-side untuk analitik."," Skoring dan screening berat berjalan pada pekerjaan terjadwal, bukan di browser. Klien tetap antarmuka tipis yang cepat dan hosting tetap murah.",[18,96,98],{"id":97},"batasan","Batasan",[11,100,101],{},"Bangunan solo dengan anggaran kecil. Semua yang berbiaya berulang — komputasi analitik, pengambilan data — harus berjalan di tempat yang murah, dan frontend harus terasa cepat di mobile meski memuat chart padat data.",[18,103,105],{"id":104},"hasil","Hasil",[11,107,108],{},"Aruna berangkat dari ide yang ambigu (\"investor butuh konteks musiman\") menjadi PWA yang di-deploy dengan fitur nyata dan alur data nyata. Ini demonstrasi terkuat yang saya miliki tentang memilikinya sebuah produk dari ujung ke ujung.",{"title":110,"searchDepth":111,"depth":111,"links":112},"",2,[113,114,115,116,117,118],{"id":20,"depth":111,"text":21},{"id":27,"depth":111,"text":28},{"id":34,"depth":111,"text":35},{"id":73,"depth":111,"text":74},{"id":97,"depth":111,"text":98},{"id":104,"depth":111,"text":105},"Produk · Fintech","2026-09-16","Platform analisis pasar saham mobile-first untuk investor ritel Indonesia — konteks musiman, pergerakan uang institusi, dan state local-first.","md","https:\u002F\u002Farunaa.vercel.app",true,"id",{},[128,129,130,131],"Membangun grafik pola musiman, Relative Rotation Graph, dan skoring money flow.","Mengirim watchlist dan portofolio local-first yang disinkronkan melalui Supabase RLS.","Membungkus endpoint data pasar yang di-proxy dalam amplop respons terobfuskasi XOR.","Menjalankan analitik berat pada cron job server-side agar bundle klien tetap ringan.","\u002Fid\u002Fprojects\u002Faruna-dashboard","3","2025","Full-stack Developer","\u002Fimg\u002Fprojects\u002Faruna.png",{"title":6,"description":121},[139,140,141,142],"Next.js","Supabase","React","PWA","id\u002Fprojects\u002Faruna-dashboard","Produk finansial padat data yang saya bangun sendiri — dari ide yang ambigu hingga PWA yang berjalan — analisis musiman, pelacakan money flow institusi, dan sinkronisasi offline-first.","standard",2025,"DK7Pia4IktbrahiBf-iM7M3rbaIxmDYTH_0PEBDNtKw",{"id":149,"title":150,"body":151,"category":205,"date":120,"description":206,"extension":122,"externalUrl":207,"featured":124,"locale":125,"meta":208,"navigation":124,"outcome":209,"path":215,"rank":216,"release":217,"role":218,"screenshot":219,"seo":220,"stack":221,"stem":225,"summary":226,"tier":145,"year":227,"__hash__":228},"projects\u002Fid\u002Fprojects\u002Frealisasi-anggaran.md","BNPB Realisasi Anggaran",{"type":8,"value":152,"toc":200},[153,156,160,163,167,193,197],[11,154,155],{},"Realisasi Anggaran adalah sistem internal pertama yang saya kirim di BNPB. Aplikasi ini memindahkan alur anggaran yang semula berbasis spreadsheet ke aplikasi web tempat administrasi keuangan bisa direncanakan, dilacak, dan dilaporkan.",[18,157,159],{"id":158},"fungsinya","Fungsinya",[11,161,162],{},"Sistem dibangun mengikuti bentuk pelaksanaan anggaran pemerintah: kegiatan dan sub-kegiatannya, paket anggaran yang menjadi sumbernya, serta penyerapan anggaran seiring waktu. Pengguna mencatat penyerapan terhadap paket, lalu menghasilkan laporan yang benar-benar dipakai alur pelaporan.",[18,164,166],{"id":165},"catatan-engineering","Catatan engineering",[37,168,169,175,181,187],{},[40,170,171,174],{},[43,172,173],{},"Laravel 5.7 di atas PHP 7.1."," Framework dan runtime pada masanya, dipilih untuk standar autentikasi dan struktur CRUD yang diberikannya.",[40,176,177,180],{},[43,178,179],{},"Alur yang dilindungi autentikasi."," Tidak ada jalur data tanpa autentikasi; seluruh alur administrasi berada di belakang auth Laravel.",[40,182,183,186],{},[43,184,185],{},"Pelaporan sebagai output kelas satu."," Di luar tampilan di layar, sistem mengekspor XLSX dan PDF serta mendukung cetak — karena yang dikonsumsi bagian keuangan adalah laporan, bukan layar.",[40,188,189,192],{},[43,190,191],{},"Model anggaran yang hierarkis."," Sub-kegiatan berada di bawah kegiatan, paket di bawah sub-kegiatan, sehingga model mencerminkan cara data anggaran diagregasi.",[18,194,196],{"id":195},"tempat-dalam-perjalanan","Tempat dalam perjalanan",[11,198,199],{},"Dari sinilah pekerjaan sistem pemerintahan saya dimulai: modelkan catatannya sebelum layarnya, jadikan status eksplisit, dan jadikan output sebagai hal yang benar-benar dipakai orang. Magang yang sama menghasilkan sistem pendataan bantuan Bantuan BPBD dan pelacak surat Disposisi; lembaga yang sama kemudian mempekerjakan saya sebagai freelancer untuk SIRINE.",{"title":110,"searchDepth":111,"depth":111,"links":201},[202,203,204],{"id":158,"depth":111,"text":159},{"id":165,"depth":111,"text":166},{"id":195,"depth":111,"text":196},"Pemerintahan · Administrasi Keuangan","Sistem administrasi keuangan pemerintah untuk BNPB — perencanaan kegiatan, sub-kegiatan, paket anggaran, penyerapan anggaran, dan pelaporan dengan ekspor XLSX\u002FPDF.","https:\u002F\u002Fgithub.com\u002Framadhanep\u002Fbnpb-realisasi-anggaran",{},[210,212,213],{"Memodelkan struktur anggaran pemerintah":211},"kegiatan, sub-kegiatan, dan paket anggaran secara hierarkis.","Mencatat penyerapan anggaran lewat alur CRUD terautentikasi yang dilindungi Laravel authentication.",{"Menjadikan output pelaporan sebagai hasil utama":214},"ekspor XLSX dan PDF plus alur cetak.","\u002Fid\u002Fprojects\u002Frealisasi-anggaran","4","Jan 2019","Web Developer (Magang)","\u002Fimg\u002Fprojects\u002Frealisasi-anggaran.jpg",{"title":150,"description":206},[222,223,224],"Laravel","MySQL","PHP","id\u002Fprojects\u002Frealisasi-anggaran","Sistem administrasi keuangan berbasis Laravel yang dibangun saat magang di BNPB — mencatat kegiatan, sub-kegiatan, paket anggaran, dan penyerapan anggaran dengan alur ekspor dan pelaporan.",2019,"2-28k3zjA-CYLW0sPox6edFkdaQzIB0u9cZxRfNU1fc",{"id":230,"title":231,"body":232,"category":280,"date":120,"description":281,"extension":122,"externalUrl":282,"featured":124,"locale":125,"meta":283,"navigation":124,"outcome":284,"path":288,"rank":289,"release":290,"role":218,"screenshot":291,"seo":292,"stack":293,"stem":294,"summary":295,"tier":145,"year":227,"__hash__":296},"projects\u002Fid\u002Fprojects\u002Fbantuan-bpbd.md","BNPB Bantuan BPBD",{"type":8,"value":233,"toc":275},[234,237,239,242,244,270,272],[11,235,236],{},"Bantuan BPBD adalah sisi pengelolaan bantuan dari magang di BNPB. Jika Realisasi Anggaran melacak uang, sistem ini melacak bantuan: siapa saja regionnya, bantuan apa yang diajukan dan didistribusikan, serta bagaimana serah terimanya.",[18,238,159],{"id":158},[11,240,241],{},"Sistem berpusat pada entitas regional — provinsi, kabupaten\u002Fkota, dan pembentukan BPBD — lalu menumpuk catatan bantuan di atasnya. Cakupan meliputi jenis bantuan, proposal bantuan, dan penyaluran bantuan tingkat provinsi serta kabupaten\u002Fkota, dengan catatan detail dan tampilan agregat untuk pelaporan. Alur terkait BASTO mendukung dokumen serah terima yang meresmikan penyaluran, dengan output PDF di sisi pelaporan.",[18,243,166],{"id":165},[37,245,246,252,258,264],{},[40,247,248,251],{},[43,249,250],{},"Laravel 5.7 dengan autentikasi dan dukungan upload."," Entri data yang terautentikasi, dengan paket Laravel untuk bagian penanganan berkas seperti dokumen BASTO.",[40,253,254,257],{},[43,255,256],{},"Entitas sebelum catatan."," Model regional datang lebih dulu; setiap catatan bantuan mereferensikannya, sehingga data tetap terstruktur dan mudah dicari.",[40,259,260,263],{},[43,261,262],{},"Manajemen pengguna."," Administrasi mencakup pengelolaan pengguna yang mengisi dan memverifikasi data bantuan.",[40,265,266,269],{},[43,267,268],{},"Detail dan agregat."," Catatan bantuan ditangkap presisi, sementara tampilan agregat menjawab pertanyaan pelaporan.",[18,271,196],{"id":195},[11,273,274],{},"Bersama Realisasi Anggaran dan Disposisi, ini adalah bab magang tentang sistem administrasi pemerintahan: struktur data yang jelas, status yang eksplisit, dan output yang sesuai kebutuhan pelaporan nyata.",{"title":110,"searchDepth":111,"depth":111,"links":276},[277,278,279],{"id":158,"depth":111,"text":159},{"id":165,"depth":111,"text":166},{"id":195,"depth":111,"text":196},"Pemerintahan · Pengelolaan Bantuan","Sistem pengelolaan bantuan untuk distribusi BPBD — entitas regional, proposal bantuan, catatan bantuan, dan alur BASTO dengan pelaporan.","https:\u002F\u002Fgithub.com\u002Framadhanep\u002Fbnpb-bantuan-bpbd",{},[285,286,287],"Memodelkan struktur regional — provinsi, kabupaten\u002Fkota, dan pembentukan BPBD — sebagai entitas kelas satu.","Menangani jenis bantuan, proposal bantuan, serta catatan bantuan tingkat provinsi dan kabupaten\u002Fkota dengan tampilan detail dan agregat.","Mendukung alur BASTO plus output PDF dan pelaporan.","\u002Fid\u002Fprojects\u002Fbantuan-bpbd","5","Feb 2019","\u002Fimg\u002Fprojects\u002Fbantuan-bpbd.jpg",{"title":231,"description":281},[222,223,224],"id\u002Fprojects\u002Fbantuan-bpbd","Sistem pengelolaan bantuan berbasis Laravel yang dibangun saat magang di BNPB — entitas regional, jenis dan proposal bantuan, catatan bantuan tingkat provinsi dan kabupaten\u002Fkota, alur BASTO, dan pelaporan.","M3SJozfGrZxXCdE8W2BPQPYU01XDrd8thvjB4cv_Qgs",[298,440],{"id":299,"title":300,"body":301,"date":432,"description":433,"extension":122,"locale":125,"meta":434,"navigation":124,"path":435,"readingTime":436,"seo":437,"stem":438,"__hash__":439},"posts\u002Fid\u002Fposts\u002Freinforcement-learning-bitcoin-trading.md","Reinforcement Learning untuk Trading Bitcoin",{"type":8,"value":302,"toc":426},[303,306,326,330,341,344,354,357,361,364,370,376,379,382,386,389,392,395,398,402,405,408,417,423],[11,304,305],{},"Pada 2025, saya mendapat kesempatan untuk mengubah salah satu ketertarikan saya pada software dan financial market menjadi sebuah penelitian akademik.",[11,307,308,309,312,313,317,318,325],{},"Bersama Sumanto, Indra Chaidir, dan Adi Supriyatna, saya menerbitkan artikel ",[43,310,311],{},"“Reinforcement learning for bitcoin trading: A comparative study of PPO and DQN”"," di ",[314,315,316],"em",{},"Jurnal Mandiri IT",", Vol. 14 No. 2, halaman 159–169. Artikel ini dipublikasikan pada 22 Agustus 2025 dan tersedia melalui DOI ",[319,320,324],"a",{"href":321,"rel":322},"https:\u002F\u002Fwww.ejournal.isha.or.id\u002Findex.php\u002FMandiri\u002Farticle\u002Fview\u002F455\u002F457",[323],"nofollow","10.35335\u002Fmandiri.v14i2.455",".",[18,327,329],{"id":328},"apa-yang-kami-teliti","Apa yang kami teliti",[11,331,332,333,336,337,340],{},"Pertanyaan utama dalam penelitian ini cukup sederhana: bagaimana dua pendekatan deep reinforcement learning, yaitu ",[43,334,335],{},"Proximal Policy Optimization (PPO)"," dan ",[43,338,339],{},"Deep Q-Network (DQN)",", berperilaku ketika diterapkan untuk trading Bitcoin?",[11,342,343],{},"Bitcoin menarik untuk dijadikan lingkungan eksperimen karena harganya dapat bergerak melalui berbagai kondisi pasar. Strategi yang bekerja dengan baik ketika pasar sedang mengalami tren naik yang kuat belum tentu berperilaku sama ketika pasar bergerak sideways atau menjadi lebih tidak stabil.",[11,345,346,347,350,351,325],{},"Eksperimen menggunakan data ",[43,348,349],{},"BTC\u002FUSDT"," dengan interval satu jam, mulai dari 2019 hingga awal 2025. Model tidak hanya diberikan data harga mentah, tetapi menggunakan beberapa technical indicators sebagai bagian dari state, seperti ",[43,352,353],{},"RSI, MA20, volatility, MACD, volume trend, SMA200, dan weekly trend filter",[11,355,356],{},"Tujuan penelitian ini bukan membuat sistem yang dapat secara ajaib memprediksi harga Bitcoin berikutnya. Fokusnya adalah melihat bagaimana dua reinforcement learning agent belajar mengambil keputusan trading ketika menghadapi kondisi pasar yang berubah-ubah.",[18,358,360],{"id":359},"ppo-vs-dqn","PPO vs. DQN",[11,362,363],{},"Salah satu hal yang menarik dari penelitian ini adalah bagaimana kedua algoritma menunjukkan karakter yang berbeda.",[11,365,366,369],{},[43,367,368],{},"PPO cenderung melakukan trading dengan lebih agresif."," Pada fase bullish, karakter tersebut dapat memberikan performa yang lebih tinggi karena agent lebih aktif mengambil posisi. Namun, konsekuensinya adalah eksposur risiko yang lebih besar ketika kondisi pasar menjadi tidak stabil.",[11,371,372,375],{},[43,373,374],{},"DQN cenderung lebih selektif."," Agent ini lebih berhati-hati dalam mengambil keputusan dan menunjukkan perilaku yang lebih stabil ketika pasar bergerak sideways atau choppy.",[11,377,378],{},"Perbedaan tersebut justru lebih menarik bagi saya dibandingkan sekadar mencari algoritma mana yang “lebih bagus”. Hasil eksperimen menunjukkan bahwa karakter sebuah reinforcement learning agent sangat berkaitan dengan kondisi pasar tempat agent tersebut beroperasi.",[11,380,381],{},"Artinya, reinforcement learning untuk trading bukan sekadar memilih algoritma yang lebih kompleks. Kita juga perlu memahami lingkungan tempat algoritma tersebut akan digunakan.",[18,383,385],{"id":384},"apa-yang-saya-pelajari","Apa yang saya pelajari",[11,387,388],{},"Penelitian ini mengubah cara saya melihat hubungan antara software engineering, machine learning, dan financial systems.",[11,390,391],{},"Trading system bukan hanya prediction model yang kemudian dibungkus menjadi sebuah API. Ada banyak lapisan di dalamnya: data preparation, feature construction, environment design, reward formulation, training, evaluation, sampai bagaimana hasil eksperimen diinterpretasikan.",[11,393,394],{},"Penelitian ini juga memperkuat satu hal penting tentang backtesting. Sebuah model bisa terlihat sangat baik pada kondisi pasar tertentu, lalu berperilaku sangat berbeda ketika kondisi pasar berubah. Karena itu, satu hasil performa tidak bisa langsung dianggap sebagai bukti bahwa sebuah strategi akan terus bekerja di masa depan.",[11,396,397],{},"Bagi saya, bagian paling menarik dari penelitian ini justru bukan mencari satu pemenang antara PPO dan DQN. Keduanya menunjukkan karakter yang saling melengkapi pada kondisi pasar yang berbeda. Perspektif tersebut cukup berguna ketika memikirkan bagaimana membuat trading system yang lebih adaptif.",[18,399,401],{"id":400},"paper-nya","Paper-nya",[11,403,404],{},"Ini adalah publikasi penelitian pertama saya di area tersebut, dan topiknya berada di persimpangan beberapa hal yang memang saya sukai: programming, data, machine learning, dan financial markets.",[11,406,407],{},"Versi lengkap paper-nya:",[11,409,410],{},[43,411,412,413,416],{},"Prasetyo, R. E., Sumanto, S., Chaidir, I., & Supriyatna, A. (2025). ",[314,414,415],{},"Reinforcement learning for bitcoin trading: A comparative study of PPO and DQN",". Jurnal Mandiri IT, 14(2), 159–169.",[11,418,419],{},[319,420,422],{"href":321,"rel":421},[323],"Baca paper melalui DOI",[11,424,425],{},"Artikel ini adalah ringkasan pribadi dari penelitian tersebut, bukan pengganti versi akademik lengkapnya.",{"title":110,"searchDepth":111,"depth":111,"links":427},[428,429,430,431],{"id":328,"depth":111,"text":329},{"id":359,"depth":111,"text":360},{"id":384,"depth":111,"text":385},{"id":400,"depth":111,"text":401},"2025-08-22","Catatan pribadi tentang penelitian saya yang membandingkan PPO dan DQN untuk trading Bitcoin pada berbagai kondisi pasar.",{},"\u002Fid\u002Fposts\u002Freinforcement-learning-bitcoin-trading","4 menit",{"title":300,"description":433},"id\u002Fposts\u002Freinforcement-learning-bitcoin-trading","RuBF_gm6VEawY-YyIMM0NQ6vfaD-u-l2R4hy1zb5z0I",{"id":441,"title":442,"body":443,"date":469,"description":470,"extension":122,"locale":125,"meta":471,"navigation":124,"path":472,"readingTime":473,"seo":474,"stem":475,"__hash__":476},"posts\u002Fid\u002Fposts\u002Fcoding-journey.md","Catatan dari perjalanan koding",{"type":8,"value":444,"toc":465},[445,448,452,455,459,462],[11,446,447],{},"Bagian tulisan di situs ini adalah tempat saya menyimpan catatan tentang hal-hal yang sedang saya pelajari, bangun, atau rapikan.",[18,449,451],{"id":450},"apa-yang-ditulis","Apa yang ditulis",[11,453,454],{},"Saya bekerja di web, backend, dan mobile: Nuxt, Vue, Node, Go, Flutter, Laravel — serta sistem internal yang membutuhkan alur data yang jelas. Tidak semua tulisan harus menjadi tutorial panjang. Kadang cukup berupa catatan keputusan teknis, bug yang menarik, atau pola kecil yang ingin saya ingat.",[18,456,458],{"id":457},"kenapa-ditulis","Kenapa ditulis",[11,460,461],{},"Menulis membantu saya melihat ulang cara berpikir ketika membangun sesuatu. Kalau sebuah solusi sulit dijelaskan dengan jelas, biasanya ada bagian arsitektur atau alur yang belum cukup rapi untuk dijelaskan.",[11,463,464],{},"Catatan lain akan menyusul seiring saya bekerja dan menemukan sesuatu yang layak disimpan. Tulisan ini lebih baik ditulis dari pengalaman nyata daripada diproduksi demi mengisi halaman.",{"title":110,"searchDepth":111,"depth":111,"links":466},[467,468],{"id":450,"depth":111,"text":451},{"id":457,"depth":111,"text":458},"2023-08-17","Pengantar untuk bagian tulisan — catatan tentang software engineering, pekerjaan produk, dan hal-hal yang masih sedang saya pelajari.",{},"\u002Fid\u002Fposts\u002Fcoding-journey","2 menit",{"title":442,"description":470},"id\u002Fposts\u002Fcoding-journey","8CK38HJPhC9dyVyFV9_CIfrwul2CFZ_RR0mhoc2TmUY",1789641310306]